联系人管理MCP服务器

一个基于.NET 9的最小化MCP(模型上下文协议)HTTP服务器,用于创建和列出内存中的联系人,适用于教程和快速实验。

  • by evgomes
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 evgomes/mcp-dotnet-manage-contacts

使用说明

.NET MCP服务器

最低限度 MCP(模型上下文协议)HTTP服务器 实现于 .NET 9 这暴露了两个工具 创建 和 列表 已存储联系人 纪念。它专为教程和快速实验而设计,并包括使用以下工具进行测试的说明 克劳德桌面 通过 mcp-remote.


里面是什么

ManageContacts.McpServer/
├─ Tools/
│  └─ ContactTools.cs            # MCP tools: create-contact, list-contacts
├─ Properties/
│  └─ launchSettings.json        # Dev profile on http://localhost:5096
├─ appsettings.json
├─ ManageContacts.McpServer.csproj
└─ Program.cs                    # ASP.NET Core host + MCP HTTP transport (/mcp)

工具

命名空间: ManageContacts.McpServer.Tools.ContactTools

  • create-contact

    • 说明: 创建新联系人并将其存储在内存中。

    • 参数:

      • fullName (字符串,必填) –联系人的全名。
      • email (字符串,必填) –联系人的电子邮件地址。
    • 退货: { fullName, email }

  • list-contacts

    • 说明: 列出内存存储中的联系人,可选择按姓名/电子邮件进行筛选。

    • 参数:

      • searchTerm (字符串,可选) –不区分大小写的子字符串与姓名或电子邮件匹配。
    • 退货: Array<{ fullName, email }>

⚠️ 数据在内存中。 进程重新启动时,联系人将丢失。


需求

  • .NET SDK 9.0
  • Node.js (为 npx mcp-remote)
  • 克劳德桌面 (通过MCP进行测试)

运行服务器

从解决方案根目录(或项目文件夹)运行:

dotnet run --project ManageContacts.McpServer

默认情况下(请参见 launchSettings.json),应用程序会监听:

http://localhost:5096

MCP终点为:

http://localhost:5096/mcp

使用Claude Desktop进行测试

此项目旨在使用 HTTP传输 与Anthropic的 克劳德桌面 通过 mcp-remote.

1) 启动MCP服务器

dotnet run --project ManageContacts.McpServer

确认它正在运行 http://localhost:5096/mcp.

2) 配置Claude桌面

使用您提供的配置。在……里面 克劳德桌面:

  • 打开 设置→ 开发者→ 编辑配置 (或您版本中的等效配置编辑器)。
  • 粘贴以下JSON:
{
  "mcpServers": {
    "manage-contacts": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:5096/mcp"]
    }
  }
}

保存配置并 重新启动克劳德桌面.

这有什么作用:克劳德会跑 npx -y mcp-remote http://localhost:5096/mcp,它将Claude的MCP客户端连接到您的HTTP MCP服务器。

3) 在聊天中使用工具

打开与Claude的新聊天,尝试以下提示:

  • “创建名为的联系人 艾伦·雷普利 通过电子邮件 ellen@test.com."
  • “列出所有联系人。”
  • “列出包含以下内容的联系人 艾伦 姓名或电子邮件。"

克劳德应该决定打电话给:

  • create-contact 随着 { "fullName": "...", "email": "..." }
  • list-contacts 随着 { "searchTerm": "..." } (或无参数)

您将在聊天中看到工具调用结果,您的服务器日志将显示传入的MCP请求。


它是如何工作的(快速浏览)

  • 程序cs

    builder.Services
        .AddMcpServer()
        .WithHttpTransport()
        .WithToolsFromAssembly();
    
    app.MapMcp("/mcp");
    

    这将注册MCP服务器,启用 HTTP传输,扫描组件以查找 [McpServerTool] 方法,并将其公开在 /mcp.

  • ContactTools.cs

    • 装饰有 [McpServerToolType] 有待发现。
    • 标记为的两个公共方法 [McpServerTool(Name = "...")] 以暴露工具。
    • 使用简单的内存 List<Contact> 以存储数据。

故障排除

  • 克劳德看不到工具/没有工具出现

    • 确保服务器正在运行 http://localhost:5096/mcp.
    • 编辑配置后重新启动Claude Desktop。
    • 检查一下 npx 可用(node -v / npm -v 工作)。
    • 验证JSON配置(没有尾随逗号,引号正确)。
  • 端口冲突/服务器无法启动

    • 另一个进程可能正在使用端口 5096.更改 applicationUrl 在……里面 launchSettings.json,或运行:

      ASPNETCORE_URLS=http://localhost:6000 dotnet run --project ManageContacts.McpServer
      

      然后相应地更新Claude配置URL。

  • 重启后工具重置

    • 预期:为了简化教程,存储在内存中。

鸣谢

  • 内置于 模型上下文协议 (ModelContextProtocol 和 ModelContextProtocol.AspNetCore – 0.3.0-preview.3).
  • 通过测试 克劳德桌面 使用 mcp-remote.