Remote-MCP: Remote Model Context Protocol

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 支持实现前的空白

资源