feat(mcp): add prefix filed to bridge server configuraiton (#148)
This commit is contained in:
+14
-3
@@ -4,7 +4,7 @@ Let external MCP tools be used by LLM-Functions.
|
|||||||
|
|
||||||
## Get Started
|
## Get Started
|
||||||
|
|
||||||
1. Create a `mpc.json` at `<llm-functions-dir>`.
|
### 1. Create a `mpc.json` at `<llm-functions-dir>`.
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -17,6 +17,15 @@ Let external MCP tools be used by LLM-Functions.
|
|||||||
"/tmp/foo.db"
|
"/tmp/foo.db"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"git": {
|
||||||
|
"command": "uvx",
|
||||||
|
"args": [
|
||||||
|
"mcp-server-git",
|
||||||
|
"--repository",
|
||||||
|
"path/to/git/repo"
|
||||||
|
],
|
||||||
|
"prefix": false
|
||||||
|
},
|
||||||
"github": {
|
"github": {
|
||||||
"command": "npx",
|
"command": "npx",
|
||||||
"args": [
|
"args": [
|
||||||
@@ -31,9 +40,11 @@ Let external MCP tools be used by LLM-Functions.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
> MCP-Bridge will launch the server and register all the tools listed by the server. The tool identifier will be `server_toolname` to avoid clashes.
|
> MCP-Bridge will launch the server and register all the tools listed by the server.
|
||||||
|
|
||||||
2. Run the bridge server, build mcp tool binaries, update functions.json, all with:
|
> To avoid name clashes, The server automatically prefix tool names with `<server>_`. You can disable this behavior by add `prefix: false` to server configuration.
|
||||||
|
|
||||||
|
### 2. Run the bridge server, build mcp tool binaries, update functions.json, all with:
|
||||||
|
|
||||||
```
|
```
|
||||||
argc mcp start
|
argc mcp start
|
||||||
|
|||||||
+5
-3
@@ -29,8 +29,9 @@ try {
|
|||||||
async function startMcpServer(id, serverConfig) {
|
async function startMcpServer(id, serverConfig) {
|
||||||
console.log(`Starting ${id} server...`);
|
console.log(`Starting ${id} server...`);
|
||||||
const capabilities = { tools: {} };
|
const capabilities = { tools: {} };
|
||||||
|
const { prefix = true, ...rest } = serverConfig;
|
||||||
const transport = new StdioClientTransport({
|
const transport = new StdioClientTransport({
|
||||||
...serverConfig,
|
...rest,
|
||||||
});
|
});
|
||||||
const client = new Client(
|
const client = new Client(
|
||||||
{ name: id, version: "1.0.0" },
|
{ name: id, version: "1.0.0" },
|
||||||
@@ -42,7 +43,7 @@ async function startMcpServer(id, serverConfig) {
|
|||||||
({ name, description, inputSchema }) =>
|
({ name, description, inputSchema }) =>
|
||||||
({
|
({
|
||||||
spec: {
|
spec: {
|
||||||
name: `${normalizeToolName(`${id}_${name}`)}`,
|
name: `${formatToolName(id, name, prefix)}`,
|
||||||
description,
|
description,
|
||||||
parameters: inputSchema,
|
parameters: inputSchema,
|
||||||
},
|
},
|
||||||
@@ -181,7 +182,8 @@ function arrayify(a) {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeToolName(name) {
|
function formatToolName(serverName, toolName, prefix) {
|
||||||
|
const name = prefix ? `${serverName}_${toolName}` : toolName;
|
||||||
return name.toLowerCase().replace(/-/g, "_");
|
return name.toLowerCase().replace(/-/g, "_");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user