使用说明
气象MCP服务器
通过模型上下文协议(MCP)服务器功能增强的天气API示例,演示如何将现有的web API转换为MCP服务器。
项目概述
该项目是将MCP(模型上下文协议)功能集成到现有功能中的一个实例。NET web API。它最初是一个简单的天气预报API,后来被增强为MCP服务器,允许AI代理和其他客户端通过标准化的MCP协议与天气数据交互。
什么是MCP(模型上下文协议)?
模型上下文协议(MCP)是一个开放标准,可实现人工智能应用程序和外部数据源之间的无缝集成。MCP允许AI模型通过标准化的接口安全地连接到各种工具、数据库和服务并与之交互。
MCP的主要优势:
- 标准化沟通:为AI代理与工具和数据源交互提供一致的方式
- 安全:确保安全和受控地访问外部资源
- 灵活性:支持各种传输机制(HTTP、WebSocket等)
- 工具集成:使AI代理能够调用函数并从外部服务访问数据
将Web API转换为MCP服务器
此项目演示了向现有ASP添加MCP功能所需的最小更改。NET核心web API:
1.包依赖关系
已将MCP服务器包添加到 WeatherMcp.csproj:
<PackageReference Include="ModelContextProtocol.AspNetCore" Version="0.2.0-preview.3" />
2.MCP工具实施
创建 Tools/WeatherTools.cs 采用MCP装饰方法:
[McpServerToolType]类的属性[McpServerTool]公共方法的属性[Description]文档属性
3.服务注册
在……里面 Program.cs,添加了MCP服务器服务:
// Add MCP server with HTTP transport
builder.Services.AddMcpServer()
.WithHttpTransport()
.WithToolsFromAssembly();
// Map MCP endpoints
app.MapMcp();
4.工具类别
气象工具包裹了现有的气象服务,使其可以通过MCP访问:
GetWeatherForecast()-获取默认城市的预测GetWeatherForecastForCity(string city)-获取特定城市的天气预报
运行应用程序
先决条件
- .NET 9 SDK
- Visual Studio代码(推荐)或Visual Studio
构建并运行
# Build the solution
dotnet build
# Run the application
dotnet run --project WeatherMcp
# Or run with watch for development
dotnet watch --project WeatherMcp
应用程序将于启动 http://localhost:5260 (或类似端口)。
可用端点
REST API终结点:
GET /weatherforecast-获取默认城市的5天预测GET /weatherforecast/{city}-获取特定城市的5天天气预报GET /swagger-Swagger用户界面文档
您可以使用 WeatherMcp.http 文件。例子:
### Get weather forecast for London
GET http://localhost:5260/weatherforecast/London
Accept: application/json
MCP端点:
POST /-用于所有MCP通信的MCP JSON-RPC端点
使用以下方法测试MCP端点 WeatherMcp.mcp.http示例:
### Call GetWeatherForecastForCity Tool
POST http://localhost:5260/
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "GetWeatherForecastForCity",
"arguments": {
"city": "Amsterdam"
}
}
}
MCP检查器集成
您可以使用MCP检查器与MCP服务器进行交互:
npx @modelcontextprotocol/inspector
这提供了一个基于web的界面来测试MCP工具并探索服务器功能。
Claude桌面集成
要将此MCP服务器连接到Claude Desktop,请将以下内容添加到您的 claude_desktop_config.json 文件:
{
"mcpServers": {
"weather": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:5260"
]
}
}
}
测试应用程序
单元测试
运行综合测试套件:
# Run all tests
dotnet test
# Run tests with verbose output
dotnet test --verbosity normal
# Run specific test project
dotnet test WeatherMcp.Tests
该项目包括22项测试,涵盖:
- 气象服务功能
- REST API端点
- MCP服务器配置
- 气象工具集成
REST API测试
使用提供的HTTP文件测试REST端点:
# Using VS Code REST Client extension or similar tools
# Open and run requests from: WeatherMcp/WeatherMcp.http
请求示例:
- 获取默认天气预报
- 获取伦敦、纽约、东京的天气
- 访问Swagger文档
MCP协议测试
使用MCP HTTP文件测试MCP功能:
# Open and run requests from: WeatherMcp/WeatherMcp.mcp.http
MCP测试场景:
- 初始化MCP会话
- 列出可用工具
- 呼叫
GetWeatherForecast工具 - 呼叫
GetWeatherForecastForCity带参数的工具
开发环境
此存储库包含一个Dev Container配置,该配置提供了一个一致的开发环境。NET 9预安装。这对GitHub Copilot编码代理特别有用,可确保顺利的开发体验。
开发容器快速入门
- 在VS Code中打开此存储库
- 安装“开发容器”扩展
- 按
Ctrl+Shift+P然后选择“开发容器:在容器中重新打开” - 容器将自动设置。NET 9和所有必要的工具
有关开发容器设置的更多详细信息,请参阅 .devcontainer/README.md.
进行更改
开发工作流程
- 设置:使用dev容器实现一致的环境
- 构建:
dotnet build编译解决方案 - 测试:
dotnet test运行单元测试 - 跑:
dotnet watch --project WeatherMcp用于热重载开发 - HTTP测试:使用
.http用于测试REST和MCP端点的文件
项目结构
WeatherMcp/
├── Models/ # Data models (WeatherForecast)
├── Services/ # Business logic (WeatherService)
├── Tools/ # MCP tools (WeatherTools)
├── Program.cs # Application startup and configuration
├── WeatherMcp.http # REST API test requests
└── WeatherMcp.mcp.http # MCP protocol test requests
WeatherMcp.Tests/ # Unit tests for all components
此示例演示了将MCP功能添加到现有API中是多么简单,使它们能够被AI代理和其他兼容MCP的客户端使用。
