网络MCP服务器
用于网络设备的最小MCP(模型通信协议)服务器。它公开了一个HTTPJSON API,用于列出带有过滤和分页的设备。
快速启动(uv项目)
- 安装uv(如果尚未安装):
pip install uv- 安装依赖项并运行服务器:
uv pip install -r requirements.txt
uvicorn src.main:app --reload --port 5000或者将uv与pyproject.toml一起使用:
uv venv
uv pip install -e .
uvicorn src.main:app --reload --port 5000- 请求示例:
- 列出设备:GEThttp://127.0.0.1:8000/devices
- 按状态筛选:GET/设备?状态=在线
- 按供应商筛选:GET/设备?供应商=思科
- 搜索:GET/设备?q=关系
API文件可在http://127.0.0.1:8000/docs
MCP端点
此服务在POST/MCP上公开了一个最小的MCP兼容端点。端点接受一个小的JSON信封:
请求示例:
{ "id": "req1", "method": "ListDevices", "params": { "status": "online", "limit": 10 } }响应示例:
{ "id": "req1", "result": { "total": 2, "items": [ /* array of devices */ ] } }未知方法返回错误信封,如下所示:
{ "id": "req1", "error": { "code": -32601, "message": "Method not found" } }发现
客户端可以在GET/MCP/methods中发现支持的MCP方法,该方法返回一个描述每个方法及其参数的JSON文档。例子:
{ "methods": [ { "name": "ListDevices", "description": "List devices with filters and pagination", "params": { ... } } ] }对于JSON RPC样式的发现,使用GET/mcp/tools返回一个包含 jsonrpc: "2.0" 顶级字段和相同 methods 列表。
例子:
{ "jsonrpc": "2.0", "methods": [ { "name": "ListDevices", "params": { ... } } ] }备注
- 这些示例假设服务器在端口8000上运行。在烟雾测试中,我使用端口8001来避免冲突:
uvicorn src.main:app --port 8001.
