MCP服务器示例

一个简单的Model Context Protocol (MCP)服务器实现,用于处理JSON-RPC请求和实时通信,适用于学习和测试MCP协议。

  • by mateusdata
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mateusdata/mcp-node-server

使用说明

MCP Mateus数据服务器

TypeScript服务器实现了一个简单的 模型上下文协议(MCP) --一个真正的“Hello World”示例,帮助您理解MCP服务器的工作原理。该项目包括以下基本功能:

  • 处理JSON-RPC请求
  • 示例工具,如 add-number 和 greet
  • 支持服务器发送事件(SSE)进行实时通信
  • 简单的客户端和服务器代码,便于测试和学习

先决条件

  • Node.js(v20或更高版本)
  • npm(附带Node.js)
  • 游标IDE(推荐)

安装

  1. 克隆存储库:
git clone git@github.com:mateusdata/mcp-mateusdata-server.git
cd mcp-mateusdata-server
  1. 安装依赖项:
npm install

运行项目

开发模式:

npm run dev

对于构建和生产运行:

npm run build
npm start

在游标中添加MCP服务器

在Cursor配置文件中,添加:

{
  "mcpServers": {    
  "mateusdata-mcp-server": {
   "command": "node",      
   "args": ["path/to/mcp-mateusdata-server/build/index.js"]
  }
  }
}

项目结构

mcp-mateusdata-server/
├── build/         # Compiled JavaScript files
├── src/           # Source code
    └── server.ts  # Simple MCP server example
│   └── client.js  # Simple MCP client example
├── node_modules/  # Project dependencies
├── package.json   # Project configuration and dependencies
└── tsconfig.json  # TypeScript configuration

关于

此存储库演示了模型上下文协议(MCP)的最小实现。这 src/client.js 该文件提供了一个客户端如何与服务器交互的示例,对测试和初始学习很有用。

使用示例

您可以使用Bash、Zsh或Fish直接从终端与MCP服务器交互。例如,要列出可用工具:

调用该工具 "add-number" 有价值观 a = 3 和 b = 5:

echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"add-number","arguments":{"a":3,"b":5}}}' | node build/index.js

致电 "greet" 带有参数的工具 nome = "Mateus":

echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"greet","arguments":{"name":"Mateus"}}}' | node build/index.js

在MCP服务器上使用SSE(服务器发送事件)

您可以使用SSE与MCP服务器进行实时通信。启动服务器:

node build/index.js sse

您应该看到:

MCP Server running with SSE on http://localhost:8765/sse

连接到SSE端点

在新终端中,使用连接 curl:

curl http://localhost:8765/sse

输出示例:

event: endpoint
data: /messages?sessionId=d9bfe7df-937c-475e-8d80-904a99f9ef4d

向服务器发送消息

复制 sessionId 从之前的输出中提取并使用它发送请求:

curl -X POST http://localhost:8765/messages \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"greet","arguments":{"name":"Mateus"}}}'

服务器将通过SSE连接响应您的请求结果。

该项目根据MIT许可证获得许可。