任务管理API扩展

通过MCP协议扩展现有任务管理API,支持跨会话任务协作和GitHub Copilot集成。

  • by tmaregge
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 tmaregge/MCP-workshop

使用说明

MCP研讨会

引言

我们将把MCP添加到现有的两个API中。API-et lar en vice,oprette,redigere og slette opggaver。例如,我们打算这样做。GitHub Copilot用于跨会话处理任务。

如果你被卡住了,请查看中的提交历史记录 解决方案行业.

任务-1:基本发现

  1. Klon回购: git clone https://github.com/tmaregge/MCP-workshop.git
  2. 安装软件包 :
    dotnet add package ModelContextProtocol --prerelease
    dotnet add package ModelContextProtocol.AspNetCore --prerelease
    dotnet add package Microsoft.Extensions.Hosting
    
  3. 驱动B-迁移:
    dotnet tool install -g dotnet-ef
    dotnet ef database update
    
  4. Bygg løsning og kjør
  5. 设置几周。

任务0:设置MCP

⚙️ 配置项目

添加以下内容 builder 我 Program.cs:

builder.Services
    .AddMcpServer()
    .WithHttpTransport() 
    .WithToolsFromAssembly();

.HttpTransport() 指定MCP应在HTTP端点可用。 .WithToolsFromAssembly() 按照我们在项目中定义的工具自动可用。另一种选择是由专业工程师和工程师组成 .WithTools<IFooTool>().

为了使MCP端可用,我们需要将其归档:

app.MapMcp("/mcp");

📁 映射结构

在项目中保持以下结构:

/MCP
    /Tools
        TodoTool.cs

🧩 TodoTool.cs

打开文件 TodoTool.cs 内容如下:

using System.ComponentModel;
using ModelContextProtocol.Server;

namespace TodoApi.MCP.Tools;

[McpServerToolType]
public class TodoTool
{
    [McpServerTool, Description("Test")]
    public static string Echo(string message) => $"hello {message}";
}

🧪 MCP检验员

MCP检查员er et nyttig verktøy foråfeilsøke MCP。您可能需要安装 npm/npx如果你以前没有。

启动程序vedåkjøre følgende kommando fra prosjekets rotmappe:

npx @modelcontextprotocol/inspector dotnet run

然后选择:

  • 运输类型: Streamable HTTP
  • 网址: http://localhost:5056/mcp

按 连接. 现在,您可以列出工具并调用它们。试着开车 Echo-alt fungerer的åverifier工具集。


🧠 将MCP服务器连接到IDE

要在IDE中通过GitHub Copilot使用我们的MCP工具,必须对其进行配置。基于IDE,这有点不同,但这意味着要建立一个 mcp.json-文件,告诉如何访问MCP服务器。这里还配置了外部MCP服务器(例如GitHub MCP)。

VS Code

  1. 按 CTRL + Shift + P
  2. Velg MCP:添加服务器
  3. Velg 超文本传输协议
  4. 写进去。 http://localhost:5056/mcp

JetBrains骑手

  1. 打开 副驾驶
  2. 激活 代理模式
  3. 推。 verktøysymbolet → 添加更多工具

这打开了。 intellij/mcp.json (i应用数据)。 限制以下配置(与VS代码一样):

{
  "inputs": [],
  "servers": {
    "TodoMcpServer": {
      "url": "http://localhost:5056/mcp"
    }
  }
}

🚀 推动项目。

Bygg og启动项目:

dotnet build
dotnet run

项目运行时:

  • 推。 工具符号 在Copilot Chat窗口中查找 Echo-工具。Huk av boksen。
  • 在Rider中,按下。 配置模型访问权限 确保模型可以访问这些工具。
  • 告诉Copilot在自愿输入的情况下调用工具。
  • 利润

任务1:todo-API的滞后工具

在这项任务中,您将添加一些工具,以便与todo API进行交互。

使用以下方法 ITodoRepository 实施工具以执行以下操作:

  1. 为给定用户显示两次
  2. Opplete todo
  3. 周末
  4. 更新一周的新信息

我希望你能保持功能易于上手。每次都可以添加更高级的过滤和类似功能。看看代理能够用相对简单的工具做什么!

Når du er ferdig medålage工具可用于测试:

  • 分解特定任务中的功能
  • 总结最重要的任务。
  • 根据以下因素分配优先事项
  • 与给定主题/标签相关的周列表
  • 删除两周完成。

💡 提示:

  • 在使用 Copilot 之前使用 MCP Inspector 测试工具
  • 使用API周的顺序来建立数据并验证工作是否正常。
  • 箱子 McpException 当你想向用户显示错误时
  • 如果Copilot中没有显示工具,则必须重新启动MCP连接。在VS Code中,您可以在 mcp.json文件

任务2:发出提示

MCP服务器可以定义术语 Prompts 有些人可以通过特工联系我。这些用于写作 / 后跟提示名称,例如。 /list 获得一个可用于列出两周的提示。提示可用于定义正常工作的歌词,为了减少你需要写的文本量,霍夫登律师事务所代理科姆比纳斯琼等。

打开文件 MCP/Prompts/TodoPrompts.cs 地毯铺开了。以下是一个示例 文档:

[McpServerPromptType]
public static class MyPrompts
{
    [McpServerPrompt, Description("Creates a prompt to summarize the provided message.")]
    public static ChatMessage Summarize([Description("The content to summarize")] string content) =>
        new(ChatRole.User, $"Please summarize this content into a single sentence: {content}");
}

函数返回1 ChatMessage-当您写作时,在Copilot聊天框中粘贴一条消息的对象。 /summarize您可以返回一个列表 ChatMessage 以模拟对话。例如,您可以使用以下命令输入系统提示 ChatRole.System.

以下是一些你可以迅速采取行动的例子:

  • 与相关事项相对滞后(坤tittel,feks)
  • 详细报告本周的工作(执行了什么以及何时完成)
  • 根据优先级排序两次,并使用表情符号表示不同级别
  • 不管你怎么想。?只有幻想设置边界✋🌈🤚

💡 提示:

  • 要公开Prompts,您必须调用 .WithPromptsFromAssembly() i服务构建器en
  • 与工具一样,您可能需要重新启动MCP连接才能显示。

表3:启发

启发式允许MCP服务器要求用户提供额外的输入。Dersom Elimination触发了弹出的医学信息。

要在给定的工具中添加激励步骤,您必须执行以下操作:

  • 添加 McpServer 通过依赖注入作为函数参数
  • 定义如何携带信息 ElicitRequestParams.RequestSchema
  • 卡尔 McpServer.ElicitAsync 使用定义的模式

编解码器可用于此 文章,男人legg merke直到 IMcpServer 为了利益而弃用 McpServer.

使用Elicitation执行以下操作:

  • 祈祷用户辞职 Creator 和 Title 如果丢失
  • 通过删除以下两周来请求额外确认 Priority 呃 High 或 Urgent
  • 还有其他很酷的想法吗?-什么?😉

表4:身份验证(nørds的奖金🤓)

目前API的安全性为零。我们可以通过发送一个关键名称来查看和编辑其他人被使用了两次 Creator在请求和数据库对象上放置标志,以防止不称职的访问。蒂尔冈。

如果你已经走了这么远,你不需要太多的帮助,但这里有一个。 有用的物品 😉

双重奖励:通过HTTPS而不是HTTP公开两个API。