预订API MCP服务器(.NET)
中的模型上下文协议(MCP)服务器实现。NET,通过标准化的MCP工具提供对Book API的访问。该服务器使AI助手和其他兼容MCP的客户端能够通过MCP协议与图书数据进行交互。
概述
此MCP服务器充当MCP客户端(如Cursor、Claude Desktop或其他AI助手)与RESTful Book API之间的桥梁。它将图书管理操作作为MCP工具公开,允许客户端通过标准化的MCP协议对图书执行CRUD操作。
这个。此MCP服务器与之交互的.NET Book API后端位于: .
特性
- ✅ 书籍的完整CRUD操作
- ✅ 符合MCP协议2024-11-05
- ✅ 使用Serilog进行结构化日志记录
- ✅ 依赖注入和配置管理
- ✅ 具有自动模式生成功能的类型安全工具定义
- ✅ JSON序列化支持
先决条件
- .NET 10.0 SDK 或以后
- 正在运行的Book API实例(默认值:
http://localhost:5288)
安装
- 克隆存储库:
git clone
cd book-api-mcp-server-dotnet- 恢复依赖关系:
dotnet restore- 构建项目:
dotnet build配置
编辑 appsettings.json 要配置服务器,请执行以下操作:
{
"BookApi": {
"BaseUrl": "http://localhost:5288"
},
"Serilog": {
"MinimumLevel": {
"Default": "Debug"
}
}
}关键配置选项
- BookApi。BaseUrl:Book API终结点的基本URL
- Serilog:日志记录配置(请参阅 Serilog文档)
使用游标
要将此MCP服务器与Cursor一起使用,请将以下内容添加到您的 ~/.cursor/mcp.json:
{
"mcpServers": {
"book-api-mcp-server-dotnet": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/book-api-mcp-server-dotnet/BookApiMcpServer.csproj"],
"env": {}
}
}
}添加配置后,重新启动Cursor以启用MCP服务器。
可用的MCP工具
服务器公开以下工具(自动转换为snake_case):
get_books
从API检索所有书籍。
参数: 无
退货: 书籍列表(JSON字符串)
get_book_by_id
按ID检索特定书籍。
参数:
id(整数,必填):图书ID
退货: 图书对象(JSON字符串)
create_book
创建一本新书。
参数:
book(object,必填):具有以下属性的图书对象:
- id (整数) - title (字符串) - author (字符串) - isbn (字符串) - publishedDate (字符串,ISO 8601日期时间) - createdAt (字符串,ISO 8601日期时间)
退货: 已创建图书对象(JSON字符串)
update_book
更新现有书籍。
参数:
book(object,必填):具有更新属性的图书对象
退货: 更新的图书对象(JSON字符串)
delete_book
按ID删除书籍。
参数:
id(整数,必填):要删除的图书ID
退货: 已删除的图书对象(JSON字符串)
建筑
项目结构
BookApiMcpServer/
├── Models/
│ ├── Book.cs # Book entity model
│ └── BookApiConfig.cs # API configuration model
├── Services/
│ └── BookService.cs # HTTP client service for Book API
├── Tools/
│ └── BookTools.cs # MCP tool definitions
├── Program.cs # Application entry point
├── appsettings.json # Configuration file
└── BookApiMcpServer.csproj # Project file关键组件
程序cs
- 使用stdio传输配置MCP服务器
- 设置依赖注入
- 配置Serilog日志记录
- 从程序集中注册MCP工具
BookTools.cs
- 使用定义MCP工具
[McpServerTool]属性 - 工具会自动被发现和注册
- 方法名称被转换为snake_case(例如。,
GetBooks→get_books) - 描述用于工具文档
图书服务cs
- 封装对Book API的HTTP调用
- 用途
HttpClient用于API通信 - 处理JSON序列化/反序列化
模型
- Books:表示图书实体
- BookApiConfig.cs:API设置的配置模型
MCP协议集成
服务器使用 ModelContextProtocol NuGet包要:
- 在stdio上实现JSON-RPC 2.0协议
- 从方法签名自动生成工具模式
- 处理请求/响应序列化
- 支持MCP协议版本2024-11-05
依赖项
- 微软。扩展。托管 (9.0.10):托管基础设施
- 模型上下文协议 (0.4.0-preview.3):MCP协议实施
- Serilog。AspNetCore (8.0.3):结构化日志记录
- Serilog。设置。配置 (8.0.4):基于配置的日志记录设置
- Serilog。水槽。控制台 (6.0.0):控制台日志输出
测试
该项目包括验证MCP服务器功能的测试脚本:
测试MCP连接
python3 test_mcp.py测试获取书籍工具
python3 test_get_books_mcp.py测试按ID获取图书
python3 test_get_book.py这些脚本演示了:
- MCP协议初始化
- 工具发现
- 工具调用
- 响应解析
运行服务器
发展模式
dotnet run生产构建
dotnet build -c Release
dotnet bin/Release/net10.0/BookApiMcpServer.dll发布以供分发
dotnet publish -c Release -o ./publish日志记录
服务器使用Serilog进行结构化日志记录。日志以时间戳和日志级别写入控制台。日志记录配置可以在中进行调整 appsettings.json.
错误处理
- 记录API连接错误,并将其作为适当的MCP错误响应返回
- 无效的工具参数会导致验证错误
- 失败的API调用返回空结果(如果适用)
发展
添加新工具
要添加新的MCP工具:
- 添加静态方法
BookTools.cs(或创建新的工具类) - 用…装饰
[McpServerTool]和[Description("...")]属性 - 工具通过以下方式自动发现
WithToolsFromAssembly()
例子:
[McpServerTool, Description("Search books by title")]
public static async Task
> SearchBooks(
BookService bookService,
string query)
{
// Implementation
}项目属性
- 目标框架: .净值10.0
- 输出类型:可执行\*\*
- 隐性使用:已启用
- 可为空的引用类型:已启用
许可证
\[在此处添加您的许可证信息\]
贡献
\[在此处添加贡献指南\]
