构建一个 .NET MCP 服务器,暴露你现有的服务
何时使用: 你在用 .NET,想要向代理暴露业务逻辑而无需重写。
前置条件
- .NET 8+ SDK —
dotnet --version
步骤
-
创建项目dotnet new console -n MyMcpServer。添加
ModelContextProtocolNuGet。对 MCP 使用最小宿主模板。✓ 已复制→ csproj 和 Program.cs,包含 MCP 宿主服务 -
添加工具创建一个带有
[McpServerToolType]的静态类。添加一个用[McpServerTool(Description="...")]装饰的方法GetOrder(string id),该方法通过 DI 调用我现有的 OrderService。✓ 已复制→ 工具编译,描述来自属性 -
用 inspector 测试以 stdio 方式运行服务器。通过
npx @modelcontextprotocol/inspector dotnet run启动 MCP Inspector。调用 GetOrder。✓ 已复制→ 工具调用返回 order JSON
结果: 一个完整的、类型安全的 MCP 服务器,复用你现有的 .NET 服务和 DI 容器。
注意事项
- 作为类上实例方法的工具方法需要 DI 才能工作 — 在 ServiceCollection 中注册包含该方法的类;SDK 通过 DI 解析
- 没有正确取消令牌的异步方法在关闭时会挂起 — 在每个工具方法上接受
CancellationToken ct作为最后一个参数——SDK 会自动注入