.NET MCP 服务

一个全面的模型上下文协议(MCP)服务器,将.NET CLI命令和Entity Framework操作作为MCP工具公开,允许AI助手和其他MCP客户端通过标准化接口与.NET项目交互。

  • by jamesburton
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 jamesburton/dotnetmcpserver

使用说明

.NET MCP服务器

一个全面的模型上下文协议(MCP)服务器。NET CLI命令和实体框架操作作为MCP工具。这允许AI助手和其他MCP客户端进行交互。NET项目通过标准化接口。

特性

核心。NET CLI命令

  • 项目管理:创建、构建、运行、测试、清理和发布。NET项目
  • 包管理:添加、删除和列出NuGet包
  • 项目引用:管理项目到项目的引用
  • 模板操作:列出并从模板创建项目
  • 信息命令:得到。NET版本、SDK信息和运行时详细信息

实体框架命令

  • 数据库操作:更新、删除和管理数据库
  • 迁移管理:添加、删除、列出和脚本迁移
  • 操作:列出、构建和优化Contoso类
  • 高级功能:创建用于部署的迁移包

解决方案和NuGet管理

  • 解决方案操作:添加/删除项目,列出解决方案内容
  • NuGet发布:从NuGet源推送和删除包
  • 来源管理:添加、删除、更新和列出NuGet源
  • 缓存管理:清除并列出NuGet本地缓存

先决条件

  • .NET 9.0 SDK或更高版本
  • 实体框架CLI工具(用于EF命令): dotnet tool install --global dotnet-ef

安装与使用

  1. 克隆和构建:

    git clone <repository-url>
    cd DotNetMcpServer
    dotnet build
    
  2. 运行服务器:

    cd DotNetMcpServer
    dotnet run
    
  3. 运行测试:

    dotnet test
    

可用的MCP工具

核心命令

工具 说明 必需参数
dotnet_version 正在安装。NET版本 无
dotnet_info 显示详细信息。NET信息 无
dotnet_list_sdks 已安装的列表。NET SDK 无
dotnet_list_runtimes 已安装的列表。NET运行时 无
dotnet_new_list 列出可用的项目模板 无
dotnet_new 从模板创建新项目 template (例如,“控制台”、“webapi”)
dotnet_restore 恢复项目依赖关系 无
dotnet_build 构建项目 无
dotnet_run 运行项目 无
dotnet_test 运行测试 无
dotnet_publish 发布项目以供部署 无
dotnet_clean 清除构建输出 无
dotnet_pack 创建NuGet包 无
dotnet_add_package 添加NuGet包引用 packageName
dotnet_remove_package 删除NuGet包引用 packageName
dotnet_list_packages 列出包引用 无
dotnet_add_reference 添加项目引用 referencePath
dotnet_remove_reference 删除项目引用 referencePath
dotnet_list_references 列出项目引用 无

实体框架命令

工具 说明 必需参数
ef_database_update 将数据库更新为最新迁移 无
ef_database_drop 删除数据库 无
ef_migrations_add 添加新的迁移 name
ef_migrations_remove 删除上次迁移 无
ef_migrations_list 列出可用迁移 无
ef_migrations_script 为迁移生成SQL脚本 无
ef_migrations_bundle 创建可执行迁移包 无
ef_dbcontext_info 获取➤信息 无
ef_dbcontext_list 列出可用的➤类型 无
ef_dbcontext_scaffold 来自数据库的脚手架 connectionString, provider
ef_dbcontext_optimize 生成编译模型 无

解决方案和NuGet命令

工具 说明 必需参数
dotnet_sln_list 列出解决方案中的项目 无
dotnet_sln_add 将项目添加到解决方案中 projectPath
dotnet_sln_remove 从解决方案中删除项目 projectPath
nuget_push 将包推送到NuGet源 packagePath
nuget_delete 从NuGet源中删除包 packageName, version
nuget_locals 管理本地NuGet缓存 cacheLocation
nuget_add_source 添加NuGet源 source
nuget_remove_source 删除NuGet源 source
nuget_list_source 列出NuGet源 无
nuget_update_source 更新NuGet源代码 name
nuget_enable_source 启用NuGet源 name
nuget_disable_source 禁用NuGet源 name

例子

创建新的Web API项目

{
  "tool": "dotnet_new",
  "parameters": {
    "template": "webapi",
    "name": "MyWebApi",
    "framework": "net9.0",
    "workingDirectory": "/path/to/projects"
  }
}

添加实体框架迁移

{
  "tool": "ef_migrations_add",
  "parameters": {
    "name": "InitialCreate",
    "context": "ApplicationDbContext",
    "project": "MyProject.csproj"
  }
}

建筑与出版项目

{
  "tool": "dotnet_publish",
  "parameters": {
    "projectPath": "MyProject.csproj",
    "configuration": "Release",
    "runtime": "win-x64",
    "output": "./publish"
  }
}

建筑

该项目结构清晰,关注点分离:

  • 核心/DotNet执行器:处理进程执行和命令结果管理
  • 服务项目/:包含按功能组织的MCP工具实现
    • DotNetCoreCommands:核心。NET CLI操作
    • EntityFrameworkCommands:EF特定操作
    • SolutionCommands:解决方案和NuGet管理
  • 测试/:对所有组件进行全面的单元测试

安全考虑

  • 所有命令都在运行用户的上下文中执行
  • 可以指定工作目录以限制范围
  • 没有shell注入漏洞-所有参数都已正确转义
  • 命令以与MCP服务器进程相同的权限运行

错误处理

  • 从stdout和stderr全面捕获错误
  • 性能监控的执行时间跟踪
  • 妥善处理缺失的依赖关系
  • 带有上下文信息的详细错误报告

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过
  5. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。