天气服务示例

这是一个基于FastMCP的多云协议(MCP)服务器示例,实现了天气查询工具、资源和提示功能,用于演示MCP的核心组件和交互模式。

  • by nosadaniel
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 nosadaniel/basic_mcp_server

使用说明

MCP基本示例-气象服务

这是一个演示如何使用FastMCP实现MCP(多云协议)服务器的基本示例。该示例实现了一个简单的天气服务,展示了三个主要的MCP组件:工具、资源和提示。

目的

本项目作为一个学习示例来演示:

  • 如何使用FastMCP创建MCP服务器
  • 如何实施MCP工具、资源和提示
  • MCP服务器的基本结构和实现

实现细节

服务器实现了三个MCP组件来演示不同的交互模式:

  1. 工具: get_weather(location: str)

    • 简单MCP工具示例
    • 演示如何使用参数定义工具
    • 演示工具返回值
  2. 资源: weather://{location}

    • MCP资源使用示例
    • 显示资源URL模式匹配
    • 演示资源参数处理
  3. 提示: weather_report(location: str)

    • MCP提示实施示例
    • 演示如何创建格式化提示
    • 演示提示参数的用法

运行示例

要运行此示例:

  1. 安装FastMCP库
  2. 跑 server.py 直接

需求

  • Python 3.13或更高版本
  • 支持CLI的MCP库(mcp[cli])

项目结构

  • server.py:MCP服务器实现
  • main.py:运行服务器的入口点
  • pyproject.toml:项目配置
  • .gitignore:Git忽略规则

运行示例

要运行此示例,请执行以下步骤:

  1. 安装uv包管理器:

    # On macOS/Linux
    curl -fsSL https://uv.rs/install.sh | bash
    
    # On Windows
    winget install uv
    
  2. 创建并激活虚拟环境:

    uv venv .venv
    source .venv/bin/activate  # On Unix/macOS
    # or
    .venv\Scripts\activate     # On Windows
    
  3. 安装所需的依赖项:

    uv pip install -r pyproject.toml
    
  4. 使用mcp-dev运行服务器:

    mcp dev main.py
    
  5. 服务器将启动并监听:

    • 主机:本地主机(127.0.0.1)
    • 端口:8080
    • 传输:服务器发送事件(SSE)
  6. 使用微型代理客户端测试服务器:

    tiny-agents run agent.json
    

    服务器实现了三个端点:

    • 工具: get_weather(location: str)
    • 资源: weather://{location}
    • 提示: weather_report(location: str)
  7. 要停止服务器,请在终端中按Ctrl+C

备注

这是一个返回静态数据的基本示例。在实际应用中,您会:

  • 连接到实际数据源
  • 实施适当的错误处理
  • 添加身份验证和授权
  • 实施适当的日志记录
  • 添加全面的文档
  • 配置SSE之外的不同传输方式
  • 添加适当的服务器配置选项
  • 实施生产就绪错误处理
  • 添加监控和指标
  • 配置适当的端口管理
  • 添加环境变量支持
  • 处理边缘案例和验证

这个例子有意保持简单,以专注于MCP概念,而不是生产考虑。