MCP协议服务器

一个基于Vercel无服务器函数部署的MCP(模型上下文协议)服务器,提供多种工具集的JSON-RPC端点支持。

  • by pratyusendu
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 pratyusendu/ultimate-mcp-server

使用说明

# 终极MCP服务器

部署为Vercel无服务器功能的生产就绪MCP(模型上下文协议)服务器。

实时链接: https://ultimate-mcp-server.vercel.app/

组织支持

  • 我们可以帮助您的组织以低成本设计和构建定制的MCP服务器。
  • 我们还为MCP的采用和推出提供免费的架构和决策支持。

执行摘要

  • 目的:使用广泛的实用工具集为文本、数据、web、日期/时间、业务、开发人员和AI模板工作流公开单个MCP端点。
  • 运行时模型:无状态HTTP JSON-RPC POST /mcp.
  • 目前的范围:7个类别的90个工具。
  • 平台:Vercel无服务器功能(api/*.js).

核心能力

  • MCP JSON-RPC端点 initialize, tools/list,以及 tools/call 支持。
  • 用于发现的工具目录端点(GET /tools).
  • 用于监测的健康端点(GET /health).
  • 登录页面端点(GET /).

系统流程

  1. MCP客户端向发送JSON-RPC请求 POST /mcp.
  2. api/mcp.js 验证方法和请求体。
  3. 请求路由器按方法分派:
  • initialize 返回协议/服务器能力元数据。
  • tools/list 返回工具元数据和JSON模式。
  • tools/call 按名称解析工具并执行其处理程序。
  1. 工具结果被序列化为MCP响应内容。
  2. 错误以JSON-RPC错误对象的形式返回。

设计图(HLD)

flowchart LR
  A[MCP Client\nClaude/Cursor/Custom] -->|POST /mcp JSON-RPC| B[Vercel Route: /mcp]
  B --> C[api/mcp.js\nMCP Handler]
  C --> D[Tool Registry\nIn-memory object]
  D --> E[Tool Handler Execution]
  E --> C
  C --> A

  F[Health Probe] -->|GET /health| G[api/health.js]
  H[Catalog Consumer] -->|GET /tools| I[api/tools.js]
  J[Browser/User] -->|GET /| K[api/index.js]

SSD(系统序列图)

sequenceDiagram
  autonumber
  participant C as MCP Client
  participant M as /mcp (api/mcp.js)
  participant R as Tool Registry
  participant T as Tool Handler

  C->>M: POST tools/call {name, arguments}
  M->>R: Lookup tool by name
  alt tool exists
    R-->>M: Tool definition
    M->>T: Execute handler(arguments)
    T-->>M: Result object
    M-->>C: JSON-RPC success response
  else tool missing
    M-->>C: JSON-RPC error -32601
  end

LLD(低级设计)

组件

  • api/mcp.js:请求解析、CORS/方法保护、JSON-RPC调度、工具执行、错误映射。
  • api/tools.js:按类别分组的公共目录API。
  • api/health.js:用于正常运行时间检查的健康元数据。
  • api/index.js:人类可读的登录页面。
  • vercel.json:从公共路径到无服务器文件的路由映射。

JSON-RPC合约(POST /mcp)

  • initialize
  • tools/list
  • tools/call

错误行为

  • 405 对于非POST方法 /mcp.
  • 400 JSON-RPC解析错误导致有效载荷无效。
  • JSON-RPC -32601 用于未知的方法/工具。
  • JSON-RPC -32000 用于运行时处理程序故障。

状态和并发

  • 服务器对每个请求都是无状态的。
  • 刀具注册表是进程中的常量数据。
  • 没有持久的存储依赖关系。

DDD(领域驱动设计视图)

有界上下文

  • MCP Tool Execution Context:接收协议请求,解析工具,返回确定性结果。

领域概念

  • 实体: ToolDefinition (name, category, description, inputSchema, handler).
  • 值对象: JsonRpcRequest (id, method, params).
  • 值对象: JsonRpcResponse (result 或 error).
  • 总计: ToolRegistry (所有工具定义的一致性边界)。

域不变量

  • 工具名称必须唯一标识一个处理程序。
  • tools/list 必须公开可调用工具的模式和描述。
  • tools/call 响应必须序列化为MCP内容文本有效载荷。

API 参考

端点 方法 目的
/mcp POST MCP JSON-RPC端点
/tools GET 工具目录和类别分组
/health GET 运行状况和元数据
/ GET HTML登录页

仓库结构

ultimate-mcp-server/
  api/
    index.js
    health.js
    tools.js
    mcp.js
  lib/
  tools/
  vercel.json
  package.json
  README.md

本地开发

npm install
npm run dev

Vercel-dev的默认本地URL:

  • http://localhost:3000/mcp
  • http://localhost:3000/tools
  • http://localhost:3000/health

部署到Vercel

git clone <repo-url>
cd ultimate-mcp-server
vercel deploy --prod

MCP客户端集成

克劳德桌面

{
  "mcpServers": {
    "ultimate-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://YOUR-DEPLOYMENT.vercel.app/mcp"]
    }
  }
}

通用MCP HTTP示例

curl -X POST https://YOUR-DEPLOYMENT.vercel.app/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

工具类别

  • 文本和内容
  • 数据与数学
  • 网络与研究
  • 日期与时间
  • 商业与金融
  • 开发者工具
  • AI提示和模板

操作说明

  • CORS已启用 Access-Control-Allow-Origin: *.
  • /mcp 手柄 OPTIONS 用于飞行前请求。
  • 项目目前没有专用的单元/集成测试套件。

许可证

联系人:pratdala@gmail.com