项目简介
该项目是一个基于 Model Context Protocol (MCP) 的天气智能代理服务器,核心功能是为 LLM 客户端提供标准化的天气信息和相关媒体生成服务。它能够获取指定美国邮政编码的实时天气数据,并将其转换为个性化的语音播报(可选生成视频),然后上传到 Mux 进行流媒体播放。该服务器还集成了文本转语音 (TTS) 服务(Cartesia 或 Deepgram)和视频生成功能,为 LLM 应用提供丰富的上下文服务。
主要功能点
- 实时天气查询: 通过美国邮政编码获取由国家气象局 (NWS) 提供的详细天气预报,包括温度、风速、风向和短期/详细预报。
- 邮政编码解析: 智能解析城市、州或模糊的地点信息,将其转换为标准的5位美国邮政编码。
- 语音天气播报: 将天气预报文本合成为自然语音,支持 Cartesia 或 Deepgram 两种 TTS 服务,并可选择生成简短的视频文件。
- Mux视频流媒体上传: 将生成的语音/视频文件上传至 Mux 平台,生成可流媒体播放的 URL,方便用户访问。
- 农业气象建议: 智能代理可以根据天气数据提供针对农民的农业气象建议,结合季节性提示。
安装步骤
-
安装Node.js: 确保您的系统已安装 Node.js 20 或更高版本。
-
安装ffmpeg: 'ffmpeg-static' 已捆绑并自动配置,但对于某些环境,可能需要系统安装 'ffmpeg'。
-
克隆仓库:
git clone https://github.com/steelhead99x/weather-mcp-kd.git cd weather-mcp-kd -
安装依赖:
npm install -
配置环境变量: 在项目根目录创建 '.env' 文件,并根据您的需求配置以下变量:
- 'ANTHROPIC_API_KEY': Anthropic LLM API 密钥 (必填,用于代理)。
- 'WEATHER_MCP_USER_AGENT': 用户代理字符串 (推荐,用于访问天气API)。
- 'CARTESIA_API_KEY' 和 'CARTESIA_VOICE' (或 'DEEPGRAM_API_KEY' 和 'DEEPGRAM_TTS_MODEL'): 至少选择一个 TTS 服务提供商的 API 密钥和语音配置。
- 'MUX_TOKEN_ID' 和 'MUX_TOKEN_SECRET': 如果需要将视频上传到 Mux,则需要 Mux API 密钥和秘密。
- 'MUX_CORS_ORIGIN': Mux 上传的 CORS 源,例如 'http://localhost'。
- 'CARTESIA_SAMPLE_RATE': Cartesia TTS 的采样率 (可选)。
- 'TTS_OUTPUT_DIR': TTS 生成文件的输出目录 (可选,默认为 'files/uploads/tts')。
- 'TTS_CLEANUP': 设置为 'true' 以在 Mux 上传后清理本地 TTS 文件 (可选)。
- 'DEBUG': 设置为 'true' 以启用详细日志 (可选)。
- 'MUX_MCP_UPLOAD_ARGS': 用于 Mux 上传 MCP 客户端的额外参数 (可选)。
- 'MUX_MCP_ASSETS_ARGS': 用于 Mux 资产 MCP 客户端的额外参数 (可选)。
示例 '.env' 文件:
ANTHROPIC_API_KEY=sk-... WEATHER_MCP_USER_AGENT="WeatherMCP/1.0 ([email protected])" # TTS (choose one or both) CARTESIA_API_KEY=ca-sk-... CARTESIA_VOICE=some_voice_id # or DEEPGRAM_API_KEY=dg-sk-... DEEPGRAM_TTS_MODEL=aura-asteria-en # Mux (only if you want uploads) MUX_TOKEN_ID=mux-tid-... MUX_TOKEN_SECRET=mux-secret-... MUX_CORS_ORIGIN=http://localhost -
编译项目:
npm run build
服务器配置
此 MCP 服务器作为后端服务运行,并通过 Stdio 协议与 MCP 客户端(如 LLM 应用)通信。要让您的 MCP 客户端连接到此天气 MCP 服务器,需要提供以下配置信息:
{ "name": "Weather MCP Server", "command": "node", "args": [ "--import=./.mastra/output/instrumentation.mjs", "./.mastra/output/index.mjs" ], "env": { "NODE_ENV": "production", "PORT": "8080", "HOST": "0.0.0.0", "ANTHROPIC_API_KEY": "YOUR_ANTHROPIC_API_KEY", "WEATHER_MCP_USER_AGENT": "YOUR_USER_AGENT", "CARTESIA_API_KEY": "YOUR_CARTESIA_API_KEY", "CARTESIA_VOICE": "YOUR_CARTESIA_VOICE", "DEEPGRAM_API_KEY": "YOUR_DEEPGRAM_API_KEY", "DEEPGRAM_TTS_MODEL": "YOUR_DEEPGRAM_TTS_MODEL", "MUX_TOKEN_ID": "YOUR_MUX_TOKEN_ID", "MUX_TOKEN_SECRET": "YOUR_MUX_TOKEN_SECRET", "MUX_CORS_ORIGIN": "http://localhost" } }
- 'name': 服务器的名称,例如 "Weather MCP Server"。
- 'command': 启动服务器的可执行文件,通常是 'node'。
- 'args': 传递给 'command' 的参数,用于启动编译后的 Mastra 应用程序。
- 'env': 包含服务器运行所需的环境变量。请将 'YOUR_...' 替换为实际的密钥和配置,这些环境变量会在服务器启动时被载入。
基本使用方法
- 启动开发服务器:
这将启动一个开发服务器,通常用于 Mastra 代理的测试和交互。npm run dev - 启动生产服务器:
此命令在生产环境中运行编译后的 Mastra 应用程序,包括 MCP 服务器。npm start:production - MCP客户端交互: 您的 LLM 客户端可以通过配置上述 JSON-RPC 连接信息,调用该 MCP 服务器暴露的工具和代理。例如,可以调用 'weatherAgent' 代理获取天气信息,或调用 'tts-weather-upload' 工具生成并上传语音播报。
信息
分类
AI与计算