.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
⚠️ 数据在内存中。 进程重新启动时,联系人将丢失。
______________________________________________________________________
需求
- .NET SDK 9.0
- Node.js (为
npx mcp-remote) - 克劳德桌面 (通过MCP进行测试)
______________________________________________________________________
运行服务器
从解决方案根目录(或项目文件夹)运行:
dotnet run --project ManageContacts.McpServer默认情况下(请参见 launchSettings.json),应用程序会监听:
http://localhost:5096MCP终点为:
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 以存储数据。
______________________________________________________________________
故障排除
- 克劳德看不到工具/没有工具出现
- 确保服务器正在运行 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.
