.NET MCP服务器2
一个全面的模型上下文协议(MCP)服务器。NET CLI命令和实体框架操作作为MCP工具,使用官方Microsoft构建 ModelContextProtocol 图书馆。
与DotNetMcpServer的主要区别
此版本使用 Microsoft ModelContextProtocol库 代替MCPSharp,提供:
- 微软官方支持:基于微软官方MCP库构建
- 主机集成:用途
Microsoft.Extensions.Hosting用于强健的服务器生命周期管理 - 自动工具发现:使用以下命令从部件中自动发现工具
WithToolsFromAssembly() - 简化属性:用途
[McpServerTool]和[Description]属性而不是自定义MCP属性 - 更好的日志记录:将日志记录集成到stderr,以避免干扰MCP通信
体系结构比较
DotNetMcpServer(MCPSharp)
[McpTool("dotnet_version", "Gets the installed .NET version")]
public static async Task GetVersionAsync()
// Registration
MCPServer.Register();
await MCPServer.StartAsync("DotNetMcpServer", "1.0.0");DotNetMcpServer2(模型上下文协议)
[McpServerTool, Description("Gets the installed .NET version")]
public static async Task GetVersionAsync()
// Registration
builder.Services
.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly();特性
核心。NET CLI命令(20多种工具)
- 项目管理:创建、构建、运行、测试、清理和发布。NET项目
- 包管理:添加、删除和列出NuGet包
- 项目引用:管理项目到项目的引用
- 模板操作:列出并从模板创建项目
- 信息命令:得到。NET版本、SDK信息和运行时详细信息
实体框架命令(11个工具)
- 数据库操作:更新、删除和管理数据库
- 迁移管理:添加、删除、列出和脚本迁移
- 操作:列出、构建和优化Contoso类
- 高级功能:创建用于部署的迁移包
解决方案和NuGet管理(12个工具)
- 解决方案操作:添加/删除项目,列出解决方案内容
- NuGet发布:从NuGet源推送和删除包
- 来源管理:添加、删除、更新和列出NuGet源
- 缓存管理:清除并列出NuGet本地缓存
先决条件
- .NET 9.0 SDK或更高版本
- 实体框架CLI工具(用于EF命令):
dotnet tool install --global dotnet-ef
安装与使用
- 克隆和构建:
git clone
cd DotNetMcpServer2
dotnet build- 运行服务器:
cd DotNetMcpServer2
dotnet run- 运行测试:
dotnet testClaude桌面配置
将此条目添加到您的Claude Desktop配置中(claude_desktop_config.json):
{
"mcpServers": {
"dotnet-mcp-server2": {
"command": "dotnet",
"args": [
"run",
"--project",
"C:\\Development\\MCP\\DotNetMcpServer2\\DotNetMcpServer2\\DotNetMcpServer2.csproj"
],
"env": {
"DOTNET_CLI_TELEMETRY_OPTOUT": "1",
"DOTNET_NOLOGO": "1"
}
}
}
}可用的MCP工具
原始DotNetMcpServer中的所有工具都具有相同的功能:
核心命令
GetVersionAsync-得到。NET版本GetInfoAsync-显示详细信息。网络信息ListSdksAsync-列出已安装的SDKCreateProjectAsync-从模板创建新项目BuildAsync-构建项目TestAsync-运行测试(包括--no-build和--no-restore旗帜)PublishAsync-发布项目- 还有更多。..
实体框架命令
UpdateDatabaseAsync-将数据库更新到最新迁移AddMigrationAsync-添加新的迁移ScaffoldDbContextAsync-来自数据库的脚手架ListMigrationsAsync-列出可用的迁移- 还有更多。..
解决方案和NuGet命令
ListProjectsAsync-列出解决方案中的项目AddProjectToSolutionAsync-将项目添加到解决方案中NuGetPushAsync-将包推送到NuGetNuGetListSourceAsync-列出NuGet源代码- 还有更多。..
ModelContextProtocol库的优点
简化开发
- 自动发现:无需手动工具注册
- 标准属性:使用熟悉的
[Description]属性 - 类型安全:具有自动参数绑定的强类型
更好的集成
- 主机型号:与集成。NET托管和依赖注入
- 日志记录:具有可配置级别的内置日志记录基础设施
- 配置:标准。NET配置模式
增强可靠性
- 官方支持:由微软维护
- 稳健的交通:内置stdio传输,具有错误处理功能
- 流程管理:适当的生命周期管理和优雅的关机
性能比较
两个版本都提供相同的功能,但DotNetMcpServer2提供:
- 由于优化了托管,启动时间更长
- 更高效的工具发现和注册
- 改进了错误处理和日志记录
- 更好的资源管理和清理
迁移指南
要从MCPSharp迁移到ModelContextProtocol,请执行以下操作:
- 替换包参考:
- 更新属性:
// Old
[McpTool("tool_name", "Description")]
public static Task MethodAsync([McpParameter(true)] string param)
// New
[McpServerTool, Description("Description")]
public static Task MethodAsync([Description("Parameter description")] string param)- 更新程序cs:
// Old
MCPServer.Register();
await MCPServer.StartAsync("ServerName", "1.0.0");
// New
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddMcpServer().WithStdioServerTransport().WithToolsFromAssembly();
await builder.Build().RunAsync();这一实施提供了同样的全面性。NET CLI功能,采用更现代、更可维护的架构,使用微软官方的MCP库。
