使用说明
.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
安装与使用
-
克隆和构建:
git clone <repository-url> cd DotNetMcpServer dotnet build -
运行服务器:
cd DotNetMcpServer dotnet run -
运行测试:
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全面捕获错误
- 性能监控的执行时间跟踪
- 妥善处理缺失的依赖关系
- 带有上下文信息的详细错误报告
贡献
- 分叉存储库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
