Add your description here
Project description
MCP-Client-For-Weather-Example
MCP-Client-For-Weather-Example 是一个基于 MCP(Modular Communication Protocol)的客户端和服务器项目,支持通过 LLM 的大语言模型与工具交互,并提供天气查询功能。
功能特性
- MCP 客户端:支持与 MCP 服务器通信,调用工具并处理查询。
- 天气查询服务:通过 OpenWeather API 查询指定城市的天气信息。
- 环境变量支持:通过
.env文件配置 API 密钥和其他参数。 - 异步支持:使用
asyncio和httpx实现高效的异步通信。
文件结构
├── .env # 环境变量配置文件
├── .gitignore # Git 忽略文件
├── client.py # MCP 客户端实现
├── mcp_weather_server.py # 天气查询服务实现
├── pyproject.toml # 项目依赖配置文件
└── README.md # 项目说明文件
环境配置
1. 安装依赖
确保已安装 Python 3 或更高版本。然后运行以下命令安装依赖:
# 使用 uv
pip install uv
uv add mcp httpx openai
# 创建虚拟环境
uv venv
# 激活虚拟环境
source .venv/bin/activate
2. 配置环境变量
在项目根目录下创建 .env 文件,并添加以下内容:
这里使用的硅基智能的 API,天气API去 https://openweathermap.org 注册
OPENAI_API_KEY=你的OpenAI API密钥
BASE_URL=https://api.siliconflow.cn/v1 # <你的OpenAI API基础URL>
MODEL=使用的模型名称
WEATHER_API_KEY=你的OpenWeather API密钥
使用方法
- 运行以下命令启动 MCP 客户端并连接到服务器:
python client.py mcp_weather_server.py
- 启动后,输入城市名称(英文)即可查询天气信息。例如:
回答效果取决于模型本身,你的输出可能有些出入。
你: 今天北京天气怎样?
🤖 LLM: 北京的天气情况如下:
- 温度:10.94°C
- 湿度:15%
- 风速:4 m/s
- 天气:晴,少云
今天的北京天气晴朗,温度适宜,适合外出活动。请注意保暖,因为早晨和晚上的气温可能会有所下降
- 退出客户端 输入 quit 退出 MCP 客户端。
项目依赖
Python 3+
httpx - 异步 HTTP 客户端
mcp - Modular Communication Protocol
openai - OpenAI API 客户端
python-dotenv - 环境变量加载工具
开发指南
代码格式化
使用 pycharm 快捷键,进行格式化
单元测试
目前项目未包含单元测试模块,建议后续添加测试以提高代码质量。
许可证
本项目未指定许可证,默认保留所有权利。如需使用,请联系项目作者。
贡献
欢迎提交 Issue 和 Pull Request 来改进本项目。
联系方式
如有问题,请通过 GitHub Issue 提交反馈。
感谢
学习资源
- Bilibili 视频:MCP 实战
- MCP vs. API Explained
- 从零开始教你打造一个MCP客户端
- mcp-client-demo
- MCP 终极指南
- 一文看懂:MCP(大模型上下文协议)
- MCP 传输
- Understanding Model Context Protocol (MCP)
- A Deep Dive Into MCP and the Future of AI Tooling
- Agentic Design Patterns Part 1
- Agentic Design Patterns Part 2: Reflection
- Agentic Design Patterns Part 3, Tool Use
- Agentic Design Patterns Part 4: Planning
- Agentic Design Patterns Part 5: Multi-Agent Collaboration
MCP Servers
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_a_persimmons_mcp_ds_client-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_a_persimmons_mcp_ds_client-0.1.0.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
086f61d74a9aa4b52c05e043848bc921bc922ee43fd767fde154dfd285ff18ca
|
|
| MD5 |
0e832fab5b7435a4981643975bd2f243
|
|
| BLAKE2b-256 |
fe72f161b21188a52c54df9a9170c844c1f1ba12085649f3b038e727fba9dd84
|
File details
Details for the file iflow_mcp_a_persimmons_mcp_ds_client-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_a_persimmons_mcp_ds_client-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdf5db2d4b0a33387472c533f8d7944e77fba667ad1c6db9792416f7c07d4ed4
|
|
| MD5 |
622e09ff4af42c320692435f9b5d03de
|
|
| BLAKE2b-256 |
dc5e4a845b3d1cac890452b5d2475c0b53005f77fb1ad01eb52855416fcd2b81
|