JSON-RPC 2.0服务

一个基于Koa框架的JSON-RPC 2.0服务器,提供模型上下文协议(MCP)功能,适用于开发和学习场景。

  • by jsamos
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jsamos/koa-mcp-demo

使用说明

演示MCP服务器(Koa+JSON-RPC 2.0)

最低限度 Koa 服务器说 模型上下文协议 (MCP)通过纯 JSON-RPC 2.0.
它公开了两种方法:

  • server.manifest –能力握手
  • context.provide -返回演示“上下文块”基于 topic 帕拉姆

将其用作学习支架或种子,以获得更丰富的MCP工具。


需求

工具 版本(已测试) 注释
Node.js ≥14 LTS 通过ES模块支持 "type": "module"
npm ≥8 附带Node 16+
套餐 koa, koa-bodyparser, json-rpc-2.0

安装

git clone git@github.com:jsamos/koa-mcp-demo.git
cd koa-mcp-demo
npm install

运行服务器

npm start     # or: node server.js

服务器正在监听 http://localhost:4000 (用覆盖 PORT env)。


JSON-RPC端点

1. server.manifest

宣传服务器功能的握手。

curl -X POST http://localhost:4000/   -H "Content-Type: application/json"   -d '{"jsonrpc":"2.0","id":1,"method":"server.manifest"}'

响应

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "name": "example-mcp-server-koa",
    "version": "0.0.1",
    "methods": ["context.provide"]
  }
}

2. context.provide

返回单个演示块。

curl -X POST http://localhost:4000/   -H "Content-Type: application/json"   -d '{"jsonrpc":"2.0","id":2,"method":"context.provide","params":{"topic":"nextjs-routing"}}'

响应

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "chunks": [
      {
        "text": "You asked for context on: nextjs-routing",
        "source": "demo"
      }
    ],
    "done": true
  }
}

项目结构

demo-mcp-koa/
├─ package.json
├─ server.js          # main Koa + JSON-RPC logic
└─ README.md

因为回购 package.json 套 "type": "module",每 .js 文件被解析为 ES模块.
如果你需要CommonJS兼容性,替换所有 import … from 随着 require() 并删除 "type" 现场。


扩展服务器

  1. 添加新方法

    rpc.addMethod("context.search", async ({ query }) => { /* ... */ });
    
  2. 流式传输大量输出 通过返回部分块 done: false,然后是最后一块 done: true.

  3. 双向工作流程:实现以下方法 elicitation/create 一旦您的客户支持MCP的交互式扩展。


参考文献