mcp工具
______________________________________________________________________
mcp-tool 是一个用于在Python中构建模型上下文协议(MCP)服务器的小型工具包。
它提供了一个基于装饰器的工具注册表、JSON-RPC 2.0处理程序和WebSocket/stdio传输,因此您可以将工具暴露给MCP兼容的客户端。
特性
- JSON-RPC 2.0处理
initialize,tools/list,以及tools/call - 异步
@tool注册MCP工具的装饰器 - 内存注册表和
/doc列出可用工具的端点 - 使用FastAPI构建的WebSocket传输(
/ws,/healthz,/doc) - 通过stdin/stdout进行本地集成的stdio传输
- 基于打字机的CLI,用于在中运行MCP服务器
service或stdio模式
安装
对于当地发展:
python -m venv .venv
source .venv/bin/activate
pip install -e .或
pip install mcp-tool-tingz定义工具
使用 @tool 从包中导出的装饰器:
from mcp_tool import tool
@tool(description="Simple ping tool to verify MCP connectivity")
async def ping(message: str = "pong") -> str:
return f"MCP: {message}"您可以在中看到更完整的示例 mcp-tool/demo_app.py.
运行服务器
CLI公开了一个 run 命令有两种模式: service (WebSocket)和 stdio.
WebSocket服务模式
通过WebSocket启动MCP服务器:
mcp-tool run --mode service --host 0.0.0.0 --port 8765 --app mcp_tool.demo_app--app指向注册工具的Python模块或文件(通过@tool).- 服务器公开:
- GET /healthz --健康检查 - GET /doc --工具文档(来自注册表和服务器元数据) - WS /ws --基于WebSocket的JSON-RPC 2.0
您可以将兼容MCP的客户端指向 ws://localhost:8765/ws.
stdio模式
要在stdio上运行相同的工具(对编辑器或本地CLI集成很有用):
mcp-tool run --mode stdio --app mcp_tool.demo_app该过程读取和写入JSON-RPC消息,这些消息由 Content-Length stdin/stdout上的标头。
JSON-RPC协议
mcp-tool 遵循JSON-RPC 2.0并实现:
initialize--返回服务器元数据和功能tools/list(以及tools.list)--列出所有已注册的工具及其模式tools/call(以及tools.call)--使用参数调用已注册的工具
典型的成功响应如下:
{"jsonrpc": "2.0", "id": "uuid", "result": {...}}错误响应如下:
{"jsonrpc": "2.0", "id": "uuid", "error": {"code": -32603, "message": "Internal error"}}许可证
该项目根据MIT许可证获得许可。看 LICENSE 了解详情。
