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
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 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
