Remote-MCP: Remote Model Context Protocol
一种类型安全的远程MCP通信解决方案,可轻松集成以实现模型上下文的集中管理。
Remote-MCP 快速开始指南
简介
Remote-MCP 是一种类型安全、双向且简单的解决方案,用于远程模型上下文协议通信,允许集中管理和远程访问模型上下文。
安装
客户端
npm install @remote-mcp/client @trpc/client@next zod
服务器
npm install @remote-mcp/server
基本使用
1. 客户端配置
方法 A:使用公开发布的包
将以下配置添加到您的 MCP 客户端设置:
{
"mcpServers": {
"remote-mcp": {
"command": "npx",
"args": ["-y", "@remote-mcp/client"],
"env": {
"REMOTE_MCP_URL": "http://localhost:9512",
"HTTP_HEADER_Authorization": "Bearer <token>"
}
}
}
}
方法 B:编写自定义客户端
import { RemoteMCPClient } from "@remote-mcp/client";
const client = new RemoteMCPClient({
remoteUrl: "http://localhost:9512",
onError: (method, error) => console.error(`在${method}中发生错误:`, error)
});
void client.start();
2. 服务器配置
创建一个基本的远程 MCP 服务器:
import { MCPRouter, LogLevel } from "@remote-mcp/server";
import { createHTTPServer } from '@trpc/server/adapters/standalone';
import { z } from "zod";
// 创建路由器实例
const mcpRouter = new MCPRouter({
logLevel: LogLevel.DEBUG,
name: "example-server",
version: "1.0.0",
capabilities: {
logging: {},
},
});
// 添加示例工具
mcpRouter.addTool(
"calculator",
{
description: "执行基本计算。加、减、乘、除。",
schema: z.object({
operation: z.enum(["add", "subtract", "multiply", "divide"]),
a: z.string(),
b: z.string(),
}),
},
async (args) => {
const a = Number(args.a);
const b = Number(args.b);
let result;
switch (args.operation) {
case "add": result = a + b; break;
case "subtract": result = a - b; break;
case "multiply": result = a * b; break;
case "divide":
if (b === 0) throw new Error("除数为零");
result = a / b;
break;
}
return {
content: [{ type: "text", text: `${result}` }],
};
},
);
const appRouter = mcpRouter.createTRPCRouter();
void createHTTPServer({
router: appRouter,
createContext: () => ({}),
}).listen(9512);
高级用例
查看示例目录获取更多实现方式:
- Cloudflare Workers 示例
- 独立 Node.js 服务器示例
注意事项
- 此项目处于积极开发中,被视为实验性项目
- 预计会有重大变更和潜在问题
- 设计用于填补官方远程 MCP 支持实现前的空白