天气数据服务器

一个基于FastMCP和TypeScript构建的生产级天气MCP服务器,提供全球城市的实时天气数据,并支持与Claude Desktop、VS Code和Cursor的无缝集成。

  • by abhilashsahoo
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 abhilashsahoo/fastmcp-weather-server

使用说明

🌤️ FastMCP气象服务器

使用FastMCP和TypeScript构建的生产就绪天气MCP服务器,与Claude Desktop、VS Code和Cursor无缝集成。

✨ 特性

  • 🌍 实时天气数据 -获取全球任何城市的当前天气
  • 🔒 类型安全 -使用TypeScript和Zod验证构建
  • 📊 进度报告 -内置天气请求进度跟踪
  • 📝 结构化日志记录 -带上下文的全面日志记录
  • 🛠️ 易于测试 -用于开发和调试的内置CLI工具
  • 🔌 通用集成 -适用于Claude Desktop、VS Code和游标
  • ⚡ 快速发展 -比传统MCP SDK快5倍

🚀 快速开始

先决条件

  • Node.js 20.18.1或更高版本 (关键要求)
  • OpenWeatherMap API密钥 (免费套餐:1000次/天)

安装

git clone https://github.com/abhilashsahoo/fastmcp-weather-server.git
cd fastmcp-weather-server
npm install

设置

  1. 获取OpenWeatherMap API密钥:

  2. 创建环境文件:

    cp .env.example .env
    
  3. 将API密钥添加到 .env:

    OPENWEATHER_API_KEY=your_api_key_here
    

发展

测试您的服务器:

npm run dev

尝试交互式CLI:

get_weather {"city": "London"}

使用可视化界面进行调试:

npm run inspect

生产建设:

npm run build

🔧 MCP客户端集成

克劳德桌面

  1. 查找您的配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  2. 添加此配置:

    {
      "mcpServers": {
        "weather": {
          "command": "npx",
          "args": ["tsx", "/absolute/path/to/fastmcp-weather-server/src/server.ts"],
          "env": {
            "OPENWEATHER_API_KEY": "your_actual_api_key_here"
          }
        }
      }
    }
    
  3. 重新启动Claude Desktop并测试:

    What's the weather like in Tokyo?
    

VS代码

  1. 安装MCP扩展
  2. 创建 .vscode/settings.json:
    {
      "mcp.servers": {
        "weather": {
          "command": "npx",
          "args": ["tsx", "./src/server.ts"],
          "cwd": "${workspaceFolder}",
          "env": {
            "OPENWEATHER_API_KEY": "your_actual_api_key_here"
          }
        }
      }
    }
    

光标IDE

  1. 创建 .cursor/mcp.json:
    {
      "servers": {
        "weather": {
          "command": "npx",
          "args": ["tsx", "./src/server.ts"],
          "env": {
            "OPENWEATHER_API_KEY": "your_actual_api_key_here"
          }
        }
      }
    }
    

📋 可用脚本

脚本 描述
npm run dev 使用CLI启动FastMCP开发服务器
npm run inspect 打开可视化调试界面
npm run test-direct 无需CLI即可直接测试服务器
npm run build 将TypeScript编译为JavaScript
npm start 运行已编译的服务器

🛠️ api参考

工具

get_weather

获取全球任何城市的最新天气信息。

参数:

  • city (字符串,必填):城市名称(例如“伦敦”、“纽约”)

退货:

  • 包含温度、条件、湿度和风速的格式化天气数据

例子:

{
  "city": "London"
}

答复:

🌤️ Weather in London:
🌡️ Temperature: 15°C (feels like 13°C)
☁️ Conditions: partly cloudy
💧 Humidity: 65%
💨 Wind Speed: 3.2 m/s

🐛 故障排除

常见问题

问题 解决方案
Node.js版本错误 更新到Node.js 20.18.1+: winget upgrade OpenJS.NodeJS
找不到服务器 检查MCP客户端配置中的绝对路径
API关键错误 在中验证API密钥 .env MCP客户端环境部分
模块分辨率错误 删除 node_modules 然后跑 npm install
FastMCP CLI问题 试试看 npm run test-direct 不使用CLI进行测试

Windows特定

通过PowerShell更新Node.js:

# Using Chocolatey
choco upgrade nodejs

# Using Winget
winget upgrade OpenJS.NodeJS

# Using nvm-windows
nvm install 20.18.1 && nvm use 20.18.1

测试步骤

  1. 直接测试服务器: npm run test-direct
  2. 使用FastMCP CLI进行测试: npm run dev
  3. 视觉界面测试: npm run inspect
  4. 使用Claude Desktop进行测试: 重启克劳德,询问天气情况

📊 项目结构

fastmcp-weather-server/
├── src/
│   └── server.ts          # Main FastMCP server
├── dist/                  # Compiled JavaScript (generated)
├── .env                   # Environment variables (create from .env.example)
├── .env.example           # Environment template
├── .gitignore            # Git ignore rules
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md             # This file

🌟 详细功能

FastMCP优势

  • 零配置: 使用单个构造函数的服务器设置
  • 内置测试: 包括CLI和web界面
  • 进度报告: 实时进度更新
  • 结构化日志记录: 使用数据对象进行上下文日志记录
  • 类型安全: Zod模式验证
  • 错误处理: 用户友好的错误消息

天气数据

  • 实时更新: OpenWeatherMap的当前状况
  • 全球覆盖范围: 全球任何城市的天气
  • 综合数据: 温度、湿度、风、条件
  • 速率限制: 每天1000个免费请求

🚀 部署

发展

npm run dev  # Test with FastMCP CLI

生产

npm run build  # Compile TypeScript
npm start      # Run compiled server

环境变量

变量 描述 必填
OPENWEATHER_API_KEY OpenWeatherMap API密钥 是
NODE_ENV 环境(开发/生产) 否

📈 演出

  • 请求: 1000个天气电话/天(免费套餐)
  • 响应时间: 平均<500ms
  • 内存使用情况: <50MB
  • 客户支持: 克劳德桌面,VS代码,光标

🤝 贡献

  1. 分叉存储库
  2. 创建特征分支: git checkout -b feature/amazing-feature
  3. 提交您的更改: git commit -m 'Add amazing feature'
  4. 推到分支: git push origin feature/amazing-feature
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

🔗 相关项目


内置于❤️ 使用FastMCP和TypeScript