使用说明
OKMCP-简单MCP示例
这是一个简单的服务器-客户端示例项目,遵循模型上下文协议(MCP)标准。
结构
- 服务器:Node.js MCP服务器(支持HTTP+WebSocket)
- 客户端:Python MCP客户端(支持HTTP+WebSocket)
特点
- 支持MCP标准协议(JSON-RPC2.0)
- 支持HTTP和WebSocket通信
- 自动连接管理和重新连接
- 浏览工具列表功能
- 会话管理
- 记录详细信息
开始
运行服务器
cd server
npm install
npm start
服务器将在以下地址运行:
- HTTP:http://localhost:3000
- Websocket:WS://localhost:3000/WS
客户端运行
cd client
pip install -e .
python main.py
API端点
HTTP端点
GET /health-检查服务器状态GET /tools-可用工具列表POST /mcp-现有MCP端点(向后兼容性)POST /mcp/v2-新的MCP标准端点
双向通信
ws://localhost:3000/ws-连接WebSocket
使用示例
HTTP客户端
import asyncio
from main import MCPClient
async def main():
client = MCPClient("http://localhost:3000", use_websocket=False)
if await client.connect():
# 도구 목록 조회
tools = await client.list_tools()
print(f"사용 가능한 도구: {len(tools)}개")
# 계산기 사용
result = await client.call_tool("calculator", "add", [5, 3])
print(f"5 + 3 = {result}")
# 날씨 정보 조회
weather = await client.call_tool("weather", "getTemperature", ["서울"])
print(weather)
await client.disconnect()
asyncio.run(main())
WebSocket客户端
import asyncio
from main import MCPClient
async def main():
client = MCPClient("http://localhost:3000", use_websocket=True)
if await client.connect():
# MCP 표준 프로토콜로 통신
tools = await client.list_tools()
result = await client.call_tool("calculator", "multiply", [4, 7])
print(f"4 × 7 = {result}")
await client.disconnect()
asyncio.run(main())
MCP消息格式
初始化
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"clientInfo": {
"name": "okmcp-client",
"version": "1.0.0"
}
}
}
调用工具
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "calculator",
"arguments": {
"method": "add",
"params": [5, 3]
}
}
}
可用工具
计算器
add(a, b)-加法subtract(a, b)- 뺄셈multiply(a, b)-乘法divide(a, b)-除法
天气
getTemperature(city)-查询城市温度
开发
服务器开发
cd server
npm install
npm run dev
客户端开发
cd client
pip install -e .
python main.py
许可证
ISC
