使用说明
MCP所有演示
一个最小的实时待办事项服务演示:
- REST CRUD用于任务。
- Redis发布/订阅用于后端事件。
- 一个类似MCP的JSON-RPC WebSocket服务器,向连接的客户端推送实时通知。
- 一个演示callTool方法,其作用类似于模型集成工具(建议受让人)。
- 订阅和接收通知的示例客户端。
这个仓库故意设计得很小,这样你就可以运行和探索:稍后添加UI、RAG或真正的代理。
建筑(简)
- 快速REST:POST/任务、PUT/任务/:id、GET/任务
- Redis发布/订阅:后端发布任务事件(创建/更新)
- WebSocket JSON-RPC:客户端连接到ws:///mcp/ws,并使用JSON-RPC订阅/取消订阅和调用工具。
- 客户端演示:连接、订阅任务事件、调用suggestAssignee,并触发REST POST以显示通知。
文件
- src/server.ts——主服务器:REST+MCP WebSocket+Redis集成
- src/client-demo.ts——订阅和触发事件的演示客户端
- src/types.ts——TypeScript类型
- package.json、tsconfig.json
快速入门(本地)
要求:Node 18+,Redis(本地或云端),可选Vercel CLI和GitHub CLI。
- (可选) 将项目链接到Vercel并同步环境变量:
vercel link vercel env pull .env.development.local - 复制环境模板(或编辑提取的env文件):更新
cp .env.example .envREDIS_URL,PORT,以及JWT_SECRET根据需要。模板指向提供的Redis Cloud实例。 - 确保Redis正在运行/可访问。对于本地开发,您可以使用Docker:
docker run -p 6379:6379 redis - 安装依赖项并启动服务器:
npm install npm run dev - 在第二个终端中,运行演示客户端以观察WebSocket事件:
npm run client
部署
Vercel(REST+事件发布者)
- 部署REST API(
/tasks,/token等等)发送给Vercel。 - 在Vercel中配置环境变量(
REDIS_URL,JWT_SECRET,ALLOWED_ORIGIN等等)。 - 使用
vercel env add或仪表板;避免泄露秘密。
渲染(持久WebSocket服务器)
- 添加提供的
render.yaml转到repo根目录并替换repo占位符与您的GitHuborg/repo. - 提交并推送到GitHub:
git add render.yaml git commit -m "chore: add render.yaml for ws service" git push origin main - 在渲染中:
- 使用仓库创建新的Web服务+
main支。渲染将自动检测render.yaml. - 在“渲染”仪表板中设置环境变量(在文件中留空):
REDIS_URL--上传URL(例如。rediss://...).JWT_SECRET--必须与Vercel使用的值匹配,以便颁发的令牌生效。
- 保留构建命令(
npm ci && npm run build)并启动命令(npm run start). - 部署服务;渲染将显示一个URL,如下所示
https://mcp-todo-ws.onrender.com使用WebSocket端点wss://<service>.onrender.com/mcp/ws.
- 使用仓库创建新的Web服务+
- 保持
REDIS_URL和JWT_SECRET如果您共享它们,则进行旋转;永远不要将秘密值提交到repo。
端点和工具
- GET/健康、GET/任务、POST/任务、PUT/任务/:id、GET/令牌
- WebSocket端点:ws(s):///mcp/ws
- JSON-RPC方法:callTool、订阅、取消订阅
- 使用
curl,wscat,或npm run client以行使API。
测试渲染WebSocket
- 从Vercel REST部署中获取JWT:
curl https://<vercel-app>.vercel.app/token - 连接客户端(例如。
wscat)要渲染:wscat -c "wss://<render-service>.onrender.com/mcp/ws?token=<jwt>" - 订阅任务频道:
{"jsonrpc":"2.0","id":1,"method":"subscribe","params":{"channel":"tasks"}} - 通过Vercel REST端点创建任务以触发通知:
curl -s -X POST https://<vercel-app>.vercel.app/tasks \ -H "Content-Type: application/json" \ -d '{"title":"Cross-host test from Vercel->Upstash->Render"}' - 您应该收到JSON-RPC
notification在WebSocket客户端中使用任务负载。如果没有,请检查渲染日志并验证共享密钥/Redis URL。