天气数据客户端服务器教程

一个用于学习和实验的天气数据客户端/服务器教程,支持独立运行或通过HTTP通信。

  • by kpirabaharan
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kpirabaharan/MCP-Weather-Tutorial

使用说明

天气教程

这个仓库包含了一个关于如何处理天气数据的最小化客户端/服务器教程。它旨在作为实验、研讨会或自主学习的起点。

仓库布局

  • weather-mcp-client – 客户端项目,为教程提供用户界面支持,并在教程运行时自动管理服务器的生命周期。
  • weather-mcp-server – 独立服务器项目,提供客户端使用的API,并且可以独立进行探索。

入门指南(客户端 + 服务器)

  1. 按照各自目录中的说明,为两个项目安装依赖项。
  2. 决定客户端如何连接到服务器(使用标准输入输出还是HTTP),然后按照以下步骤操作。
  3. 如果提示,请将客户端指向服务器实例。

运行MCP客户端

  • STDIO(单进程)

    • 激活客户端虚拟环境(cd weather-mcp-client && source .venv/bin/activate)。
    • 使用服务器路径启动客户端: uv run client.py ../weather-mcp-server/server.py.
    • 客户端将通过标准输入输出(stdio)启动服务器,所以你需要 不是 在这种模式下需要单独启动服务器。
  • HTTP(独立服务器进程)

    • 激活服务器环境(cd weather-mcp-server && source .venv/bin/activate)。
    • 以HTTP模式启动服务器,例如: fastmcp run server.py:mcp --transport http --port 8000 (或根据您偏好的运行器/端口调整命令)。
    • 或者,在(指定位置)构建Docker镜像 weather-mcp-server/ (默认为标准输入输出;传递 --transport http ... (在图像名称后,通过HTTP托管)。
    • 在第二个终端中,激活客户端环境并运行: uv run client.py http://localhost:8000/mcp (set MCP_HTTP_HEADERS 如果您的服务器需要认证头信息)。
    • 因为HTTP传输期望服务器已经运行,所以在启动客户端之前,请确认服务器进程状态正常。

在VS Code中的独立服务器

  1. 将服务器目录添加到您的VS Code工作区中(File → Add Folder to Workspace… → 选择 weather-mcp-server)。

  2. 安装服务器依赖项(uv venv && source .venv/bin/activate && uv sync)。

  3. 更新您的MCP配置(mcp.json因此,VS Code(或MCP扩展)可以启动服务器:

    a) 与……一同启动 uv (默认):

    {
      "servers": {
        "weather": {
          "command": "uv",
          "args": ["run", "server.py"],
          "cwd": "/absolute/path/to/weather-tutorial/weather-mcp-server"
        }
      }
    }
    

    使用绝对值 cwd 因此,扩展程序能够可靠地解析脚本,并进行调整 command/args 如果你更喜欢不同的启动方法(例如 python server.py)。

    b) 使用 Docker 启动:

    {
      "servers": {
        "weather": {
          "command": "docker",
          "args": ["run", "--rm", "-i", "weather-mcp-server"],
          "cwd": "/absolute/path/to/weather-tutorial/weather-mcp-server"
        }
      }
    }
    

    在(指定位置/环境中)构建镜像 weather-mcp-server/ (docker build -t weather-mcp-server .),并在末尾添加额外的标志 args (例如 "-p", "8000:8000", "--", "--transport", "http", "--port", "8000") 如果你需要使用HTTP传输而不是stdio。

  4. 重新加载 VS Code 或 MCP 扩展以使其获取更新后的配置,然后使用 MCP 面板连接到 weather 用于手动测试的服务器。

贡献

欢迎随时提出问题或提交拉取请求,以改进功能、修复错误或提出增加教程步骤的建议。请确保更改范围明确,并包含任何相关的测试或文档更新。

许可证

此项目仅作为教育用途提供,原样使用。请根据您的需求进行调整和扩展。