使用说明
项目简介
本项目是一个示例性质的MCP服务器,它提供了一套天气查询工具,例如获取天气预警和天气预报。该服务器使用Model Context Protocol (MCP) 与客户端通信,允许LLM客户端通过标准化的方式调用这些工具来获取实时的天气信息。
主要功能点
- 提供天气查询工具: 实现了 'get-alerts' (获取天气预警) 和 'get-forecast' (获取天气预报) 两个工具,允许客户端查询特定地区的天气信息。
- MCP服务器实现: 基于 'mcp-server-python' 库构建,遵循 MCP 协议,能够处理工具列表和工具调用等 MCP 标准请求。
- 标准 JSON-RPC 通信: 使用标准输入输出 (stdio) 作为传输协议,通过 JSON-RPC 协议与 MCP 客户端进行通信。
- 易于理解和运行: 代码结构清晰,提供了简单的客户端示例 (client.py, client2.py) 和详细的运行步骤,方便用户理解和上手。
安装步骤
-
克隆仓库
git clone https://github.com/p2c2e/mcp_proxy_pydantic_agent cd mcp_proxy_pydantic_agent -
安装依赖 推荐使用 'uv' 包管理器 (如果未安装,请先安装 uv: https://astral.sh/uv)。在项目根目录下运行:
uv sync或者,如果您使用 'pip',可以安装 'pyproject.toml' 中指定的依赖。
-
进入客户端目录
cd mc-client
服务器配置
MCP 客户端需要配置 'config.json' 文件来指定如何启动和连接 MCP 服务器。请在 'mc-client' 目录下创建或修改 'config.json' 文件,内容如下:
{ "mcpServers": { "weather-server": { "command": "uv", "args": ["run", "weather"] } } }
配置参数说明:
- 'server name': 'weather-server' (服务器的名称,客户端用此名称来标识和调用服务器)
- 'command': 'uv' (启动服务器的命令,这里假设您使用 'uv' 运行,如果直接使用 'python',则需要修改为 'python')
- 'args': '["run", "weather"]' (传递给 'command' 的参数。 'run weather' 在本项目中被配置为运行 'weather-server-python/src/weather/init.py' 中定义的 'main' 函数来启动天气服务器。如果您直接使用 'python' 命令,并且 'weather-server-python/src' 目录在您的 Python 路径中,您可能需要将 'args' 修改为 '["-m", "weather.server"]' )
注意: 'config.json' 文件配置了如何启动 'weather-server'。 确保您的环境能够正确执行 'uv run weather' 命令来启动天气服务器。 这通常需要在 'pyproject.toml' 文件中正确配置了 'weather' 命令的入口点,或者您的 Python 环境能够找到 'weather' 包。
基本使用方法
-
启动 MCP 客户端 在 'mc-client' 目录下,运行客户端脚本 'client.py' 或 'client2.py' ( 'client2.py' 仅使用了 PydanticAI,不直接依赖 Anthropic 库)。例如使用 'uv' 运行 'client.py':
uv run client.py或者使用 'python':
python client.py -
与客户端交互 客户端启动后,您可以在命令行中输入自然语言问题,例如:
- 'What is the time in NY when it is 7:30pm in Bangalore?' (这个例子可能无法直接工作,因为天气服务器没有时间工具,但仓库的 README 中有这个例子,可能是为了演示多工具或上下文理解,实际天气工具的例子是下面这个)
- 'What is the Weather currently in Chicago?' (查询芝加哥的当前天气)
客户端会将您的问题发送给配置的 MCP 服务器,并调用相应的工具获取结果,然后将结果返回给您。
-
退出客户端 在客户端运行过程中,输入 'quit', 'exit', 'bye' 或 'goodbye' 可以退出客户端程序。
环境变量配置: 请确保您已经配置了 'OPENAI_API_KEY' 和 'ANTHROPIC_API_KEY' 环境变量,因为客户端代码使用了 'gpt-4o' 和 'claude-3-5-sonnet-20241022' 模型。如果您不想使用这些模型,需要修改客户端代码中的模型名称。
信息
分类
网页与API