天气数据服务器

一个基于MCP协议的轻量级天气数据服务器,通过国家气象服务API提供实时天气数据,可与Claude Desktop集成进行工具执行和上下文感知交互。

  • by Chengyuli33
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Chengyuli33/mcp-server-framework

使用说明

MCP天气服务器演示概览

这个项目实现了一个轻量级的模型上下文协议(MCP)服务器,该服务器通过美国国家气象局API提供实时天气数据。该项目使用Python构建 FastMCP 和 httpx,它可以本地连接到 Claude Desktop(克劳德桌面版) 用于工具执行和上下文感知交互。

它主要包含两个阶段:

⚙️ 开发阶段:
您将创建一个MCP服务器(weather.py) 使用Python。环境和依赖项(mcp[cli], httpx) 是通过以下方式管理的: uv该服务器是使用FastMCP实现的。

📦 集成阶段:
您将配置Claude Desktop以连接并启动您的MCP服务器。这是通过编辑来完成的 claude_desktop_config.json 文件,指定Claude Desktop应如何启动以及与您的MCP服务器进行通信。

这个项目由……指导 模型上下文协议 并且源代码来源于 Python的MCP快速入门指南。

🚀 构建一个MCP服务器

🛠️ 需要开发者工具

  • macOS(苹果电脑操作系统)
  • Python 3.10或更高版本
  • Python MCP SDK 1.2.0 或更高版本
  • Claude(适用于桌面版)

1. 设置环境

我们首先需要安装 uv 工具并将其用作您的Python环境管理器。

curl -LsSf https://astral.sh/uv/install.sh | sh

您需要重启您的终端以使(更改/设置生效) uv 命令可用。请检查是否 uv 通过运行以下命令正确安装:

uv --version

2. 使用uv初始化一个新的Python项目

使用 uv 创建一个名为(新项目名称)的新项目 weather这将初始化一个 weather/ 包含a的文件夹 pyproject.toml 配置文件。

uv init weather
cd weather

3. 创建虚拟环境并激活它

uv venv
source .venv/bin/activate

4. 安装依赖项

安装所需的依赖项MCP库,支持CLI(命令行界面),并自动将其添加到 pyproject.toml现在,这个 weather 该项目包括MCP库和一个HTTP客户端库。

uv add "mcp[cli]" httpx

5. 创建本地MCP服务器文件

创建一个名为(此处应指定文件名,但原文未给出具体名称)的空MCP服务器文件 weather.py 在你当前的目录中。这个文件将包含你的MCP服务器逻辑。

touch weather.py

然后,在 weather.py 你需要导入必要的包并设置实例;添加辅助函数;实现MCP工具的执行;最后,运行服务器。

6. 配置Claude for Desktop以连接到MCP服务器

要配置Claude for Desktop以连接到您的MCP服务器,请打开位于以下路径的配置文件: ~/Library/Application Support/Claude/claude_desktop_config.json 在文本编辑器中。如果文件不存在,请创建它。按照以下示例添加您的MCP服务器详细信息并保存文件:

{
  "mcpServers": {
    "weather": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather",
        "run",
        "weather.py"
      ]
    }
  }
}

记得替换 "/ABSOLUTE/PATH/TO/PARENT/FOLDER/weather" 使用您自己的绝对路径 weather 项目目录。你可以通过运行以下命令获取这个路径: pwd 在项目文件夹内,于你的终端中。

这个(或“该”) "uv" 值应该是到(某处)的绝对路径 uv 在您的机器上可执行。要找到它,请运行 which uv 在你的终端(或命令行界面)中。

7. 启动MCP服务器并从Claude进行连接

在完全退出并重新启动 Claude for Desktop(而不仅仅是关闭聊天窗口)后,您应该会在 MCP 面板中看到天气服务器已可用并准备好连接。