任务列表管理服务

一个基于.NET 9的MCP协议实现的简化版任务列表管理服务,提供REST API和MCP工具交互功能。

  • by EJSMiranda
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 EJSMiranda/McpPoc

使用说明

MCP概念证明-待办事项列表(Simplificado)

这是在中实现MCP(Model Context Protocol)服务器的概念证明。NET 9与REST任务列表API(所有列表)交互。 简化版 使用MCP的官方SDK。

建筑

该项目由两个主要组成部分组成:

  1. 所有API -使用CRUD操作管理任务的REST API
  2. 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(部分脚本反构建)

执行步骤

  1. 克隆和恢复依赖关系:

    dotnet restore
    
  2. 建设项目:

    .\build.ps1
    
  3. 运行REST API:

    cd TodoApi
    dotnet run
    

    API将在以下网址提供:http://localhost:5000 Swagger用户界面:http://localhost:5000/swagger

  4. 运行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集成:

  1. 构建服务器:

    cd McpServer
    dotnet publish -c Release -o publish
    
  2. 在克劳德桌面上配置: 编辑 ~/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": {}
        }
      }
    }
    
  3. 使用Claude扩展在VS Code中配置: 在扩展中编辑MCP服务器的设置。

数据实例

该数据库包括示例任务:

  1. “买牛奶”-耳环
  2. “打电话给医生”-完成
  3. “完成MCP项目”-待定

实现的功能(简化版本)

所有API

  • ✅ 完整的 REST API 和 Minimal API
  • ✅ 数据访问模式存储库
  • ✅ 带有SQLite(临时文件)的核心实体框架
  • ✅ 6个CRUD端点+搜索+健康检查
  • ✅ 自动Swagger/OpenAPI文档
  • ✅ 为本地开发配置的CORS
  • ✅ 预加载的示例数据

MCP服务器(简化)

  • ✅ 官方SDK ModelContextProtocol(v1.1.0)
  • ✅ HostBuilder 的 AddMcpServer() y WithToolsFromAssembly()
  • ✅ 7个属性定义的工具 [McpServerTool]
  • ✅ 从参数自动生成JSON模式
  • ✅ 自动名称转换(Camelcase→Snake_Case)
  • ✅ 自动依赖注入(TodoApiClient)
  • ✅ SDK处理的STDIO协议
  • ✅ 自动错误处理

简化的好处

  • 代码减少90%:在program.cs中从~400行到~40行
  • 曼托:带有属性的声明性代码
  • 灭绝:添加新工具就像添加方法一样简单
  • Robustez:SDK处理协议、错误和序列化
  • 标准:符合当前MCP规范

即将改进

  1. 实际持久性:用PostgreSQL替换内存中的SQLite
  2. 认证:添加JWT以确保安全
  3. Metricas:添加日志记录和性能指标
  4. 码头工人:为每个组件创建Docker容器
  5. 测试:添加单元和集成测试

许可证

该项目是一个概念证明,以证明MCP与。净。