mcp-weather
好的,以下是一個給 AI Agent 使用的 MCP (Message Communication Protocol) Server 範例,用來取得美國各州的天氣預報與警示資訊。 這個範例著重於概念的清晰,實際部署可能需要根據您的具體需求進行調整。 **概念概述:** * **MCP Server:** 負責接收來自 AI Agent 的請求,處理請求,並將結果返回給 AI Agent。 * **AI Agent:** 發送請求到 MCP Server,並解析返回的結果。 * **天氣資料來源:** 使用外部 API (例如 NOAA, OpenWeatherMap) 來獲取天氣資訊。 * **資料格式:** 使用 JSON 作為請求和回應的資料格式,方便 AI Agent 解析。 **MCP Server (Python 範例 - 使用 Flask):** ```python from flask import Flask, request, jsonify import requests import os app = Flask(__name__) # 替換成你的 API 金鑰 (從 NOAA, OpenWeatherMap 等取得) API_KEY = os.environ.get("WEATHER_API_KEY") # 建議使用環境變數 # 預設天氣資料來源 (NOAA) WEATHER_API_URL = "https://api.weather.gov/alerts/active?area={state}" @app.route('/weather', methods=['POST']) def get_weather(): """ 接收來自 AI Agent 的請求,取得指定州的天氣預報和警示資訊。 """ try: data = request.get_json() state = data.get('state') if not state: return jsonify({'error': 'State is required'}), 400 # 呼叫天氣 API url = WEATHER_API_URL.format(state=state.upper()) # NOAA 需要大寫州代碼 response = requests.get(url) if response.status_code == 200: weather_data = response.json() return jsonify(weather_data), 200 else: return jsonify({'error': f'Weather API error: {response.status_code}'}), 500 except Exception as e: print(f"Error: {e}") return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(debug=True, host='0.0.0.0', port=5000) ``` **AI Agent (Python 範例):** ```python import requests import json MCP_SERVER_URL = "http://localhost:5000/weather" # 替換成你的 MCP Server URL def get_state_weather(state): """ 向 MCP Server 發送請求,取得指定州的天氣資訊。 """ try: payload = {'state': state} headers = {'Content-type': 'application/json'} response = requests.post(MCP_SERVER_URL, data=json.dumps(payload), headers=headers) if response.status_code == 200: weather_data = response.json() return weather_data else: print(f"Error: MCP Server error: {response.status_code}") return None except Exception as e: print(f"Error: {e}") return None # 範例用法 state = "CA" # 加州 weather_info = get_state_weather(state) if weather_info: print(f"加州 ({state}) 天氣資訊:") print(json.dumps(weather_info, indent=4, ensure_ascii=False)) # 輸出美觀的 JSON else: print("無法取得天氣資訊。") ``` **說明:** * **MCP Server (Flask):** * 使用 Flask 建立一個簡單的 Web 服務。 * `/weather` 端點接收 POST 請求,請求體包含一個 JSON 物件,其中包含 `state` 欄位 (例如: `{"state": "CA"}`). * 使用 `requests` 庫呼叫外部天氣 API (NOAA 在此範例中)。 * 將天氣 API 的回應以 JSON 格式返回給 AI Agent。 * 錯誤處理:包含基本的錯誤處理,例如檢查 `state` 是否存在,以及處理天氣 API 的錯誤。 * **重要:** 請務必將 `API_KEY` 儲存在環境變數中,而不是直接寫在程式碼中,以確保安全性。 * **AI Agent:** * 使用 `requests` 庫向 MCP Server 發送 POST 請求。 * 將 `state` 作為 JSON payload 發送。 * 解析 MCP Server 返回的 JSON 回應。 * 錯誤處理:包含基本的錯誤處理,例如檢查 MCP Server 的回應狀態碼。 * **JSON 格式:** 請求和回應都使用 JSON 格式,方便 AI Agent 解析和處理。 * **NOAA API:** 此範例使用 NOAA 的 API,但您可以根據需要替換成其他天氣 API。 請注意,不同的 API 可能需要不同的參數和金鑰。 * **錯誤處理:** 範例中包含基本的錯誤處理,但您可能需要根據您的需求添加更完善的錯誤處理機制。 * **安全性:** 在實際部署中,請務必考慮安全性問題,例如驗證 AI Agent 的身份,以及保護 API 金鑰。 **如何執行:** 1. **安裝必要的套件:** ```bash pip install flask requests ``` 2. **設定環境變數:** ```bash export WEATHER_API_KEY="YOUR_API_KEY" # 替換成你的 API 金鑰 ``` 3. **執行 MCP Server:** ```bash python your_mcp_server_file.py ``` 4. **執行 AI Agent:** ```bash python your_ai_agent_file.py ``` **中文翻譯 (概念):** 這個範例展示了一個給 AI 代理使用的 MCP (訊息通訊協定) 伺服器,用於獲取美國各州的天氣預報和警報資訊。 * **MCP 伺服器:** 負責接收來自 AI 代理的請求,處理這些請求,並將結果返回給 AI 代理。 * **AI 代理:** 向 MCP 伺服器發送請求,並解析返回的結果。 * **天氣資料來源:** 使用外部 API (例如 NOAA, OpenWeatherMap) 來獲取天氣資訊。 * **資料格式:** 使用 JSON 作為請求和回應的資料格式,方便 AI 代理解析。 **中文翻譯 (程式碼註解):** 程式碼中的註解已經是中文,所以不需要額外翻譯。 **重要注意事項:** * **API 金鑰:** 請務必使用您自己的 API 金鑰,並將其儲存在環境變數中。 * **錯誤處理:** 根據您的需求,添加更完善的錯誤處理機制。 * **安全性:** 在實際部署中,請考慮安全性問題。 * **API 限制:** 不同的天氣 API 可能有不同的使用限制 (例如請求頻率限制)。 請仔細閱讀 API 的文件。 * **資料格式:** 不同的天氣 API 返回的資料格式可能不同。 您可能需要修改程式碼來解析不同的資料格式。 這個範例提供了一個基本的框架。 您可以根據您的具體需求進行修改和擴展。 例如,您可以添加更多的功能,例如支持不同的天氣 API,或者提供更詳細的天氣資訊。
erhwenkuo
README
mcp-weather
一个给 AI Agent 使用的 MCP Server 范例,用来取得美国各州的天气预报与警示信息。
- 原始专案: mcp-sse
目的
这个 mcp server 示范了基于 SSE 的 MCP 服务器和使用其中工具的独立 MCP 客户端的工作模式。
运行环境
本专案使用 uv 来管理相关的依赖与 python 的运行环境, 如果尚未安装 uv 可依照官网的安装指示来安装。
接下来的相关命令都是在 Ubuntu 24.04 的环境下执行的, 其它作业系统的操作请自行修改:
$ curl -LsSf https://astral.sh/uv/install.sh | sh
下载源码:
$ git clone https://github.com/erhwenkuo/mcp-weather.git
$ cd mcp-weather
$ uv sync
运行服务
使用 uv 来启动:
$ uv run server
INFO: Started server process [15784]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
使用 Docker 来启动
首先构建 Docker image:
$ docker build -t mcp-weather .
启动 mcp-weather:
$ docker run -d -p 5488:5488 mcp-weather
验证结果
首先安装 nodejs:
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 22
# Verify the Node.js version:
node -v # Should print "v22.14.0".
nvm current # Should print "v22.14.0".
# Verify npm version:
npm -v # Should print "10.9.2".
接着启动 mcp inspector:
$ npx @modelcontextprotocol/inspector
Starting MCP inspector...
Proxy server listening on port 3000
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
使用浏览器打开 http://localhost:5173
, 然后进行下列的动作:
- 在 Transport Type 选择
SSE
- 在 URL 键入 mcp server 的位址与端口,
http://localhost:5488/sse
- 点击
Connect
, 如果有看到状态是 "Connected" 代表己经成功连线到 mcp-weather 服务了 - 点击上方的 "Tools" Tab
- 点击 "List Tools" 按钮之后会看到有两个工具:
get_alerts
get_forecast
- 点击
get_alerts
之后在右侧会出现这个工具的说明与参数, 在state
的输入栏中键入 "CA" (或是美国其它的州名), 然后点击 "Run Tool" 按钮
效果如下圖所示:
测试 get_forecast
:
- latitude: 36.7692
- longitude: -119.4116
为什么使用 SSE
这意味着 MCP 服务器可以是某个运行在远端的进程服务,AI Agent(客户端)可以随时随地连接、使用和断开连接。换句话说,基于 SSE 的服务器和客户端可以是解耦的进程(甚至可能在解耦的节点上)。
与客户端本身将服务器作为子进程生成的基于 STDIO 的模式相比,这是不同的,并且更适合「云原生」用例。
MCP Server
server.py
是 SSE-based MCP server, 预设情况下,服务器运行在 0.0.0.0:5488
上运行,但可以使用命令行参数进行配置,例如:
uv run server.py --host <your host> --port <your port>
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。