项目简介

该项目是一个基于 Model Context Protocol (MCP) 的天气智能代理服务器,核心功能是为 LLM 客户端提供标准化的天气信息和相关媒体生成服务。它能够获取指定美国邮政编码的实时天气数据,并将其转换为个性化的语音播报(可选生成视频),然后上传到 Mux 进行流媒体播放。该服务器还集成了文本转语音 (TTS) 服务(Cartesia 或 Deepgram)和视频生成功能,为 LLM 应用提供丰富的上下文服务。

主要功能点

  • 实时天气查询: 通过美国邮政编码获取由国家气象局 (NWS) 提供的详细天气预报,包括温度、风速、风向和短期/详细预报。
  • 邮政编码解析: 智能解析城市、州或模糊的地点信息,将其转换为标准的5位美国邮政编码。
  • 语音天气播报: 将天气预报文本合成为自然语音,支持 Cartesia 或 Deepgram 两种 TTS 服务,并可选择生成简短的视频文件。
  • Mux视频流媒体上传: 将生成的语音/视频文件上传至 Mux 平台,生成可流媒体播放的 URL,方便用户访问。
  • 农业气象建议: 智能代理可以根据天气数据提供针对农民的农业气象建议,结合季节性提示。

安装步骤

  1. 安装Node.js: 确保您的系统已安装 Node.js 20 或更高版本。

  2. 安装ffmpeg: 'ffmpeg-static' 已捆绑并自动配置,但对于某些环境,可能需要系统安装 'ffmpeg'。

  3. 克隆仓库:

    git clone https://github.com/steelhead99x/weather-mcp-kd.git
    cd weather-mcp-kd
  4. 安装依赖:

    npm install
  5. 配置环境变量: 在项目根目录创建 '.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
  6. 编译项目:

    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_...' 替换为实际的密钥和配置,这些环境变量会在服务器启动时被载入。

基本使用方法

  1. 启动开发服务器:
    npm run dev
    这将启动一个开发服务器,通常用于 Mastra 代理的测试和交互。
  2. 启动生产服务器:
    npm start:production
    此命令在生产环境中运行编译后的 Mastra 应用程序,包括 MCP 服务器。
  3. MCP客户端交互: 您的 LLM 客户端可以通过配置上述 JSON-RPC 连接信息,调用该 MCP 服务器暴露的工具和代理。例如,可以调用 'weatherAgent' 代理获取天气信息,或调用 'tts-weather-upload' 工具生成并上传语音播报。

信息

分类

AI与计算