使用说明
RR。MCP服务器
C#中的模型上下文协议(MCP)服务器实现,通过DummyJSON API提供配方管理工具。该服务器演示了如何构建MCP工具,以便与强大的错误处理和日志记录进行外部API集成。
概述
此MCP服务器向AI助手和其他MCP客户端公开与配方相关的功能。它提供了用于从DummyJSON API搜索、检索和浏览食谱的工具,以及用于测试连接的简单回声工具。
特性
- 配方管理工具:
- 按ID获取食谱
- 按查询搜索食谱
- 通过分页、排序和字段选择浏览食谱
- 回声工具:用于测试的简单消息回声
- 稳健的错误处理:全面的验证和错误报告
- 结构化日志记录:具有适当日志级别的控制台日志记录
- 类型安全DTO:API响应的良好定义的数据传输对象
技术栈
- 框架: .净值9.0
- MCP库:ModelContextProtocol v0.3.0-review.3
- HTTP客户端:微软。扩展。API调用的Http
- 依赖注入:微软。扩展。依赖注入
- 日志记录:微软。扩展。使用控制台输出进行日志记录
- 配置:微软。扩展。支持JSON的配置
项目结构
RR.MCPServer/
├── RR.MCPServer/ # Main executable project
│ ├── Program.cs # Application entry point and MCP server setup
│ ├── appsettings.json # Configuration (DummyJSON API URL)
│ └── RR.MCPServer.csproj # Project file
├── RR.MCPServer.Tool/ # MCP tools implementation
│ └── DummyJsonTool.cs # Recipe API tools
├── RR.MCPServer.Dto/ # Data transfer objects
│ ├── RecipeDto.cs # Individual recipe model
│ └── RecipeSearchDto.cs # Recipe search results model
└── .vscode/
└── mcp.json # VS Code MCP client configuration
可用工具
1.回声工具
- 目的:测试服务器连接
- 方法:
Echo(string message) - 退货:
"hello {message}"
2.按ID获取配方
- 目的:通过其唯一标识符检索特定配方
- 方法:
GetRecipeByIdAsync(int recipeId) - 参数:
recipeId:配方的唯一标识符
- 退货:JSON序列化配方数据
3.搜索食谱
- 目的:使用查询字符串搜索食谱
- 方法:
SearchRecipeAsync(string query) - 参数:
query:搜索词以查找食谱
- 退货:JSON序列化搜索结果
4.获取食谱(浏览)
- 目的:使用高级选项浏览食谱
- 方法:
GetRecipesAsync(...) - 参数:
limit:要检索的配方数量(默认值:10,全部使用0)skip:分页时要跳过的食谱数量(默认值:0)select:要选择的逗号分隔字段(可选)sortBy:要排序的字段名(可选)order:排序顺序“asc”或“desc”(默认:“asc“)
- 退货:带分页信息的JSON序列化配方列表
先决条件
- .NET 9.0 SDK
- Visual Studio代码(建议用于MCP集成)
安装和设置
-
克隆存储库:
git clone <repository-url> cd RR.MCPServer -
恢复依赖关系:
dotnet restore -
构建项目:
dotnet build
运行服务器
选项1:直接执行
cd RR.MCPServer
dotnet run
选项2:VS代码MCP集成
- 确保
.vscode/mcp.json配置存在 - 通过VS Code的MCP客户端访问时,服务器将自动启动
- 配置包括正确的工作目录设置
appsettings.json
选项3:生产建设
dotnet publish -c Release -o ./publish
cd publish
./RR.MCPServer.exe
配置
服务器使用 appsettings.json 配置:
{
"DummyJSON": {
"Url": "https://dummyjson.com"
}
}
示例用法
通过MCP客户端连接后,您可以使用以下工具:
# Echo test
Echo("test") → "hello test"
# Get specific recipe
GetRecipeByIdAsync(1) → Returns Classic Margherita Pizza details
# Search for recipes
SearchRecipeAsync("pizza") → Returns pizza-related recipes
# Browse recipes with pagination
GetRecipesAsync(5, 0) → Returns first 5 recipes
发展
添加新工具
- 在中创建方法
DummyJsonTool.cs或新的工具类 - 用…装饰
[McpServerTool]和[Description]属性 - 在课堂上标记
[McpServerToolType] - 注册
Program.cs使用.WithTools<YourToolClass>()
日志记录
所有操作都会以适当的日志级别记录到stderr中:
- 信息:正常运行
- 警告:非关键问题(例如,未找到结果)
- 错误:验证失败的严重错误
许可证
[在此处包含您的许可证信息]
贡献
[此处包含投稿指南]
