项目简介
本项目是 MCP (Model Context Protocol) 的一个示例实现,展示了如何构建一个 MCP 服务器来向大型语言模型 (LLM) 暴露外部功能。核心是一个简单的计算器工具,允许 LLM 执行数学表达式。项目包含服务器核心代码 ('calculator.py') 和一个用于连接到 WebSocket 端点的管道脚本 ('mcp_pipe.py')。
主要功能点
- 数学计算工具: 提供一个名为 'calculator' 的工具,接受 Python 数学表达式作为输入,并返回计算结果。支持使用 'math' 和 'random' 库。
- MCP 协议实现: 使用 'FastMCP' 框架实现了 MCP 协议的工具注册和调用功能。
- Stdio 传输: 服务器核心 ('calculator.py') 使用标准输入/输出来进行 MCP 通信。
- WebSocket 管道: 'mcp_pipe.py' 脚本可以将标准输入/输出上的 MCP 消息通过 WebSocket 转发到指定的 MCP 客户端或服务,实现远程连接。
- 自动重连: WebSocket 管道脚本内置了指数退避的自动重连机制,增强连接稳定性。
安装步骤
-
克隆或下载本项目代码。
-
确保您已安装 Python 3.7 或更高版本。
-
在项目目录下打开终端。
-
运行以下命令安装所需的依赖库:
pip install -r requirements.txt
服务器配置
本示例通过 'mcp_pipe.py' 脚本启动 MCP 服务器核心 ('calculator.py'),并通过 WebSocket 连接到 MCP 客户端或服务。MCP 客户端需要配置如何启动这个服务器进程,并通过标准输入/输出来与其通信。
配置信息通常在 MCP 客户端中设置,用于定义一个可用的 MCP 服务器连接。您需要指定启动命令、参数和通信方式。
以下是根据本项目结构生成的 MCP 客户端配置的关键信息(请勿将其视为代码,而是客户端配置界面或文件的填写指导):
- 服务器名称 (name): 为此连接起一个描述性名称,例如 "MCP Calculator via Pipe"。
- 启动命令 (command): 启动服务器进程的可执行文件路径,通常是 'python'。
- 命令参数 (args): 启动命令的参数列表。第一个参数是 'mcp_pipe.py' 脚本的路径,第二个参数是要运行的 MCP 脚本路径,即 'calculator.py'。例如:'["mcp_pipe.py", "calculator.py"]'。
- 传输方式 (transport): 客户端与 'mcp_pipe.py' 进程通信的方式,这里是 'stdio' (标准输入/输出)。
- 环境变量 (environment): 需要设置 'MCP_ENDPOINT' 环境变量,指向 MCP 客户端或服务的 WebSocket 连接地址。例如:'{"MCP_ENDPOINT": "ws://your-mcp-client-address:port/mcp"}'。这个环境变量需要在使用 'mcp_pipe.py' 的环境中设置。
配置完成后,MCP 客户端在需要时会根据这些信息启动 'python mcp_pipe.py calculator.py' 进程,并通过标准输入/输出与它交换 MCP 消息。'mcp_pipe.py' 脚本则负责将这些消息通过 WebSocket 发送到 'MCP_ENDPOINT'。
基本使用方法
- 按照上面的安装步骤安装依赖。
- 根据您的 MCP 客户端或服务的要求,设置 'MCP_ENDPOINT' 环境变量,指向客户端的 WebSocket 监听地址。
- 在 MCP 客户端中,添加一个新的 MCP 服务器连接配置,使用上面“服务器配置”部分描述的命令、参数和传输方式 ('stdio') 来启动 'mcp_pipe.py' 脚本。
- 启动 MCP 客户端。客户端将尝试连接并启动本示例服务器。
- 一旦连接成功,您的 LLM 客户端就可以通过 MCP 协议调用名为 'Calculator' 的服务器中提供的 'calculator' 工具了。例如,LLM 可能会生成一个调用 'calculator' 工具的请求,包含参数 'python_expression="math.sqrt(16) + random.randint(1, 10)"'。
- 服务器将执行表达式并返回结果给 LLM。
信息
分类
AI与计算