使用说明
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
特性
天气服务器工具
天气服务器提供两个主要工具:
-
GetAlerts:检索美国某个州的活动天气警报
- 参数:
state(string)-美国要收到警报的州 - 返回:格式化的天气警报,包括事件类型、区域、严重程度和说明
- 参数:
-
Get预测:获取特定位置的天气预报
- 参数:
latitude(双精度)-位置纬度longitude(双精度)-位置经度
- 返回:详细的天气预报,包括温度、风和条件
- 参数:
MCP客户端
客户端应用程序:
- 通过stdio传输连接到MCP服务器
- 与Anthropic的Claude AI模型集成
- 提供交互式聊天界面
- 支持多种服务器类型(Python、Node.js、.NET)
先决条件
- .NET 9.0 SDK
- Anthropic API密钥(用于客户)
安装
-
克隆存储库
git clone <repository-url> cd "MCP Server" -
设置天气服务器
cd weather dotnet restore dotnet build -
设置客户端
cd ../QuickstartClient dotnet restore dotnet build -
配置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
用法
运行天气服务器
-
启动天气服务器:
cd weather dotnet run服务器将启动并监听通过stdio传输的连接。
运行客户端
-
使用天气服务器启动客户端:
cd QuickstartClient dotnet run ../weather/weather.csproj -
交互式聊天界面
一旦开始,您将看到:
Connected to server with tools: GetAlerts Connected to server with tools: GetForecast MCP Client Started! Enter a command (or 'exit' to quit): > -
示例命令
现在,您可以通过自然语言与天气工具进行交互:
- “获取加利福尼亚州的天气警报”
- 纽约市的天气预报是什么?使用坐标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)集成,以提供:
- 实时天气警报
- 详细的天气预报
- 基于位置的天气数据
发展
添加新工具
要向天气服务器添加新工具,请执行以下操作:
- 在中创建新方法
WeatherTools.cs - 添加
[McpServerTool]属性 - 添加a
[Description]工具的属性 - 使用添加参数描述
[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
- 实现工具结果可视化
- 添加配置管理
故障排除
常见问题
-
找不到API密钥
- 确保您的Anthropic API密钥配置正确
- 检查用户机密或环境变量
-
服务器连接失败
- 验证服务器路径是否正确
- 确保服务器已构建并可运行
- 检查是否有任何编译错误
-
天气API错误
- 验证互联网连接
- 检查weather.gov API状态
- 确保坐标有效
调试模式
要在调试模式下运行,请执行以下操作:
dotnet run --configuration Debug
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
资源
致谢
- MCP规范的模型上下文协议团队
- Claude AI集成的人类学
- 美国国家气象局天气数据API