使用说明
项目简介
本项目提供了一个简单的计算器MCP服务器的示例实现,主要用于演示和测试 MCP 客户端与服务器的交互。该服务器实现了基本的数学运算工具(加、减、乘、除),并遵循 Model Context Protocol (MCP) 协议与客户端进行通信。
主要功能点
- 工具注册和管理: 服务器注册了四个数学运算工具:加法 (add)、减法 (sub)、乘法 (mul) 和除法 (div)。
- 工具调用: 支持客户端通过 MCP 协议调用已注册的工具,执行相应的数学运算并返回结果。
- 标准 MCP 协议: 使用 JSON-RPC over Stdio 实现 MCP 协议,可以与任何兼容 MCP 协议的客户端进行通信。
- 测试和示例: 作为 'mcp-openai' 客户端库的测试服务器,帮助开发者理解和验证 MCP 客户端的功能。
安装步骤
该服务器是一个 Python 脚本,无需传统意义上的 "安装"。您需要确保已安装 Python 3.11 或更高版本,并安装了 'mcp' 库。
建议使用 'uv' 进行依赖管理:
- 确保您已安装 uv。
- 在项目根目录下(如果尚未创建),创建一个虚拟环境(可选):'uv venv'
- 安装 'mcp' 依赖:'uv pip install mcp'
或者,您可以使用 'pip':
pip install mcp
服务器配置
要让 MCP 客户端连接到此服务器,您需要配置客户端的 MCP 服务器连接信息。以下是一个使用 'mcp-openai' 客户端库连接到此计算器服务器的配置示例(基于 'tests/test_mcp_openai.py' 中的配置)。
MCP 服务器配置 (JSON 格式,用于 MCP 客户端配置):
{ "calculator": { // 服务器名称,客户端用于识别和连接 "command": "uv", // 启动服务器的命令,这里使用 uv 运行 Python 脚本 "args": ["run", "path/to/tests/server.py"] // 命令参数,指定运行 server.py 脚本 // "env": {} // (可选) 环境变量 // "description": "Simple calculator server" // (可选) 服务器描述 // "enabled": true // (可选) 是否启用,默认为 true } }
参数注释:
- 'calculator': 服务器的名称,您可以自定义,客户端配置中通过此名称引用服务器。
- 'command': 启动服务器进程的命令。 在本例中,假设您使用 'uv' 运行脚本,所以命令是 'uv'。 如果您直接使用 'python' 运行脚本,则命令应为 'python'。
- 'args': 传递给 'command' 的参数列表。 'run' 是 'uv' 的子命令,用于运行 Python 脚本。 '"path/to/tests/server.py"' 是服务器脚本的路径。 请将 '"path/to/tests/server.py"' 替换为 'tests/server.py' 文件在您本地文件系统中的实际路径。 例如,如果您的项目根目录是 '/home/user/mcp-openai/',则路径可能类似于 '"/home/user/mcp-openai/tests/server.py"'。
注意: MCP 客户端需要根据您的实际环境配置 'command' 和 'args',以确保能够正确启动和连接到 MCP 服务器。
基本使用方法
-
启动服务器: 在终端中,导航到包含 'tests/server.py' 文件的目录,并执行以下命令来启动服务器(假设您使用 'uv',并已正确配置路径):
uv run tests/server.py或者,如果您直接使用 'python':
python tests/server.py服务器将在后台运行,并通过标准输入/输出 (stdio) 与客户端通信。
-
配置并运行 MCP 客户端: 使用兼容 MCP 协议的客户端(例如 'mcp-openai' 库),并按照客户端库的文档配置 MCP 服务器连接信息,指向您启动的计算器服务器 ('tests/server.py')。
-
与 LLM 交互: 通过客户端与 LLM 进行交互。当 LLM 需要使用计算器功能时,MCP 客户端将自动调用计算器服务器提供的工具,并将结果返回给 LLM。
示例交互流程 (使用 'mcp-openai' 客户端库):
from mcp_openai import MCPClient from mcp_openai import config import os # 替换为 server.py 文件的实际路径 server_path = "path/to/tests/server.py" mcp_client_config = config.MCPClientConfig( mcpServers={ "calculator": config.MCPServerConfig( command="uv", # 或者 "python" args=["run", server_path], # 或者 [server_path] 如果 command 是 "python" ) } ) # ... (LLM 客户端和请求配置,参考 mcp-openai 客户端库文档) ... client = MCPClient( mcp_client_config, # ... (LLM 客户端和请求配置) ... ) async def main(): await client.connect_to_server("calculator") # 连接到名为 "calculator" 的服务器 messages = [{"role": "user", "content": "What is 123 + 456?"}] messages_out = await client.process_messages(messages) print(messages_out[-1]["content"]) # 打印 LLM 的最终回复 if __name__ == "__main__": import asyncio asyncio.run(main())
请根据 'mcp-openai' 客户端库的文档完成 LLM 客户端和请求配置,并将 'server_path' 替换为 'tests/server.py' 的实际路径。
信息
分类
AI与计算