diff --git a/packages/opencode/src/mcp/index.ts b/packages/opencode/src/mcp/index.ts index 7970b9ba2939..f2aa9699bd23 100644 --- a/packages/opencode/src/mcp/index.ts +++ b/packages/opencode/src/mcp/index.ts @@ -647,7 +647,7 @@ export const layer = Layer.effect( } const timeout = requestTimeout(s, clientName, mcpConfig, defaultTimeout) for (const mcpTool of listed) { - const key = "mcp__" + McpCatalog.sanitize(clientName) + "__" + McpCatalog.sanitize(mcpTool.name) + const key = McpCatalog.sanitize(clientName) + "_" + McpCatalog.sanitize(mcpTool.name) result[key] = McpCatalog.convertTool(mcpTool, client, timeout) } } diff --git a/packages/opencode/test/mcp/lifecycle.test.ts b/packages/opencode/test/mcp/lifecycle.test.ts index 9d19bf79af10..b9dfb9330e91 100644 --- a/packages/opencode/test/mcp/lifecycle.test.ts +++ b/packages/opencode/test/mcp/lifecycle.test.ts @@ -382,7 +382,7 @@ it.instance( command: ["echo", "test"], }) - expect(Object.keys(yield* mcp.tools())).toEqual(["mcp__paged-server__tool-one", "mcp__paged-server__tool-two"]) + expect(Object.keys(yield* mcp.tools())).toEqual(["paged-server_tool-one", "paged-server_tool-two"]) expect(Object.keys(yield* mcp.prompts())).toEqual(["paged-server:prompt-one", "paged-server:prompt-two"]) expect(Object.keys(yield* mcp.resources())).toEqual(["paged-server:test://one", "paged-server:test://two"]) expect(Object.keys(yield* mcp.resourceTemplates())).toEqual([ @@ -944,7 +944,7 @@ it.instance( expect(statusName(result.status, "tools-only-server")).toBe("connected") expect(serverState.listToolsCalls).toBe(1) - expect(Object.keys(yield* mcp.tools())).toEqual(["mcp__tools-only-server__test_tool"]) + expect(Object.keys(yield* mcp.tools())).toEqual(["tools-only-server_test_tool"]) expect(yield* mcp.prompts()).toEqual({}) expect(yield* mcp.resources()).toEqual({}) expect(serverState.listPromptsCalls).toBe(0) @@ -1137,7 +1137,7 @@ it.instance( const keys = Object.keys(tools) // Server name dots should be replaced with underscores - expect(keys.some((k) => k.startsWith("mcp__my_special-server__"))).toBe(true) + expect(keys.some((k) => k.startsWith("my_special-server_"))).toBe(true) // Tool name dots should be replaced with underscores expect(keys.some((k) => k.endsWith("tool_b"))).toBe(true) expect(keys.length).toBe(2)