使用说明
MCP概念证明-待办事项列表(Simplificado)
这是在中实现MCP(Model Context Protocol)服务器的概念证明。NET 9与REST任务列表API(所有列表)交互。 简化版 使用MCP的官方SDK。
建筑
该项目由两个主要组成部分组成:
- 所有API -使用CRUD操作管理任务的REST API
- MCP 服务器 -简化的MCP服务器,公开与API交互的工具
使用的技术
- .NET 9
- ASP。NET核心最低API
- 带有SQLite(临时文件)的核心实体框架
- ModelContextProtocol 官方 SDK
- 微软。扩展。托管para-HostBuilder
- 系统。文本。Json-准序列化
项目结构(简化)
McpPoc/
├── TodoApi/ # API REST
│ ├── Models/ # Modelos de datos
│ ├── Data/ # Contexto de base de datos
│ ├── Repositories/ # Patrón Repository
│ ├── Program.cs # Configuración Minimal API
│ └── TodoApi.csproj
├── McpServer/ # Servidor MCP Simplificado
│ ├── Clients/ # Cliente HTTP para API
│ ├── Tools/ # Herramientas MCP con atributos
│ │ └── TodoTools.cs # Definición de herramientas con [McpServerTool]
│ ├── Program.cs # HostBuilder con AddMcpServer()
│ └── McpServer.csproj
├── build.ps1 # Script de build
├── test_mcp.py # Script de prueba MCP
├── test_tool.py # Script de prueba de herramientas
└── McpPoc.sln # Solución .NET
安装和执行
先决条件
- .NET 9 SDK
- PowerShell(部分脚本反构建)
执行步骤
-
克隆和恢复依赖关系:
dotnet restore -
建设项目:
.\build.ps1 -
运行REST API:
cd TodoApi dotnet runAPI将在以下网址提供:http://localhost:5000 Swagger用户界面:http://localhost:5000/swagger
-
运行MCP服务器:
cd McpServer dotnet run
API REST的终结点
CRUD操作
GET /api/todos-列出所有任务GET /api/todos/{id}-按ID获取任务POST /api/todos-创建新任务PUT /api/todos/{id}-更新任务DELETE /api/todos/{id}-删除任务GET /api/todos/search?q={query}-按内容搜索任务
数据模型
{
"id": 1,
"title": "Comprar leche",
"description": "Ir al supermercado",
"isCompleted": false,
"createdAt": "2024-01-15T10:30:00Z"
}
可用的MCP工具
MCP服务器提供以下工具:
list_todos
列出所有任务。
{
"name": "list_todos",
"description": "List all todo items"
}
get_todo
按ID获取特定任务。
{
"name": "get_todo",
"description": "Get a specific todo item by ID",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Todo item ID"
}
},
"required": ["id"]
}
}
create_todo
创建新任务。
{
"name": "create_todo",
"description": "Create a new todo item",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Todo title"
},
"description": {
"type": "string",
"description": "Todo description"
}
},
"required": ["title", "description"]
}
}
update_todo
更新现有任务。
{
"name": "update_todo",
"description": "Update an existing todo item",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Todo item ID"
},
"title": {
"type": "string",
"description": "Todo title"
},
"description": {
"type": "string",
"description": "Todo description"
},
"isCompleted": {
"type": "boolean",
"description": "Whether the todo is completed"
}
},
"required": ["id", "title", "description", "isCompleted"]
}
}
delete_todo
按ID删除任务。
{
"name": "delete_todo",
"description": "Delete a todo item by ID",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Todo item ID"
}
},
"required": ["id"]
}
}
search_todos
按内容搜索任务。
{
"name": "search_todos",
"description": "Search todo items by content",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query"
}
},
"required": ["query"]
}
}
MCP配置
要将此MCP服务器与Claude Desktop或VS Code集成:
-
构建服务器:
cd McpServer dotnet publish -c Release -o publish -
在克劳德桌面上配置: 编辑
~/AppData/Roaming/Claude/claude_desktop_config.json(Windows)o~/Library/Application Support/Claude/claude_desktop_config.json(macOS):{ "mcpServers": { "todo-server": { "command": "dotnet", "args": ["C:\\ruta\\completa\\a\\McpServer\\publish\\McpServer.dll"], "env": {} } } } -
使用Claude扩展在VS Code中配置: 在扩展中编辑MCP服务器的设置。
数据实例
该数据库包括示例任务:
- “买牛奶”-耳环
- “打电话给医生”-完成
- “完成MCP项目”-待定
实现的功能(简化版本)
所有API
- ✅ 完整的 REST API 和 Minimal API
- ✅ 数据访问模式存储库
- ✅ 带有SQLite(临时文件)的核心实体框架
- ✅ 6个CRUD端点+搜索+健康检查
- ✅ 自动Swagger/OpenAPI文档
- ✅ 为本地开发配置的CORS
- ✅ 预加载的示例数据
MCP服务器(简化)
- ✅ 官方SDK ModelContextProtocol(v1.1.0)
- ✅ HostBuilder 的
AddMcpServer()yWithToolsFromAssembly() - ✅ 7个属性定义的工具
[McpServerTool] - ✅ 从参数自动生成JSON模式
- ✅ 自动名称转换(Camelcase→Snake_Case)
- ✅ 自动依赖注入(TodoApiClient)
- ✅ SDK处理的STDIO协议
- ✅ 自动错误处理
简化的好处
- 代码减少90%:在program.cs中从~400行到~40行
- 曼托:带有属性的声明性代码
- 灭绝:添加新工具就像添加方法一样简单
- Robustez:SDK处理协议、错误和序列化
- 标准:符合当前MCP规范
即将改进
- 实际持久性:用PostgreSQL替换内存中的SQLite
- 认证:添加JWT以确保安全
- Metricas:添加日志记录和性能指标
- 码头工人:为每个组件创建Docker容器
- 测试:添加单元和集成测试
许可证
该项目是一个概念证明,以证明MCP与。净。