MCPSharp
MCPSharp:为 .NET 平台打造的 Model Context Protocol(MCP)协
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
MCPSharp:为 .NET 平台打造的 Model Context Protocol(MCP)协
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这个场景:你是一个经验丰富的 C# 后端工程师,负责为公司构建内部知识库检索系统。某天产品经理找到你说:「能不能让 AI 助手直接调用你们的检索接口?」你快速调研后发现主流方案是 Anthropic 的 Model Context Protocol(MCP)——一个让 AI 助手与外部工具/数据源交互的标准化协议。但翻遍 GitHub,官方 SDK 只有 TypeScript 和 Python 版本,你的 .NET 项目怎么办?
这就是 MCPSharp 诞生的背景。 它是目前最完整的 .NET 平台 MCP 协议实现,让 C# 开发者无需深入理解 JSON-RPC 底层细节,就能将任意 .NET 方法暴露为 AI 可调用的 MCP 工具。
MCPSharp 由独立开发者 Allen Frise 创建,仓库于 2025 年 2 月上线,至今已获得 373 Stars 和 43 Forks。项目定位明确:做 .NET 生态与 MCP 协议之间的桥梁层,而非重新发明轮子。
项目的技术演进路径非常清晰:
[McpFunction] 属性演进到 [McpTool],以更好对齐 MCP 协议规范MCPSharp 的代码结构遵循典型的 C# 类库设计,采用清晰的职责分层:
MCPSharp/
├── Attributes/ # 声明式 API(4个自定义属性)
│ ├── McpToolAttribute.cs # [McpTool] — 标记工具
│ ├── McpParameterAttribute.cs # [McpParameter] — 参数元数据
│ ├── McpResourceAttribute.cs # [McpResource] — 标记资源
│ └── McpFunctionAttribute.cs # [McpFunction](已废弃)
├── Core/ # 核心运行时
│ ├── MCPServer.cs # 服务端主类(单例模式)
│ ├── MCPClient.cs # 客户端封装
│ ├── MCPFunction.cs # AIFunction 适配器
│ ├── ServerRpcTarget.cs # JSON-RPC 方法路由
│ ├── Tools/ # ToolManager + ToolHandler
│ └── Transport/ # DuplexPipe + SSE 传输层
└── Model/ # 协议数据模型
├── Tool.cs # MCP Tool 对象定义
├── Schemas/ # JSON Schema 定义
├── Parameters/ # 参数解析
├── Results/ # 返回结果
├── Content/ # 内容类型(文本/图片/资源)
└── Capabilities/ # 客户端/服务端能力协商
关键设计决策:
MCPServer 采用单例设计,通过 StartAsync() 自动扫描程序集中标记了 [McpTool] 的方法,极大降低了上手门槛MCPFunction 继承自 Microsoft.Extensions.AI 的 AIFunction 抽象类,实现了与 .NET 官方 AI 工具链的无缝对接| 层次 | 技术选型 | 说明 |
|---|---|---|
| 协议层 | MCP(Model Context Protocol) | Anthropic 主导的 AI 工具交互标准 |
| 传输层 | JSON-RPC 2.0 via StreamJsonRpc | 标准远程过程调用协议 |
| 目标框架 | netstandard2.0 / net8.0 / net9.0 | 覆盖 .NET Framework 4.6+ 及 .NET Core/5+ |
| AI 集成 | Microsoft.Extensions.AI | .NET 9 官方 AI 抽象层 |
| AI 集成 | Semantic Kernel | 微软企业级 AI 应用框架 |
| 发布方式 | NuGet | dotnet add package MCPSharp |
第一步:安装(1分钟)
dotnet add package MCPSharp
第二步:定义工具(三行代码)
using MCPSharp;
public class Calculator
{
[McpTool("add", "Adds two numbers")]
public static int Add([McpParameter(true)] int a, [McpParameter(true)] int b)
{
return a + b;
}
}
第三步:启动服务器(一行代码)
await MCPServer.StartAsync("CalculatorServer", "1.0.0");
整个过程不超过 10 行代码。相比手动实现 MCP 协议的握手、工具列表、参数验证,节省了数百行模板代码。
1. 成熟度存疑:项目目前处于 v0.9.13,尚未发布 1.0 正式版。API 在语义版本(semver)意义上属于预发布状态,生产环境使用存在 API 变更风险。
2. 仅限进程级通信:当前实现的 MCPClient 通过 Process.Start() 启动子进程并通过 stdin/stdout 通信,不支持 HTTP 传输或 WebSocket。这意味着客户端和服务端必须运行在同一台机器上,限制了分布式部署场景。
3. 调试体验有限:虽然支持 XML 文档自动提取,但由于运行时依赖反射和动态注册,IDE 的静态分析和断点调试体验不如显式接口实现。
4. 生态依赖风险:项目依赖 StreamJsonRpc 库,若该库停止维护或出现安全漏洞,MCPSharp 需要快速跟进修复。
MCP 协议正快速成为 AI 工具互联的事实标准,Anthropic、Sourcegraph、Block 等公司已采用。MCPSharp 的出现让 .NET 开发者终于不用在 AI 工具生态中处于旁观者位置——现在可以将任何 C# 业务逻辑(数据库操作、API 调用、文件处理)一键暴露给 AI 助手。
特别值得关注的是 Microsoft.Extensions.AI 集成这一路线选择。随着 .NET 9 的推广,微软正在构建统一的 AI 抽象层,MCPSharp 作为该生态中的 MCP 协议实现,未来有望成为 .NET 企业 AI 应用的标准组件。
本报告基于 GitHub 仓库 afrise/MCPSharp(master分支,2026-06)分析生成。