此项目用于练习目的的模型上下文协议(MCP)服务器。实现的主要目的是学习和理解 MCP 的运行原理。
该项目的主要目标是:
环境需求:
集成 Claude 的步骤如下:
{
"mcpServers": {
"mcp_server_demo": {
"command": "ruby",
"args": [
"<path_to_repository>/demo.rb"
]
}
}
}
注意:请将 <path_to_repository> 替换为你本地项目的绝对路径。
npm install -g @modelcontextprotocol/inspector
npx @modelcontextprotocol/inspector ruby simple_server.rb
npx @modelcontextprotocol/inspector ruby demo.rb
npx @modelcontextprotocol/inspector ruby server_with_fast_mcp.rb
MCP 服务器使用标准输入/输出(STDIO)进行通信。有两种测试方法:
ruby simple_server.rb
{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"22024-11-05","capabilities":{"sampling":{},"roots":{"listChanged":true}},"clientInfo":{"name":"mcp-inspector","version":"0.0.1"}}}
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"progressToken":0},"name":"calculate_sum","arguments":{"a":1,"b":2,"env":""}}}
这种方法可以持续运行服务器并进行多次测试。使用 Ctrl+C 可以终止服务器。
使用管道(|)可以快速测试单条指令,但每次指令结束后服务器会关闭:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | ruby simple_server.rb
注意:使用管道后,每次指令执行完成后,STDIN 会收到 EOF 并自动关闭服务器。如果需要连续测试多条指令,建议使用方法一。
此项目提供了两种不同的实现方式,帮助理解 MCP 协议:
simple_server.rb 单文件基本实现
demo.rb 主入口点
mcp_server.rb:核心 MCP 协议处理
MIT 授权