AI天气服务协议

一个基于Model Context Protocol的AI天气服务,提供天气警报和预报功能,支持与Claude AI模型集成。

  • by FarhanAwan
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 farhanawan/mcpclientandweatherserver

使用说明

MCP(模型上下文协议)项目

该项目演示了使用客户端-服务器架构的模型上下文协议(MCP)实现。它包括一个气象服务MCP服务器和一个可以使用Anthropic的Claude AI模型与之交互的客户端。

概述

模型上下文协议(MCP)是人工智能助手与外部数据源和工具通信的标准。该项目展示了:

  • MCP气象服务器A.基于.NET的MCP服务器,提供天气数据工具
  • MCP客户端A.NET客户端,连接到MCP服务器并与Anthropic的Claude AI集成

项目结构

MCP Server/
├── QuickstartClient/          # MCP Client application
│   ├── Program.cs            # Main client application
│   └── QuickstartClient.csproj
└── weather/                  # MCP Weather Server
    ├── Program.cs            # Server entry point
    ├── WeatherTools.cs       # Weather service tools
    └── weather.csproj

特性

天气服务器工具

天气服务器提供两个主要工具:

  1. GetAlerts:检索美国某个州的活动天气警报

    • 参数: state (string)-美国要收到警报的州
    • 返回:格式化的天气警报,包括事件类型、区域、严重程度和说明
  2. Get预测:获取特定位置的天气预报

    • 参数:
      • latitude (双精度)-位置纬度
      • longitude (双精度)-位置经度
    • 返回:详细的天气预报,包括温度、风和条件

MCP客户端

客户端应用程序:

  • 通过stdio传输连接到MCP服务器
  • 与Anthropic的Claude AI模型集成
  • 提供交互式聊天界面
  • 支持多种服务器类型(Python、Node.js、.NET)

先决条件

  • .NET 9.0 SDK
  • Anthropic API密钥(用于客户)

安装

  1. 克隆存储库

    git clone <repository-url>
    cd "MCP Server"
    
  2. 设置天气服务器

    cd weather
    dotnet restore
    dotnet build
    
  3. 设置客户端

    cd ../QuickstartClient
    dotnet restore
    dotnet build
    
  4. 配置API密钥

    对于客户,您需要设置您的Anthropic API密钥。您可以通过多种方式做到这一点:

    选项1:用户秘密(推荐)

    cd QuickstartClient
    dotnet user-secrets set "ANTHROPIC_API_KEY" "your-api-key-here"
    

    选项2:环境变量

    set ANTHROPIC_API_KEY=your-api-key-here
    

用法

运行天气服务器

  1. 启动天气服务器:

    cd weather
    dotnet run
    

    服务器将启动并监听通过stdio传输的连接。

运行客户端

  1. 使用天气服务器启动客户端:

    cd QuickstartClient
    dotnet run ../weather/weather.csproj
    
  2. 交互式聊天界面

    一旦开始,您将看到:

    Connected to server with tools: GetAlerts
    Connected to server with tools: GetForecast
    MCP Client Started!
    Enter a command (or 'exit' to quit):
    >
    
  3. 示例命令

    现在,您可以通过自然语言与天气工具进行交互:

    • “获取加利福尼亚州的天气警报”
    • 纽约市的天气预报是什么?使用坐标40.7128,-74.0060
    • “显示德克萨斯州的天气警报”

与其他服务器类型一起运行

客户端支持不同的服务器类型:

  • Python服务器: dotnet run script.py
  • Node.js服务器: dotnet run script.js
  • .NET项目: dotnet run project.csproj

建筑

MCP服务器(天气)

气象服务器使用以下方式实现MCP协议:

  • 运输:用于通信的StdioServerTransport
  • 工具:带有注释方法的WeatherTools类
  • HTTP客户端:配置为访问weather.gov API

关键部件:

  • Program.cs:服务器配置和启动
  • WeatherTools.cs:带有MCP注释的工具实现

MCP客户端

客户端实现:

  • 运输:用于服务器通信的StdioClientTransport
  • 人工智能集成:用于自然语言处理的克劳德人工智能
  • 工具发现:自动工具列表和集成
  • 交互界面:基于控制台的聊天界面

依赖项

天气服务器

  • Microsoft.Extensions.Hosting (9.0.7)
  • ModelContextProtocol (0.3.0-复习。3)

客户端

  • Anthropic.SDK (5.4.3)
  • Microsoft.Extensions.AI (9.7.1)
  • Microsoft.Extensions.Hosting (9.0.7)
  • ModelContextProtocol (0.3.0-复习。3)

API集成

天气服务器与美国国家气象局API(weather.gov)集成,以提供:

  • 实时天气警报
  • 详细的天气预报
  • 基于位置的天气数据

发展

添加新工具

要向天气服务器添加新工具,请执行以下操作:

  1. 在中创建新方法 WeatherTools.cs
  2. 添加 [McpServerTool] 属性
  3. 添加a [Description] 工具的属性
  4. 使用添加参数描述 [Description] 属性

例子:

[McpServerTool, Description("Get current weather conditions.")]
public static async Task<string> GetCurrentWeather(
    HttpClient client,
    [Description("Latitude of the location.")] double latitude,
    [Description("Longitude of the location.")] double longitude)
{
    // Implementation
}

扩展客户端

客户端可以扩展到:

  • 支持其他AI模型
  • 添加更复杂的UI
  • 实现工具结果可视化
  • 添加配置管理

故障排除

常见问题

  1. 找不到API密钥

    • 确保您的Anthropic API密钥配置正确
    • 检查用户机密或环境变量
  2. 服务器连接失败

    • 验证服务器路径是否正确
    • 确保服务器已构建并可运行
    • 检查是否有任何编译错误
  3. 天气API错误

    • 验证互联网连接
    • 检查weather.gov API状态
    • 确保坐标有效

调试模式

要在调试模式下运行,请执行以下操作:

dotnet run --configuration Debug

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

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

资源

致谢

  • MCP规范的模型上下文协议团队
  • Claude AI集成的人类学
  • 美国国家气象局天气数据API