Skip to content

Commit

Permalink
feat(mcp): add prefix filed to bridge server configuraiton (#148)
Browse files Browse the repository at this point in the history
  • Loading branch information
sigoden authored Dec 12, 2024
1 parent 33ef4f9 commit 8e8b2f7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 6 deletions.
17 changes: 14 additions & 3 deletions mcp/bridge/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Let external MCP tools be used by LLM-Functions.

## Get Started

1. Create a `mpc.json` at `<llm-functions-dir>`.
### 1. Create a `mpc.json` at `<llm-functions-dir>`.

```json
{
Expand All @@ -17,6 +17,15 @@ Let external MCP tools be used by LLM-Functions.
"/tmp/foo.db"
]
},
"git": {
"command": "uvx",
"args": [
"mcp-server-git",
"--repository",
"path/to/git/repo"
],
"prefix": false
},
"github": {
"command": "npx",
"args": [
Expand All @@ -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.
> 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:
### 2. Run the bridge server, build mcp tool binaries, update functions.json, all with:

```
argc mcp start
Expand Down
8 changes: 5 additions & 3 deletions mcp/bridge/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,9 @@ try {
async function startMcpServer(id, serverConfig) {
console.log(`Starting ${id} server...`);
const capabilities = { tools: {} };
const { prefix = true, ...rest } = serverConfig;
const transport = new StdioClientTransport({
...serverConfig,
...rest,
});
const client = new Client(
{ name: id, version: "1.0.0" },
Expand All @@ -42,7 +43,7 @@ async function startMcpServer(id, serverConfig) {
({ name, description, inputSchema }) =>
({
spec: {
name: `${normalizeToolName(`${id}_${name}`)}`,
name: `${formatToolName(id, name, prefix)}`,
description,
parameters: inputSchema,
},
Expand Down Expand Up @@ -181,7 +182,8 @@ function arrayify(a) {
return r
}

function normalizeToolName(name) {
function formatToolName(serverName, toolName, prefix) {
const name = prefix ? `${serverName}_${toolName}` : toolName;
return name.toLowerCase().replace(/-/g, "_");
}

Expand Down

0 comments on commit 8e8b2f7

Please sign in to comment.