npcpy MCP 服务端
使用说明内容(Markdown格式)
-
项目简介
- npcpy 中的 MCP 服务端实现旨在为 LLM 客户端提供标准化的上下文服务能力,核心在于暴露、注册并管理可执行的 Tools、Resources 以及 Prompts 模板,方便客户端通过 MCP 协议获取、调用工具以及渲染提示模板。
-
主要功能点
- 资源与工具托管:可注册服务器上的工具函数,以及资源数据,供 MCP 客户端查询与调用。
- 工具注册与执行:支持通过 MCP 服务器注册工具,客户端可发现并调用这些工具以扩展 LLM 的能力。
- Prompts 定义与渲染:支持基于 Prompts 的模板渲染,帮助构建一致的对话上下文和交互模式。
- JSON-RPC 风格通信:服务器以标准化的 JSON-RPC/REST 风格接口与 MCP 客户端交互,返回工具描述、调用结果等。
- 会话与能力声明:服务器端承担会话上下文管理与能力声明,便于客户端了解可用能力。
- 多传输协议支持:理论上可通过 StdIO、SSE、WebSocket 等不同通道传输数据,以适配不同客户端场景。
- 会话管理与服务器控制:提供对 MCP 服务器进程的启动、停止、查询等操作,便于集中治理。
-
安装步骤
- 在 Python 环境中获取代码并安装依赖(npcpy 及相关依赖库,包含 mcp、LiteLLM、Flask 等)。
- 启动 MCP 服务端所需的脚本与配置,确保服务器具备对 MCP 客户端的服务能力。
- 如需并发运行多个 MCP 服务器,可结合提供的 MCPServerManager 管理器进行进程化控制。
-
服务器配置(请按照 MCP 客户端需求提供 JSON 配置,示例仅作说明,不含代码块)
- server_name: 自定义 MCP 服务器名称,用于标识与引用
- command: 启动 MCP 服务器所使用的命令
- args: 启动命令的参数数组
- transport: 首选传输协议(如 stdio、sse、websocket,按实际部署选择)
- description: 该 MCP 服务器的描述性信息,便于客户端理解能力范围
- tools: 服务器对外暴露的工具集合(如工具名称、描述、输入参数等,客户端可据此进行调用)
- resources: 资源集合(数据源、数据模型等,客户端可按需读取)
- prompts: Prompts 模板集合及其渲染配置信息
具体示例(JSON 格式描述,不包含可执行代码): { "server_name": "MyToolsServer", "command": "python", "args": ["./my_mcp_server.py"], "transport": "stdio", "description": "Fast MCP server 提供数据查询与工具调用能力", "tools": [ {"name": "search_database", "description": "在数据库中搜索记录", "inputs": [{"name": "query", "type": "string"}]}, {"name": "send_notification", "description": "向指定频道发送通知", "inputs": [{"name": "message", "type": "string"}, {"name": "channel", "type": "string", "default": "general"}]} ], "resources": [ {"name": "customers", "type": "dataset", "description": "示例客户数据集"} ], "prompts": [ {"name": "default_prompt", "template": "...", "description": "默认对话上下文模板"} ] }
-
基本使用方法
- 在服务器端准备好 MCP 服务脚本与配置,确保服务器可从指定路径启动。
- 客户端需要将上述配置以 JSON 形式提供,包含 server_name、command、args 等字段。
- 启动 MCP 服务端后,客户端即可通过 MCP 客户端接口向该服务器注册工具、查询资源并执行工具调用。
- 客户端通过工具调用完成后,服务器返回执行结果、状态或后续上下文,客户端据此继续对话。
-
服务器的基本操作要点
- 通过服务器提供的 API,客户端可查询可用工具、发起工具调用、获取 Tool 的定义以及执行结果。
- 服务器需要对工具调用进行安全审计、权限控制与输入校验,确保对外暴露的能力在授权范围内。
- 支持多种传输协议以兼容不同的客户端实现,例如本地进程间通信(stdio)或网络传输(WebSocket/SSE)。
-
使用注意
- MCP 客户端需要的核心信息包含服务器的启动命令及参数(command、args),以建立连接并获取工具 schemas、tool_map 等信息。
- 配置中的 server_name、command、args 应与实际存在的 MCP 服务器脚本及路径保持一致,避免无法连接。