Token导航 LogoToken导航TokenDH.com
Dotnet MCP logo
开发工具未说明官方级别未说明来源级核验

Dotnet MCP

MCP Server

.NET MCP 服务器是一个连接AI助手与.NET SDK的中间件,通过自然语言实现项目管理、包管理、构建运行等功能。

工具数

8

提示词数

0

GitHub Stars

22

资源数

0
开发工具C#VS CodeClaudeVS CodeVS Code Insiders

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jongalloway

提供方

jongalloway

最后核验

2026/5/17 20:38

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

.NET MCP服务器

![Build and Test](https://github.com/jongalloway/dotnet-mcp/actions/workflows/build.yml) ![Coverage](https://codecov.io/gh/jongalloway/dotnet-mcp) ![Dependabot](https://github.com/jongalloway/dotnet-mcp/blob/main/.github/dependabot.yml) ![NuGet](https://www.nuget.org/packages/Community.Mcp.DotNet/) ![Published to MCP Registry](https://registry.modelcontextprotocol.io/?q=io.github.jongalloway%2Fdotnet-mcp) ![CodeQL Advanced](https://github.com/jongalloway/dotnet-mcp/actions/workflows/codeql.yml)

赋予你的AI助手超能力。NET开发!此MCP服务器将GitHub Copilot、Claude和其他AI助手直接连接到。NET SDK,使他们能够通过自然语言创建项目、管理包、运行构建等。

快速安装

单击以在首选环境中安装: ![VS Code - Install .NET MCP](https://vscode.dev/redirect/mcp/install?name=dotnet-mcp&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22Community.Mcp.DotNet%401.%2A%22%2C%22--yes%22%5D%7D) ![VS Code Insiders - Install .NET MCP](https://insiders.vscode.dev/redirect/mcp/install?name=dotnet-mcp&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22Community.Mcp.DotNet%401.%2A%22%2C%22--yes%22%5D%7D&quality=insiders) ![Visual Studio - Install .NET MCP](https://vs-open.link/mcp-install?%7B%22name%22%3A%22Community.Mcp.DotNet%22%2C%22type%22%3A%22stdio%22%2C%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22Community.Mcp.DotNet%401.%2A%22%2C%22--yes%22%5D%7D)

备注:需要快速安装。NET 10 SDK。

这是什么?

这个。NET MCP服务器是 模型上下文协议(MCP)服务器 它将AI助手连接到。NET SDK使用 模型上下文协议。把它看作是给你的人工智能助手一条直接的线路 dotnet 命令,但要有情报和背景。

重要:本包装仅设计为 MCP服务器 AI助手。它不打算用作库或用于其他程序的消费。NET应用程序。唯一支持的用例是通过以下方式将其作为MCP服务器运行 dnxdotnet run.
graph LR
    A[AI Assistant
Copilot/Claude] -->|Natural Language| B[.NET MCP Server]
    B -->|dotnet commands| C[.NET SDK]
    C -->|Results| B
    B -->|Structured Response| A
    
    style A fill:#e1f5ff
    style B fill:#fff4e6
    style C fill:#e8f5e9

为什么要使用它?

🚀 更快的发展

而不是记住确切的 dotnet 命令和语法,只需问:

  • *“使用实体框架创建新的web API项目”*
  • *“添加Serilog包并配置结构化日志记录”*
  • *“将我的所有NuGet包更新到最新版本”*

🧠 更智能的人工智能辅助

您的AI助手可以直接访问:

  • 全部安装。NET模板及其参数
  • NuGet包搜索和元数据
  • 框架版本信息(包括LTS状态)
  • 您的解决方案和项目结构

代币设计高效

服务器不再依赖LLM通过读取和重新读取控制台输出来推断状态,而是公开了专门构建的。NET工具 结构化输入和输出在实践中,这通常意味着每个任务的令牌更少,来回次数更少。

  • 确定性工具模式减少了提示/响应开销
  • machineReadable: true 返回结构化JSON(无日志抓取)
  • MCP资源提供轻量级元数据,无需运行命令

🎯 为什么不让AI打电话 dotnet 直接?

这个。NET MCP服务器提供 背景与情报 原始CLI执行不能:

1.模板发现和验证

  • 使用MCP:AI确切地知道安装了哪些模板(console, webapi, blazor等)及其参数
  • 无MCP:AI猜测模板名称和参数,经常出错

2.框架智能

  • 使用MCP:AI知道是哪一个。安装了.NET版本,这些版本是LTS,可以适当地推荐
  • 无MCP:AI建议 net8.0 当你只有 net10.0 已安装,导致错误

3.丰富的工具描述

  • 使用MCP:每个工具都有详细的参数描述和约束(例如,“配置必须是调试或发布”)
  • 无MCP:AI根据一般知识构建命令,缺少特定版本的更改

4.参数信息

  • 使用MCP:AI看到模板参数如下 --use-controllers, --auth,框架选项
  • 无MCP:AI不知道每个模板存在哪些可选参数

5.包搜索集成

  • 使用MCP:AI可以搜索NuGet.org以找到确切的包名称和版本
  • 无MCP:AI猜测包名,通常暗示过时或不正确的包名

6.具有增强诊断功能的结构化错误处理

  • 使用MCP:错误会被解析,并通过解释、文档链接和建议修复进行丰富
  • 无MCP:AI获得原始stderr输出,可能会误解错误

服务器提供 增强的错误诊断 对于52个常见错误代码:

  • 对问题的简明英语解释
  • 直接链接到Microsoft官方文档
  • 使用命令解决问题的具体建议修复
  • 支持CS####、MSB####、NU####和NETSDK####错误代码

错误诊断文档 了解详情。

7.MCP资源

MCP资源提供对有关您的结构化元数据的只读访问。NET环境:

  • dotnet://sdk-info -关于已安装的信息。NET SDK(版本和路径)
  • dotnet://runtime-info -关于已安装的信息。NET运行时(版本和类型)
  • dotnet://templates -已安装的完整目录。带元数据的NET模板
  • dotnet://frameworks -有关支持的信息。NET框架(TFM),包括LTS状态

这使得AI助手能够:

  • 在不执行命令的情况下回答问题(“我安装了哪些.NET版本?”)
  • 根据您的实际环境提供上下文感知建议
  • 比解析CLI输出更有效地访问结构化JSON数据
  • 参考官员。NET元数据,用于准确推荐

示例:利用资源提供情境感知援助

❌ Without Resources:
User: "What .NET versions do I have?"
AI: Executes dotnet --list-sdks and parses output
User: "Which is LTS?"
AI: Executes dotnet --info and tries to parse support info

✅ With Resources:
User: "What .NET versions do I have?"
AI: Reads dotnet://sdk-info resource (no execution needed)
    Returns: .NET 8.0 (LTS), .NET 9.0 (STS), .NET 10.0 (LTS)
User: "Which is LTS?"
AI: Already knows from resource metadata - .NET 8.0, .NET 10.0

示例:创建具有身份验证的ExpressRoute项目

❌ Without MCP:
AI: "I'll run: dotnet new blazor --auth Individual"
Result: Error - template 'blazor' doesn't support --auth parameter

✅ With MCP:
AI: Uses dotnet_sdk with action: "TemplateInfo" for 'blazor'
  Sees available parameters: --interactivity, --use-program-main, --empty
  Uses dotnet_sdk with action: "SearchTemplates" to find authentication templates
AI: "I'll create a Blazor Web App with authentication using the correct template..."
Result: Success - uses 'blazor' template with proper authentication configuration

一致的结果

MCP服务器使用官方。NET SDK API和CLI命令,确保:

  • 来自模板引擎的准确模板信息
  • 可靠的命令执行
  • 正确的错误处理和验证

🔒 设计安全

  • 在您的计算机上本地运行
  • 没有数据发送到外部服务器
  • 您可以控制执行哪些命令
  • 标准。NET安全模型适用
  • 自动秘密编辑 保护CLI输出中的敏感信息

- 连接字符串、密码和API密钥将自动进行编辑 - 使用优化的正则表达式实现,性能开销\>AI: "Create a console app called MyApp" AI->>MCP: dotnet_project(action: "New", template: "console", name: "MyApp") MCP->>SDK: dotnet new console -n MyApp SDK-->>MCP: Project created successfully MCP-->>AI: Structured result with output AI-->>User: "I've created a new console app called MyApp"


这个。NET MCP服务器充当智能中间件,它:

1. **翻译** 自然语言要求结构化。NET SDK操作
1. **验证** 使用官方SDK元数据(模板、框架、包)的参数
1. **执行** 通过适当的错误处理安全地执行命令
1. **退货** AI助手可以理解和解释的结构化结果

### 🧩 **使用的MCP C#SDK功能**

Donnet mcp使用官方 [MCP C#SDK](https://csharp.sdk.modelcontextprotocol.io/) 并在基本工具调用之外练习了一系列广泛的MCP功能:

|特性|.Net mcp如何使用它|为什么|
| ------- | ---------------------- | --- |
| [资源](https://modelcontextprotocol.io/specification/latest/server/resources) |暴露 `dotnet://sdk-info`, `dotnet://runtime-info`, `dotnet://templates`,以及 `dotnet://frameworks` 作为只读MCP资源。|让客户端快速回答环境问题而无需支付费用,并减少重复CLI发现造成的令牌流失。 |
| [提示](https://modelcontextprotocol.io/specification/latest/server/prompts) |发布可重用的提示,例如 `create_new_webapi`, `add_package_and_restore`,以及 `run_tests_with_coverage`.|为MCP客户端提供有指导、可发现的工作流程,而不是从头开始重建常见的提示框架。 |
| [根](https://modelcontextprotocol.io/specification/latest/client/roots) |当用户省略显式路径时,使用客户端工作区根自动检测单个项目或解决方案。|改进IDE客户端的开箱即用行为,减少用户需要提供的参数数量。 |
| [采样](https://modelcontextprotocol.io/specification/latest/client/sampling) |当客户端支持采样时,请求客户端调解的LLM摘要,以了解构建和测试失败的情况。|将智能诊断保持在MCP流内,而不需要单独的服务器端模型凭据。 |
| [引出](https://modelcontextprotocol.io/specification/latest/client/elicitation) |在采取清洁和溶液清除等破坏性行动之前,要求明确确认。|为删除工件或更改项目结构的操作添加人在循环中的安全检查。 |
| [进度通知](https://modelcontextprotocol.io/specification/latest/basic/utilities/progress) |报告长时间运行的恢复、构建、测试、发布、打包、工具和工作负载操作的开始/完成进度。|为客户提供更好的用户体验,以应对缓慢的操作,并使呈现进度的代理更容易进行编排。 |
| [任务](https://modelcontextprotocol.io/specification/latest/basic/utilities/tasks) |注册一个 `IMcpTaskStore` 和标记 `dotnet_project` 为长时间运行的操作提供可选任务支持。|启用异步执行、轮询和取消模式,而不是强制每个长时间运行的请求阻止会话。 |
| [工具和工具元数据](https://modelcontextprotocol.io/specification/latest/server/tools) |使用具有丰富元数据的整合工具,如标题、类别、优先级、操作列表和任务支持声明。|改进了可发现性、路由和客户端表示,特别是在支持MCP的IDE集成中。 |
| [及时和资源完成](https://modelcontextprotocol.io/specification/latest/server/utilities/completion) |实现一个完成处理程序,以便客户端可以自动完成提示和资源参数值。|使引导式工作流更快,并减少支持完成UX的客户端中的无效参数输入。 |
| [图标和服务器元数据](https://csharp.sdk.modelcontextprotocol.io/) |为每个工具配置服务器级图标 `IconSource`、标题和描述性元数据。|帮助客户更清楚地呈现服务器和工具目录,特别是在可视化MCP管理UI中。 |

## 安装

### 需求

- **用于快速安装**: .净10 SDK
- **用于手动安装**: .净10 SDK
- Visual Studio代码、Visual Studio 2022(v17.13+)或克劳德桌面

### 选项1:快速安装(推荐)

使用此页面顶部的安装徽章在您的环境中自动配置MCP服务器。服务器将在首次使用时从NuGet.org下载。

### 选项2:手动配置

针对您的特定开发环境,请按照以下说明进行操作:

### Visual Studio Code

**使用快速安装** (推荐-需要.NET 10):

1. 点击 [VS代码安装徽章](#quick-install) 在本页顶部
1. 或通过命令面板手动添加:按 `Ctrl+Shift+P` (或 `Cmd+Shift+P` 在macOS上),运行 **“GitHub副本:添加MCP服务器”**,然后输入 **名字** `dotnet`, **类型** `stdio`, **命令** `dnx`,以及 **参数** `Community.Mcp.DotNet@1.* --yes`.

**手动配置** (用于源代码构建或自定义设置):

编辑您的VS代码设置(`Ctrl+,` 或 `Cmd+,`,搜索“mcp”):

{ "github.copilot.chat.mcp.servers": { "dotnet": { "type": "stdio", "command": "dotnet", "args": ["run", "--project", "/path/to/dotnet-mcp/DotNetMcp/DotNetMcp.csproj"] } } }


📖 [完整的VS代码MCP文档](https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_add-an-mcp-server)

### Visual Studio 2022

**需求**:Visual Studio 2022版本17.13或更高版本

**使用快速安装** (推荐-需要.NET 10):

1. 点击 [Visual Studio安装徽章](#quick-install) 在本页顶部
1. 或者通过选项手动添加:转到 **工具** > **选项** > **GitHub Copilot** > **MCP服务器**,单击 **添加**,然后输入 **名字** `dotnet`, **类型** `stdio`, **命令** `dnx`,以及 **参数** `Community.Mcp.DotNet@1.* --yes`.

**手动配置** (用于源代码构建或自定义设置):

1. 首选 **工具** > **选项** > **GitHub Copilot** > **MCP服务器**
1. 点击 **添加**
1. 输入:
   - **名字**: `dotnet`
   - **类型**: `stdio`
   - **命令**: `dotnet`
   - **参数**: `run --project C:\path\to\dotnet-mcp\DotNetMcp\DotNetMcp.csproj`

📖 [完整的Visual Studio MCP文档](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022)

### 克劳德桌面

**使用DNX** (推荐-需要.NET 10):

**macOS**:编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`

{ "mcpServers": { "dotnet": { "command": "dnx", "args": ["Community.Mcp.DotNet@1.*", "--yes"] } } }


**视窗**:编辑 `%APPDATA%\Claude\claude_desktop_config.json`

{ "mcpServers": { "dotnet": { "command": "dnx", "args": ["Community.Mcp.DotNet@1.*", "--yes"] } } }


**手动配置** (用于源代码构建或自定义设置):

**macOS**:

{ "mcpServers": { "dotnet": { "command": "dotnet", "args": ["run", "--project", "/path/to/dotnet-mcp/DotNetMcp/DotNetMcp.csproj"] } } }


**视窗**:

{ "mcpServers": { "dotnet": { "command": "dotnet", "args": ["run", "--project", "C:\\path\\to\\dotnet-mcp\\DotNetMcp\\DotNetMcp.csproj"] } } }


### GitHub Copilot编码代理(存储库MCP配置)

您还可以在以下位置配置此MCP服务器 **仓库** GitHub Copilot编码代理的级别。

1. 在GitHub上打开你的仓库
1. 首选 **设置** > **副驾驶** > **编码代理**
1. 将下面的JSON粘贴到MCP配置框中
1. 点击 **保存**

有关详细信息,请参阅GitHub的文档: 

{ "mcpServers": { "dotnet": { "type": "local", "command": "dnx", "args": ["Community.Mcp.DotNet@1.*", "--yes"], "tools": [ "dotnet_project", "dotnet_package", "dotnet_solution", "dotnet_sdk", "dotnet_help", "dotnet_server_capabilities", "dotnet_server_info" ] } } }


此配置使用精心策划的工具列表(而不是 `"*"`)因此代理可以使用。NET MCP服务器安全且可预测。

注意:Copilot编码代理在GitHub Actions运行器上运行。如果你需要确保。NET 10已为您的存储库安装,添加一个安装工作流,如 .

## 用法示例

配置后,您可以与AI助手一起使用自然语言:

### 快速入门-单个项目

**用户**: *“创建一个名为WeatherService的新web API项目”*

**人工智能**: *我将为您创建一个新的web API项目。..*

dotnet new webapi -n WeatherService


*已在WeatherService目录中成功创建项目。*

### 复杂应用程序-使用Aspire的微服务

**用户**: *“创建一个由.NET Aspire协调的服务器端web应用程序和最小API,并使用xunit对API进行单元测试。解决方案使用slnx格式。”*

**人工智能**: *我将使用创建一个完整的微服务解决方案。NET Aspire编排。..*

Create solution with new XML format

dotnet new sln -n MyMicroservices --use-slnx

Create .NET Aspire AppHost for orchestration

dotnet new aspire-apphost -n MyMicroservices.AppHost

Create web app

dotnet new webapp -n MyMicroservices.Web

Create minimal API

dotnet new webapi -n MyMicroservices.Api --use-minimal-apis

Create test project

dotnet new xunit -n MyMicroservices.Api.Tests

Add projects to solution

dotnet sln add MyMicroservices.AppHost/MyMicroservices.AppHost.csproj dotnet sln add MyMicroservices.Web/MyMicroservices.Web.csproj dotnet sln add MyMicroservices.Api/MyMicroservices.Api.csproj dotnet sln add MyMicroservices.Api.Tests/MyMicroservices.Api.Tests.csproj

Add project references for tests

dotnet add MyMicroservices.Api.Tests/MyMicroservices.Api.Tests.csproj reference MyMicroservices.Api/MyMicroservices.Api.csproj


*使用4个项目创建的解决方案:用于编排的AppHost、Web应用程序、API和单元测试。准备跑步 `dotnet run --project MyMicroservices.AppHost`.*

### 基于实体框架的数据库驱动应用

**用户**: *“使用SQL Server为我的API设置实体框架核心,并创建初始数据库迁移”*

**人工智能**: *我将添加EF Core包,安装dotnet EF工具,并创建您的初始迁移。..*

Add Entity Framework packages

dotnet add package Microsoft.EntityFrameworkCore dotnet add package Microsoft.EntityFrameworkCore.SqlServer dotnet add package Microsoft.EntityFrameworkCore.Design

Install dotnet-ef tool globally

dotnet tool install dotnet-ef --global

Create initial migration

dotnet ef migrations add InitialCreate

Apply migration to create database

dotnet ef database update


*添加了SQL Server提供程序的实体框架核心。创建并应用了初始迁移。数据库已准备好使用。*

**用户**: *“我将一个Product实体添加到我的Contoso中。更新数据库架构”*

**人工智能**: *我将为您的产品实体创建一个迁移并应用它。。。*

Create migration for new entity

dotnet ef migrations add AddProductEntity

List migrations to see what's pending

dotnet ef migrations list

Apply the migration

dotnet ef database update


*为Product实体创建的迁移(具有Id、Name、Price、CreatedDate列的新表)。数据库已成功更新。*

**用户**: *“为上次迁移生成SQL脚本,这样我就可以在生产部署之前对其进行审查”*

**人工智能**: *我将从您的迁移中生成幂等SQL脚本。..*

Generate idempotent SQL script (can be run multiple times safely)

dotnet ef migrations script --idempotent --output deploy.sql


*为部署.SQL而生成的SQL脚本。此脚本可以安全地运行多次,并且仅在需要时应用更改。*

### 数据库优先开发

**用户**: *“我有一个现有的SQL Server数据库。将其反向工程为实体框架类”*

**人工智能**: *我将把你的数据库构建成实体框架核心实体。..*

Reverse engineer (scaffold) database to EF Core entities

dotnet ef dbcontext scaffold "Server=localhost;Database=MyExistingDb;Trusted_Connection=true;" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models

List the generated DbContext classes

dotnet ef dbcontext list

Get detailed info about the DbContext

dotnet ef dbcontext info


*数据库搭建成功。在Models文件夹中生成MyExistingDbContext.cs和15个实体类(客户、订单、产品等)。*

### 多目标测试策略

**用户**: *使用面向.NET 8和.NET 10的NUnit添加集成测试,并将其配置为以代码覆盖率运行*

**人工智能**: *我将设置具有覆盖率的多目标集成测试。..*

Create NUnit test project

dotnet new nunit -n MyMicroservices.IntegrationTests

Update project to multi-target (edit .csproj)

net8.0;net10.0

Add integration test packages

dotnet add MyMicroservices.IntegrationTests package Microsoft.AspNetCore.Mvc.Testing dotnet add MyMicroservices.IntegrationTests package Microsoft.Testing.Extensions.CodeCoverage

Run tests with coverage for both frameworks

dotnet test -- --coverage --coverage-output-format cobertura


*使用多目标创建的集成测试项目。测试将在两者上运行。NET 8和。NET 10启用了代码覆盖率。*

### 探索和发现

**用户**: *“有哪些模板可用于创建云原生应用程序?”*

**人工智能**: *让我搜索与云原生相关的模板。..*

dotnet new search aspire dotnet new search dapr dotnet new search azure


*已找到模板:*

- `aspire` - .NET Aspire应用程序
- `aspire-apphost` - .NET Aspire应用程序主机
- `aspire-servicedefaults` - .NET Aspire服务默认值
- `dapr` -Dapr应用程序模板
- 各种Azure函数和容器应用程序模板

*每个模板都是为云原生微服务和分布式应用程序设计的。*

### 现代化工作流程

**用户**: *将所有包更新到最新版本,格式化所有代码以匹配我们的editorconfig规则,然后构建并运行测试*

**人工智能**: *我将更新包、格式化代码、构建和测试。..*

Update all packages to latest compatible versions

dotnet package update

Format all code according to .editorconfig

dotnet format

Clean and rebuild

dotnet clean dotnet build -c Release

Run all tests

dotnet test --verbosity detailed


*所有软件包均已更新至最新版本。整个解决方案中的代码格式一致。生成成功,但没有警告。所有156项测试均已通过。*

### HTTPS开发设置

**用户**: *“运行web应用程序时出现HTTPS证书错误”*

**人工智能**: *让我检查一下你的HTTPS开发证书。..*

Check certificate status

dotnet dev-certs https --check --trust


*您的证书不受信任。让我来解决这个问题。..*

Trust the certificate (may require elevation)

dotnet dev-certs https --trust


*证书现在受信任。请尝试再次运行您的应用程序。如果你使用的是Docker,你可以导出证书:*

Export for Docker containers

dotnet dev-certs https --export-path ./certs/aspnetapp.pfx --password "SecurePassword123!"


*证书导出到。/certs/aspnetapp.pfx。现在,您可以将其挂载到Docker容器中。*

### 使用用户机密进行安全配置

**用户**: *“使用数据库连接字符串为我的API项目设置用户机密”*

**人工智能**: *我将为您的项目初始化用户机密。..*

Initialize user secrets (adds UserSecretsId to project file)

dotnet user-secrets init --project MyApi/MyApi.csproj


*现在,我将安全地添加您的数据库连接字符串。..*

Store connection string (not committed to Git)

dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Server=localhost;Database=MyDb;User=dev;Password=secret123"


*机密已存储!您还可以添加API密钥:*

Add Azure OpenAI API key

dotnet user-secrets set "Azure:OpenAI:ApiKey" "sk-..."

Add SendGrid API key

dotnet user-secrets set "SendGrid:ApiKey" "SG...."


*让我向您展示配置的内容:*

List all secrets

dotnet user-secrets list


*输出:*

ConnectionStrings:DefaultConnection = Server=localhost;Database=MyDb;User=dev;Password=secret123 Azure:OpenAI:ApiKey = sk-... SendGrid:ApiKey = SG....


*这些秘密存储在您的用户配置文件中(不在项目中),不会提交到Git。在您的代码中,访问它们的方式如下:*

var connectionString = builder.Configuration["ConnectionStrings:DefaultConnection"]; var apiKey = builder.Configuration["Azure:OpenAI:ApiKey"];


*注意:用户机密用于 **仅限开发**。将Azure密钥库或环境变量用于生产。*

### 移动和MAUI开发设置

**用户**: *“我想为Android和iOS开发一个.NET MAUI应用程序”*

**人工智能**: *我将帮助您设置MAUI开发所需的工作负载。..*

First, let's see what MAUI workloads are available

dotnet workload search maui


*找到的工作负载:*

Workload ID Description


maui-android .NET MAUI SDK for Android maui-ios .NET MAUI SDK for iOS maui-windows .NET MAUI SDK for Windows maui-tizen .NET MAUI SDK for Tizen


*现在,我将安装您需要的工作负载:*

Install MAUI workloads for Android and iOS

Warning: This will download several GB of SDKs and tools

dotnet workload install maui-android maui-ios


> **备注**:上面的命令显示原始 `dotnet` CLI语法,它使用空格分隔的工作负载ID。当拨打电话时。NET MCP工作负载安装工具,将工作负载ID作为单个逗号分隔的参数传递,例如: `workloadIds: "maui-android,maui-ios"`MCP服务器会将其转换为等效的CLI命令。

*已安装工作量!让我们验证一下:*

List installed workloads

dotnet workload list


*输出:*

Installed Workload Id Manifest Version Installation Source


maui-android 10.0.100/10.0.100 SDK 10.0.100 maui-ios 10.0.100/10.0.100 SDK 10.0.100


*现在,您可以创建一个MAUI项目:*

Create a new MAUI app

dotnet new maui -n MyMauiApp


*您的MAUI开发环境已准备就绪!当SDK更新可用时,更新您的工作负载:*

Update all installed workloads

dotnet workload update


## 可用工具

所有工具包括 **视觉图标** 以提高AI助手界面的可发现性。图标使用 [Microsoft Fluent UI表情符号](https://github.com/microsoft/fluentui-emoji) 用于一致的视觉表示(📁 项目,📦 包装,⚙️ SDK,🛠️ 工具等)。

服务器提供全面。NET开发能力 **整合MCP工具** 通过按领域对相关操作进行分组,使人工智能助手更容易选择合适的工具并组合工作流。

> **备注**:那个。NET MCP服务器使用 **仅限整合工具**每个整合工具都通过一个 `action` 参数。与每个操作都有单独的工具相比,这种设计改进了人工智能编排,并提供了更好的语义组织。

### MCP资源(只读上下文)

服务器公开只读资源,提供对的有效访问。NET环境元数据:

- **dotnet://sdk-info** -关于已安装的信息。NET SDK(版本和路径)
- **dotnet://runtime-info** -关于已安装的信息。NET运行时(版本和类型)
- **dotnet://templates** -已安装的完整目录。带元数据的NET模板
- **dotnet://frameworks** -有关支持的信息。NET框架(TFM),包括LTS状态

资源提供结构化的JSON数据,比频繁访问的只读信息的工具调用更有效。

### 整合工具

**这些工具使用动作枚举对相关操作进行分组,提供更好的AI编排和更清晰的语义组织。**

#### dotnet_project-项目生命周期管理

所有项目操作的统一界面: **新**, **恢复**, **构建**, **跑**, **测试**, **发布**, **清洁**, **分析**, **依赖项**, **验证**, **包装**, **手表**, **格式**, **停止**, **日志**

**此版本中的新功能:**

- **记录操作**:从后台进程会话中检索stdout/stderr日志
- **Run的后台模式**:在后台启动进程 `startMode: "Background"` 并通过会话ID检索日志
- **停止动作**:终止长时间运行的进程会话(如 `dotnet run`)按会话ID
- **noBuild参数**:运行前跳过构建(镜像 `dotnet run --no-build`)

**测试运行程序兼容性**:测试操作会自动检测来自以下位置的测试运行器 `global.json` 配置。如果 `global.json` 包含 `{ "test": { "runner": "Microsoft.Testing.Platform" } }`,它使用 `--project` 标志(MTP模式)。否则,为了保持传统兼容性,它默认为位置参数(VSTest模式)。

您可以使用以下命令显式指定测试运行器 `testRunner` 参数:

- `Auto` (默认)-从global.json自动检测
- `MicrosoftTestingPlatform` -使用--项目标志(需要.NET SDK 8+和MTP或SDK 10+)
- `VSTest` -使用位置参数(与所有SDK版本兼容)

这 `useLegacyProjectArgument` 参数已弃用;使用 `testRunner: "VSTest"` 相反。

例子:

// Create a new web API project await callTool("dotnet_project", { action: "New", template: "webapi", name: "MyApi" });

// Build the project await callTool("dotnet_project", { action: "Build", project: "MyApi/MyApi.csproj", configuration: "Release" });

// Run in background mode to get session ID const runResult = await callTool("dotnet_project", { action: "Run", project: "MyApi/MyApi.csproj", noBuild: true, startMode: "Background", machineReadable: true }); const sessionId = runResult.metadata.sessionId;

// Wait a moment for the application to start...

// Retrieve logs from the background session await callTool("dotnet_project", { action: "Logs", sessionId: sessionId, machineReadable: true });

// Retrieve only the last 50 lines of logs await callTool("dotnet_project", { action: "Logs", sessionId: sessionId, tailLines: 50, machineReadable: true });

// Retrieve logs since a specific timestamp await callTool("dotnet_project", { action: "Logs", sessionId: sessionId, since: "2024-01-01T12:00:00Z", machineReadable: true });

// Stop the background process await callTool("dotnet_project", { action: "Stop", sessionId: sessionId });

// Run tests (auto-detects test runner from global.json) await callTool("dotnet_project", { action: "Test", project: "MyApi.Tests/MyApi.Tests.csproj" });

// Run tests with explicit test runner (MTP) await callTool("dotnet_project", { action: "Test", project: "MyApi.Tests/MyApi.Tests.csproj", testRunner: "MicrosoftTestingPlatform" });

// Run tests with explicit test runner (VSTest) await callTool("dotnet_project", { action: "Test", project: "MyApi.Tests/MyApi.Tests.csproj", testRunner: "VSTest" });


#### dotnet_package-包和引用管理

管理NuGet包和项目引用: **添加**, **移除**, **搜索**, **更新**, **列表**, **Add参考**, **删除参考**, **列表参考**, **清除缓存**

例子:

// Search for a package await callTool("dotnet_package", { action: "Search", searchTerm: "serilog" });

// Add package to project await callTool("dotnet_package", { action: "Add", packageId: "Serilog.AspNetCore", project: "MyApi/MyApi.csproj" });


#### dotnet_solution-解决方案文件管理

**完全等同于 `dotnet sln` / `dotnet solution` CLI命令。**

管理解决方案文件和项目成员资格: **创建**, **添加**, **列表**, **移除**

示例:

// Create a solution (classic .sln format) await callTool("dotnet_solution", { action: "Create", name: "MyApp" });

// Create a solution (new .slnx XML format) await callTool("dotnet_solution", { action: "Create", name: "MyApp", format: "slnx" });

// Add projects to solution await callTool("dotnet_solution", { action: "Add", solution: "MyApp.slnx", projects: ["MyApi/MyApi.csproj", "MyWeb/MyWeb.csproj"] });

// List projects in solution await callTool("dotnet_solution", { action: "List", solution: "MyApp.slnx" });

// Remove projects from solution await callTool("dotnet_solution", { action: "Remove", solution: "MyApp.slnx", projects: ["MyWeb/MyWeb.csproj"] });


#### dotnet_ef-实体框架核心操作

数据库迁移、➤管理和脚手架: **迁移添加**, **迁移列表**, **迁移删除**, **迁移脚本**, **数据库更新**, **数据库删除**, **Db上下文列表**, **DbContextInfo**, **DbContextScaffold**

例子:

// Create a migration await callTool("dotnet_ef", { action: "MigrationsAdd", name: "InitialCreate", project: "MyApi/MyApi.csproj" });

// Update database await callTool("dotnet_ef", { action: "DatabaseUpdate", project: "MyApi/MyApi.csproj" });


#### dotnet_workload-工作负载管理

安装和管理。NET工作负载(MAUI、WASM等): **列表**, **信息**, **搜索**, **安装**, **更新**, **卸载**

例子:

// Search for workloads await callTool("dotnet_workload", { action: "Search", searchTerm: "maui" });

// Install workloads await callTool("dotnet_workload", { action: "Install", workloadIds: "maui-android,maui-ios" });


#### dotnet_tool-。NET工具管理

管理全球和本地。NET工具: **安装**, **列表**, **更新**, **卸载**, **恢复**, **创建清单**, **搜索**, **跑**

例子:

// Install a tool globally await callTool("dotnet_tool", { action: "Install", packageId: "dotnet-ef", global: true });

// Search for tools await callTool("dotnet_tool", { action: "Search", searchTerm: "format" });


#### dotnet_sdk-sdk和模板信息

查询SDK、运行时、模板和框架信息: **版本**, **信息**, **ListSdks**, **列表运行时**, **列表模板**, **搜索模板**, **寺庙信息**, **列表模板包**, **安装**, **不坚固的临时背包**, **清除模板**, **框架信息**, **CacheMetrics**

例子:

// Get SDK version await callTool("dotnet_sdk", { action: "Version" });

// List available templates await callTool("dotnet_sdk", { action: "ListTemplates" });

// Search for templates await callTool("dotnet_sdk", { action: "SearchTemplates", searchTerm: "web" });

// List installed template packs await callTool("dotnet_sdk", { action: "ListTemplatePacks" });

// Install a template pack (NuGet package ID + version) await callTool("dotnet_sdk", { action: "InstallTemplatePack", templatePackage: "Aspire.ProjectTemplates", templateVersion: "13.1.0" });

// Uninstall a template pack await callTool("dotnet_sdk", { action: "UninstallTemplatePack", templatePackage: "Aspire.ProjectTemplates" });


#### dotnet_dev_certs-开发者证书和秘密

管理HTTPS证书和用户机密: **证书eTrust**, **证书检查**, **证书清洁**, **资质证书出口**, **秘书长**, **秘书设置**, **秘密列表**, **秘密删除**, **秘书清除**

例子:

// Trust development certificate await callTool("dotnet_dev_certs", { action: "CertificateTrust" });

// Set a user secret await callTool("dotnet_dev_certs", { action: "SecretsSet", key: "ConnectionStrings:DefaultConnection", value: "Server=localhost;Database=MyDb", project: "MyApi/MyApi.csproj" });


### 实用工具

- **dotnet_帮助** -获取任何.Net命令的帮助
- **dotnet_server_功能** -获取MCP服务器功能和并发指导

## 从源头构建

为了发展或贡献:

git clone https://github.com/jongalloway/dotnet-mcp.git cd dotnet-mcp dotnet build --project DotNetMcp/DotNetMcp.csproj


**运行服务器**:

dotnet run --project DotNetMcp/DotNetMcp.csproj


服务器通过stdio传输进行通信,并设计为由MCP客户端调用。

## 项目结构

这个项目已经发展到了一个完整的逐个文件列表仍然有用的地步。
相反,本节重点介绍了回购的关键切入点和主要领域。

dotnet-mcp/ ├── DotNetMcp/ # Main MCP server project (packed as a .NET tool) │ ├── Program.cs # Hosting + MCP server wiring │ ├── DotNetMcp.csproj # NuGet/package metadata (PackAsTool, server.json packing) │ ├── .mcp/server.json # MCP server metadata (packed into the NuGet package) │ ├── Resources/ # MCP resources (SDK/runtime/templates/frameworks) │ ├── DotNetCliTools.cs # Tool surface area (split into partials in Tools/) │ └── Tools/ # Tool implementations grouped by domain (project, package, EF, etc.) ├── DotNetMcp.Tests/ # Unit + integration tests ├── doc/ # Long-form documentation (architecture, concurrency, testing, etc.) ├── scripts/ # Maintenance & validation scripts ├── artifacts*/ # Build outputs (CI + local) ├── .github/ # CI workflows and repo automation ├── DotNetMcp.slnx # Solution file (.slnx) ├── global.json # SDK pinning for consistent builds ├── .config/dotnet-tools.json # Local tool manifest (dotnet local tools) └── LICENSE # MIT License


要开始的关键文件:

- `DotNetMcp/Program.cs` -服务器启动和注册
- `DotNetMcp/DotNetCliTools.cs` 和 `DotNetMcp/Tools/` -MCP工具实现
- `DotNetMcp/Resources/DotNetResources.cs` -只读MCP资源
- `DotNetMcp/.mcp/server.json` -打包的MCP服务器元数据
- `DotNetMcp.Tests/` -测试(包括server.json验证和XML文档覆盖率)

## 技术栈

- **协议**: [模型上下文协议(MCP)](https://modelcontextprotocol.io/)
- **软件开发工具包**: [MCP SDK。网](https://github.com/modelcontextprotocol/csharp-sdk) v1.0.0
- **运行时**: .NET 10.0(目标框架)
- **运输**:stdio(标准输入/输出)
- **NuGet包**:
  - `Microsoft.TemplateEngine.Abstractions` & `Edge` (v10.0.101)-模板元数据
  - `Microsoft.Build.Utilities.Core` & `Microsoft.Build` (v18.0.2)-项目验证

## 文档

- 📖 [更新日志](CHANGELOG.md) - **版本历史和发行说明**
- 📖 [AI助手最佳实践指南](doc/ai-assistant-guide.md) - **工作流、提示、集成模式和故障排除**
- 📖 [机器可读JSON合约](doc/machine-readable-contract.md) - **程序化工具消费的v1.0稳定合约**
- 📖 [刀具表面加固](doc/tool-surface-consolidation.md) - **整合的工具设计和架构**
- 📖 [遥测和可观测性](doc/telemetry.md) - **请求持续时间记录、OpenTetry集成和性能监控**
- 📖 [SDK集成详细信息](doc/sdk-integration.md) -技术架构和SDK使用
- 📖 [高级主题](doc/advanced-topics.md) -性能、日志记录和安全详细信息
- 📖 [释放](doc/releasing.md) -如何剪切版本(清单+脚本)
- 📖 [并发安全](doc/concurrency.md) -AI编排器的并行执行指导
- 📖 [测试](doc/testing.md) -如何运行测试(包括选择加入交互式测试)
- 📖 [模型上下文协议](https://modelcontextprotocol.io/) -MCP官方规范
- 📖 [MCP C#SDK文档](https://csharp.sdk.modelcontextprotocol.io/) -SDK文档

## 互操作性

这个。NET MCP Server遵循模型上下文协议规范,为工具发现和AI编排提供丰富的元数据:

### 服务器元数据

服务器包括一个MCP注册表 `server.json` 配置文件(`.mcp/server.json`)它提供:

- **环境变量**:优化。MCP使用的NET CLI设置

  - `DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1` -跳过首次设置
  - `DOTNET_NOLOGO=1` -抑制启动消息

- **包裹信息**:NuGet包详细信息,便于通过以下方式安装 `dnx` (需要.NET 10)

  - 包裹: `Community.Mcp.DotNet`
  - 注册地址:NuGet.org
  - 运输:stdio

- **存储库信息**:链接回源代码仓库

工具和资源元数据在运行时通过MCP协议(工具/资源列表)使用XML文档和 `[McpMeta]` 服务器代码中的属性。

### 工具名称间距

所有工具都使用 `dotnet_` 在它们的外部ID中添加前缀,以防止与其他MCP服务器的命名冲突。以下是MCP服务器互操作性的最佳实践:

**示例:**

- `dotnet_project` -项目生命周期操作(创建/构建/测试/运行/发布)
- `dotnet_package` -NuGet包和项目引用
- `dotnet_solution` -解决方案操作
- `dotnet_sdk` -SDK/运行时/模板/框架元数据

### 发现元数据

工具发现元数据(类别、标签、常用提示)通过以下方式提供 `[McpMeta]` 属性,并通过MCP工具列表显示。

### 元数据访问

AI编排器可以通过以下方式访问服务器元数据:

1. **MCP协议**:通过MCP SDK列出标准工具/资源
1. **server.json**:用于注册和发现的静态元数据文件
1. **工具属性**:运行时元数据通过 `McpMeta` 代码中的属性

有关详细的集成示例,请参阅 [MCP规范](https://modelcontextprotocol.io/) 以及我们的 [SDK集成文档](doc/sdk-integration.md).

## 贡献

欢迎投稿!这是一个由社区维护的项目。

**贡献方式**:

- 🐛 通过以下方式报告错误或请求功能 
- 💡 提交新工具或改进的pull请求
- 📝 改进文档
- ⭐ 标记回购以显示支持

**开发设置**:

1. 分叉存储库
1. 克隆你的叉子
1. 创建要素分支
1. 进行更改
1. 彻底测试
1. 提交拉取请求

看  发展指南。

## 故障排除

### “找不到dnx”

- **原因**: .未安装NET 10 SDK
- **解决方案**:安装 [.NET 10 SDK](https://dotnet.microsoft.com/download) 或使用手动配置 `dotnet run`

### “找不到模板”

- **原因**: .NET SDK模板未安装
- **解决方案**:运行 `dotnet new --install` 安装默认模板

### “服务器没有响应”

- **原因**:服务器崩溃或启动失败
- **解决方案**:检查MCP客户端中的日志,确保。NET SDK在PATH中

### 运行测试时出现无法识别的选项“--project”或“未知开关”

- **原因**:测试运行器不匹配或SDK版本不兼容
- **背景**:The `--project` 标志仅受支持 [微软测试平台(MTP)](https://learn.microsoft.com/dotnet/core/tools/dotnet-test-mtp).遗产 [VSTest](https://learn.microsoft.com/dotnet/core/tools/dotnet-test-vstest) runner使用位置参数。
- **解决方案**:MCP服务器现在自动检测来自以下位置的测试运行器 `global.json`:
  1. **自动模式** (默认):添加 `{ "test": { "runner": "Microsoft.Testing.Platform" } }` 到 `global.json` 如果使用MTP,否则默认为VSTest
  1. **显式模式**:设置 `testRunner: "MicrosoftTestingPlatform"` 或 `testRunner: "VSTest"` 通话时 `dotnet_project` 测试动作
  1. **遗留参数**:使用 `useLegacyProjectArgument: true` (已弃用,请使用 `testRunner: "VSTest"` 相反)
- **验证支持**:运行 `dotnet test --help | grep -- --project` 检查您的SDK是否支持 `--project` 旗帜
- **更多信息**:参见 [doc/testing.md](doc/testing.md) 了解详细的测试流道兼容性和故障排除
- **参考文献**: [.net测试概述](https://learn.microsoft.com/dotnet/core/tools/dotnet-test) | [器材转让计划](https://learn.microsoft.com/dotnet/core/tools/dotnet-test-mtp) | [VSTest](https://learn.microsoft.com/dotnet/core/tools/dotnet-test-vstest)

### 需要帮助?

- 📖 检查 [文档](#documentation)
- 💬 打开A 
- 🔍 搜索 [现有问题](https://github.com/jongalloway/dotnet-mcp/issues?q=is%3Aissue)

## 相关微软MCP

这个。NET MCP服务器的重点。NET SDK操作(构建、运行、测试、模板、SDK管理)。对于特殊场景,请考虑以下互补的官方Microsoft MCP服务器:

- **[NuGet MCP服务器](https://www.nuget.org/packages/NuGet.Mcp.Server)** -超越基本包管理的高级NuGet包搜索、元数据和自动化场景
- **[Aspire MCP服务器](https://aspire.dev/dashboard/mcp-server/)** -的运行时监控、遥测、分布式跟踪和资源管理。NET Aspire应用程序

这些MCP与。NET MCP提供全面的覆盖。NET开发生命周期:

|功能|。NET MCP | NuGet MCP | Aspire MCP|
| ------- | -------- | --------- | ---------- |
| **主要焦点** | .NET SDK操作|包元数据/发现|运行时监控|
| **范围** |CLI命令(构建、运行、测试)|NuGet搜索和自动化|Aspire应用遥测|
| **阶段** |开发时间|开发/发现时间|运行/生产|
| **示例操作** | `dotnet build`, `dotnet new` |包搜索、README |日志查看、跟踪|

## 许可证

MIT许可证-请参阅 [许可证](LICENSE) 文件以获取详细信息。

目录标签

目录标签

开发工具C#VS CodeAI开发辅助本地部署.NET工具链自然语言编程MCP协议开发效率

支持客户端

ClaudeVS CodeVS Code Insiders

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明api-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP