使用说明
HelloMCP - 模型上下文协议服务器
本项目展示了如何创建一个.NET Web API,该API同时作为MCP(模型上下文协议)服务器,使用SSE(服务器发送事件)传输方式,使您能够通过聊天界面与API进行交互。
特点/特性
查克·诺里斯笑话API
- 获取随机的查克·诺里斯笑话
- 按类别获取笑话
- 按文本搜索笑话
- 列出可用类别
天气预报API
- 获取多天天气预报
- 获取今天的天气
- 获取天气概要
可用的MCP工具
查克·诺里斯工具(或“查克·诺里斯专属工具”,根据语境可灵活翻译)
GetRandomChuckNorrisJokeAsync- 获取一个随机的查克·诺里斯笑话GetChuckNorrisJokeByCategoryAsync- 从特定类别中获取一个笑话(需要类别参数)GetChuckNorrisCategoriesAsync- 列出所有可用的笑话类别SearchChuckNorrisJokesAsync- 通过文本内容搜索笑话(需要查询参数)
天气工具
GetWeatherForecastAsync- 获取1至14天的天气预报(可选天数参数,默认5天)GetTodaysWeatherAsync- 获取今天的实时天气GetWeatherSummaryAsync- 获取包含建议的3天天气概要
运行MCP服务器
快速入门
-
启动MCP服务器:
cd HelloMCP dotnet run服务器将在
http://localhost:5281 -
验证SSE端点是否正常工作:
curl -i http://localhost:5281/mcp/sse你应该看到:
HTTP/1.1 200 OK Content-Type: text/event-stream ... event: endpoint data: /mcp/message?sessionId=<session-id>
与基于Web的MCP聊天系统配合使用
要使用此MCP服务器与基于网页的MCP聊天客户端(位于https://daodao97.github.io/chatmcp/)进行连接:
-
启动服务器:
cd HelloMCP dotnet run -
打开MCP聊天网页界面: 在您的浏览器中打开 https://daodao97.github.io/chatmcp/
-
配置MCP服务器:
- 点击设置/配置图标
- 添加一个具有以下设置的新MCP服务器:
- 姓名: 你好,MCP(这里MCP可能指某个特定的人、组织或项目,具体含义需根据上下文确定)
- 运输方式: 上海证券交易所
- 网址:
http://localhost:5281/mcp/sse - 描述: 查克·诺里斯笑话和天气预报
-
连接并开始聊天:
- 选择HelloMCP服务器
- 开始提问,比如:
- “给我讲个关于查克·诺里斯的笑话”
- “来个关于编程的笑话”
- “有哪些类型的笑话可供选择?”
- “搜索关于电脑的笑话”
- “今天天气怎么样?”
- “给我一份7天的天气预报”
配置文件
这个(或“该”) mcp-config.json 文件包含服务器配置:
{
"mcpServers": {
"hellomcp": {
"transport": {
"type": "sse",
"url": "http://localhost:5281/mcp/sse"
},
"description": "HelloMCP server with Chuck Norris jokes and weather forecasts"
}
}
}
测试工具
一旦连接成功,您就可以使用自然语言与工具进行交互:
查克·诺里斯的例子:
- “给我讲一个随机的查克·诺里斯笑话”
- “来一个关于查克·诺里斯和计算机的笑话”
- “显示所有笑话类别”
- “搜索包含‘网络’的笑话”
天气示例:
- “今天的天气怎么样?”
- “给我一份10天的天气预报”
- “接下来几天的天气概况是什么?”
项目结构
HelloMCP/
├── Controllers/
│ ├── JokesController.cs # Chuck Norris jokes REST API
│ └── WeatherForecastController.cs # Weather forecast REST API
├── Services/
│ ├── Interfaces/
│ │ ├── IChuckNorrisService.cs # Chuck Norris service interface
│ │ └── IWeatherService.cs # Weather service interface
│ ├── ChuckNorrisService.cs # Chuck Norris API integration
│ └── WeatherService.cs # Weather forecast service
├── Tools/
│ ├── ChuckNorrisMcpTools.cs # MCP tools for Chuck Norris jokes
│ └── WeatherMcpTools.cs # MCP tools for weather
├── Models/
│ └── ChuckNorrisJoke.cs # Data models
└── Program.cs # Application startup with MCP configuration
API终端点
查克·诺里斯笑话
GET /jokes/random- 获取一个随机笑话GET /jokes/categories- 获取所有类别GET /jokes/category/{category}- 按类别获取笑话GET /jokes/search?query={query}- 搜索笑话
天气
GET /weatherforecast?days={days}- 获取天气预报GET /weatherforecast/today- 获取今天的天气
依赖项
- 模型上下文协议 (v0.4.0-preview.2) - MCP服务器功能
- Microsoft.AspNetCore.OpenApi 翻译为中文是“Microsoft.AspNetCore(ASP.NET Core)的OpenApi(开放API)组件” API文档
配置
MCP服务器已配置在 Program.cs:
builder.Services.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();
这会自动发现并注册所有类到 [McpTool] 将属性作为聊天交互的可用工具。
示例聊天互动
用户: “给我讲个编程笑话”
助手: 用途 get_chuck_norris_joke_by_category 带有“开发(dev)”类别
用户: “这周天气会怎么样?”
助手: 用途 get_weather_forecast (期限)7天
用户: “找一些关于电脑的笑话”
助手: 用途 search_chuck_norris_jokes 使用“计算机”进行查询
MCP工具提供丰富、格式化的回复,包含表情符号和有用信息,使聊天互动既有趣又富有信息量。