概述
安裝
內容詳情
替代品
什麼是.NET MCP Server?
.NET MCP Server是一個橋樑,使用模型上下文協議(MCP)將AI助手連接到.NET SDK。你可以把它想象成給你的AI助手一條直接訪問`dotnet`命令的線路,但帶有智能和上下文理解。 它允許AI助手: - 理解你已安裝的.NET模板和參數 - 搜索NuGet包並獲取元數據 - 瞭解框架版本信息(包括LTS狀態) - 訪問你的解決方案和項目結構 - 執行構建、測試、發佈等操作如何使用.NET MCP Server?
使用.NET MCP Server非常簡單: 1. 在你的開發環境(VS Code、Visual Studio或Claude Desktop)中安裝服務器 2. 配置服務器連接到你的AI助手 3. 開始使用自然語言與AI助手交流,讓它幫你執行.NET開發任務 服務器在本地運行,不發送數據到外部服務器,完全在你的控制之下。適用場景
.NET MCP Server最適合以下場景: - 快速創建新的.NET項目(Web API、控制檯應用、Blazor等) - 管理NuGet包依賴和版本 - 執行構建、測試和發佈流程 - 設置數據庫遷移和Entity Framework配置 - 管理解決方案和項目結構 - 配置開發證書和安全設置 - 探索可用的.NET模板和工具主要功能
如何使用
使用案例
常見問題
相關資源
安裝
{
"mcpServers": {
"dotnet": {
"command": "dnx",
"args": ["Community.Mcp.DotNet@1.0.0", "--yes"]
}
}
}
{
"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"]
}
}
}🚀 .NET MCP Server
.NET MCP Server 賦予 AI 助手在 .NET 開發方面的強大能力!該 MCP 服務器可將 GitHub Copilot、Claude 等 AI 助手直接連接到 .NET SDK,使它們能夠通過自然語言創建項目、管理包、運行構建等。
🚀 快速開始
點擊以下按鈕,在您首選的環境中安裝:
⚠️ 重要提示
快速安裝需要 .NET 10 SDK。
✨ 主要特性
🚀 加速開發
無需記憶精確的 dotnet 命令和語法,只需提出自然語言請求,例如:
- “創建一個使用 Entity Framework 的新 Web API 項目”
- “添加 Serilog 包並配置結構化日誌記錄”
- “將所有 NuGet 包更新到最新版本”
🧠 智能 AI 輔助
AI 助手可直接訪問以下信息:
- 所有已安裝的 .NET 模板及其參數
- NuGet 包搜索和元數據
- 框架版本信息(包括 LTS 狀態)
- 解決方案和項目結構
🎯 提供上下文和智能
與直接讓 AI 調用 dotnet 命令相比,.NET MCP 服務器提供了原始 CLI 執行所沒有的 上下文和智能:
1. 模板發現與驗證
- 使用 MCP:AI 確切知道已安裝的模板(如
console、webapi、blazor等)及其參數。 - 不使用 MCP:AI 猜測模板名稱和參數,經常出錯。
2. 框架智能
- 使用 MCP:AI 知道已安裝的 .NET 版本、哪些是 LTS 版本,並能給出合適的建議。
- 不使用 MCP:當你只安裝了
net10.0時,AI 可能會建議使用net8.0,導致錯誤。
3. 豐富的工具描述
- 使用 MCP:每個工具都有詳細的參數描述和約束(例如,“配置必須是 Debug 或 Release”)。
- 不使用 MCP:AI 根據一般知識構造命令,可能會遺漏特定版本的更改。
4. 參數信息
- 使用 MCP:AI 可以看到模板參數,如
--use-controllers、--auth和框架選項。 - 不使用 MCP:AI 不知道每個模板有哪些可選參數。
5. 包搜索集成
- 使用 MCP:AI 可以在 NuGet.org 上搜索確切的包名稱和版本。
- 不使用 MCP:AI 猜測包名稱,經常建議過時或不正確的包。
6. 結構化錯誤處理
- 使用 MCP:錯誤會被解析並以 AI 可以理解的結構化格式返回。
- 不使用 MCP:AI 得到原始的 stderr 輸出,可能會誤解錯誤信息。
7. MCP 資源
MCP 資源提供對 .NET 環境結構化元數據的只讀訪問:
- dotnet://sdk-info - 已安裝的 .NET SDK 信息(版本和路徑)
- dotnet://runtime-info - 已安裝的 .NET 運行時信息(版本和類型)
- dotnet://templates - 已安裝的 .NET 模板的完整目錄及其元數據
- dotnet://frameworks - 支持的 .NET 框架信息(TFMs),包括 LTS 狀態
這使 AI 助手能夠:
- 無需執行命令即可回答問題(例如,“我安裝了哪些 .NET 版本?”)
- 根據實際環境提供上下文感知的建議
- 比解析 CLI 輸出更高效地訪問結構化 JSON 數據
- 參考官方 .NET 元數據以提供準確的建議
✨ 結果一致性
MCP 服務器使用官方 .NET SDK API 和 CLI 命令,確保:
- 從模板引擎獲取準確的模板信息
- 可靠的命令執行
- 正確的錯誤處理和驗證
🔒 設計安全
- 在本地機器上運行
- 不向外部服務器發送數據
- 你可以控制執行哪些命令
- 應用標準的 .NET 安全模型
- 自動隱藏敏感信息,以保護 CLI 輸出中的敏感信息:
- 連接字符串、密碼和 API 密鑰會自動隱藏
- 使用優化的正則表達式實現,性能開銷小於 1%
- 參考 Microsoft.Extensions.Compliance.Redaction 以便未來集成
- 可以通過
unsafeOutput=true選項禁用此功能,用於高級調試 - 隱藏模式包括:數據庫憑據、雲提供商密鑰、令牌、證書等
- 性能影響極小,經測試,處理 10,000 行數據的時間在 500ms 以內
📦 安裝指南
要求
- 快速安裝:需要 .NET 10 SDK
- 手動安裝:需要 .NET 10 SDK 需要安裝 Visual Studio Code、Visual Studio 2022(v17.13+)或 Claude Desktop
選項 1:快速安裝(推薦)
使用本頁面頂部的安裝徽章,可在你的環境中自動配置 MCP 服務器。服務器將在首次使用時從 NuGet.org 下載。
選項 2:手動配置
根據你的具體開發環境,按照以下說明操作:
Visual Studio Code
使用快速安裝(推薦 - 需要 .NET 10):
- 點擊本頁面頂部的 VS Code 安裝徽章
- 或者通過命令面板手動添加:
- 按下
Ctrl+Shift+P(在 macOS 上為Cmd+Shift+P) - 運行 “GitHub Copilot: 添加 MCP 服務器”
- 輸入:
- 名稱:
dotnet - 類型:
stdio - 命令:
dnx - 參數:
Community.Mcp.DotNet@0.1.0-* --yes
- 名稱:
- 按下
手動配置(用於源代碼構建或自定義設置):
編輯你的 VS Code 設置(Ctrl+, 或 Cmd+,,搜索 “mcp”):
{
"github.copilot.chat.mcp.servers": {
"dotnet": {
"type": "stdio",
"command": "dotnet",
"args": ["run", "--project", "/path/to/dotnet-mcp/DotNetMcp/DotNetMcp.csproj"]
}
}
}
Visual Studio 2022
要求:Visual Studio 2022 版本 17.13 或更高版本
使用快速安裝(推薦 - 需要 .NET 10):
- 點擊本頁面頂部的 Visual Studio 安裝徽章
- 或者通過選項手動添加:
- 轉到 工具 > 選項 > GitHub Copilot > MCP 服務器
- 點擊 添加
- 輸入:
- 名稱:
dotnet - 類型:
stdio - 命令:
dnx - 參數:
Community.Mcp.DotNet@0.1.0-* --yes
- 名稱:
手動配置(用於源代碼構建或自定義設置):
- 轉到 工具 > 選項 > GitHub Copilot > MCP 服務器
- 點擊 添加
- 輸入:
- 名稱:
dotnet - 類型:
stdio - 命令:
dotnet - 參數:
run --project C:\path\to\dotnet-mcp\DotNetMcp\DotNetMcp.csproj
- 名稱:
Claude Desktop
使用 DNX(推薦 - 需要 .NET 10):
macOS:編輯 ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"dotnet": {
"command": "dnx",
"args": ["Community.Mcp.DotNet@1.0.0", "--yes"]
}
}
}
Windows:編輯 %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dotnet": {
"command": "dnx",
"args": ["Community.Mcp.DotNet@1.0.0", "--yes"]
}
}
}
手動配置(用於源代碼構建或自定義設置): macOS:
{
"mcpServers": {
"dotnet": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/dotnet-mcp/DotNetMcp/DotNetMcp.csproj"]
}
}
}
Windows:
{
"mcpServers": {
"dotnet": {
"command": "dotnet",
"args": ["run", "--project", "C:\\path\\to\\dotnet-mcp\\DotNetMcp\\DotNetMcp.csproj"]
}
}
}
💻 使用示例
基礎用法
配置完成後,你可以使用自然語言與 AI 助手交互:
快速開始 - 單個項目
用戶:“創建一個名為 WeatherService 的新 Web API 項目” AI:我將為你創建一個新的 Web API 項目...
dotnet new webapi -n WeatherService
項目已成功創建在 WeatherService 目錄中。
高級用法
複雜應用 - 使用 Aspire 的微服務
用戶:“創建一個由 .NET Aspire 編排的服務器端 Web 應用和最小 API,並使用 xunit 為 API 創建單元測試。使用 slnx 格式的解決方案。” AI:我將創建一個完整的微服務解決方案,使用 .NET Aspire 進行編排...
# 使用新的 XML 格式創建解決方案
dotnet new sln -n MyMicroservices --use-slnx
# 創建 .NET Aspire AppHost 用於編排
dotnet new aspire-apphost -n MyMicroservices.AppHost
# 創建 Web 應用
dotnet new webapp -n MyMicroservices.Web
# 創建最小 API
dotnet new webapi -n MyMicroservices.Api --use-minimal-apis
# 創建測試項目
dotnet new xunit -n MyMicroservices.Api.Tests
# 將項目添加到解決方案中
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
# 添加項目引用以進行測試
dotnet add MyMicroservices.Api.Tests/MyMicroservices.Api.Tests.csproj reference MyMicroservices.Api/MyMicroservices.Api.csproj
解決方案已創建,包含 4 個項目:用於編排的 AppHost、Web 應用、API 和單元測試。可以使用 dotnet run --project MyMicroservices.AppHost 運行。
數據庫驅動的應用程序 - 使用 Entity Framework
用戶:“為我的 API 設置 Entity Framework Core 和 SQL Server,並創建初始數據庫遷移” AI:我將添加 EF Core 包,安裝 dotnet-ef 工具,並創建初始遷移...
# 添加 Entity Framework 包
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Design
# 全局安裝 dotnet-ef 工具
dotnet tool install dotnet-ef --global
# 創建初始遷移
dotnet ef migrations add InitialCreate
# 應用遷移以創建數據庫
dotnet ef database update
已添加 Entity Framework Core 與 SQL Server 提供程序。初始遷移已創建並應用。數據庫已準備好使用。
用戶:“我在 DbContext 中添加了一個 Product 實體。更新數據庫架構” AI:我將為你的 Product 實體創建遷移並應用它...
# 為新實體創建遷移
dotnet ef migrations add AddProductEntity
# 列出遷移以查看待處理的遷移
dotnet ef migrations list
# 應用遷移
dotnet ef database update
已為 Product 實體創建遷移(包含 Id、Name、Price、CreatedDate 列的新表)。數據庫已成功更新。
用戶:“生成最後一次遷移的 SQL 腳本,以便我在生產部署前進行審核” AI:我將從你的遷移中生成一個冪等 SQL 腳本...
# 生成冪等 SQL 腳本(可以安全地多次運行)
dotnet ef migrations script --idempotent --output deploy.sql
已將 SQL 腳本生成到 deploy.sql。此腳本可以安全地多次運行,並且只會在需要時應用更改。
數據庫優先開發
用戶:“我有一個現有的 SQL Server 數據庫。將其逆向工程為 Entity Framework 類” AI:我將把你的數據庫腳手架化為 Entity Framework Core 實體...
# 將數據庫逆向工程(腳手架化)為 EF Core 實體
dotnet ef dbcontext scaffold "Server=localhost;Database=MyExistingDb;Trusted_Connection=true;" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models
# 列出生成的 DbContext 類
dotnet ef dbcontext list
# 獲取 DbContext 的詳細信息
dotnet ef dbcontext info
數據庫已成功腳手架化。在 Models 文件夾中生成了 MyExistingDbContext.cs 和 15 個實體類(如 Customer、Order、Product 等)。
多目標測試策略
用戶:“添加使用 NUnit 的集成測試,目標為 .NET 8 和 .NET 10,並配置它們以運行代碼覆蓋率” AI:我將設置具有覆蓋率的多目標集成測試...
# 創建 NUnit 測試項目
dotnet new nunit -n MyMicroservices.IntegrationTests
# 更新項目以支持多目標(編輯 .csproj)
# <TargetFrameworks>net8.0;net10.0</TargetFrameworks>
# 添加集成測試包
dotnet add MyMicroservices.IntegrationTests package Microsoft.AspNetCore.Mvc.Testing
dotnet add MyMicroservices.IntegrationTests package Microsoft.Testing.Extensions.CodeCoverage
# 為兩個框架運行帶有覆蓋率的測試
dotnet test -- --coverage --coverage-output-format cobertura
已創建支持多目標的集成測試項目。測試將在 .NET 8 和 .NET 10 上運行,並啟用代碼覆蓋率。
探索和發現
用戶:“有哪些可用於創建雲原生應用程序的模板?” AI:讓我搜索與雲原生相關的模板...
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 Functions 和容器應用模板
每個模板都專為雲原生微服務和分佈式應用程序設計。
現代化工作流程
用戶:“將所有包更新到最新版本,根據我們的 editorconfig 規則格式化所有代碼,然後構建並運行測試” AI:我將更新包、格式化代碼、構建並測試...
# 將所有包更新到最新兼容版本
dotnet package update
# 根據 .editorconfig 格式化所有代碼
dotnet format
# 清理並重新構建
dotnet clean
dotnet build -c Release
# 運行所有測試
dotnet test --verbosity detailed
所有包已更新到最新版本。解決方案中的代碼已一致格式化。構建成功,無警告。所有 156 個測試均通過。
HTTPS 開發設置
用戶:“運行我的 Web 應用時遇到 HTTPS 證書錯誤” AI:讓我檢查你的 HTTPS 開發證書...
# 檢查證書狀態
dotnet dev-certs https --check --trust
你的證書不受信任。讓我修復這個問題...
# 信任證書(可能需要提升權限)
dotnet dev-certs https --trust
證書現在受信任。再次嘗試運行你的應用。如果你使用 Docker,可以導出證書:
# 為 Docker 容器導出證書
dotnet dev-certs https --export-path ./certs/aspnetapp.pfx --password "SecurePassword123!"
證書已導出到 ./certs/aspnetapp.pfx。你現在可以將其掛載到 Docker 容器中。
安全配置 - 使用用戶機密
用戶:“為我的 API 項目設置用戶機密,並添加數據庫連接字符串” AI:我將為你的項目初始化用戶機密...
# 初始化用戶機密(在項目文件中添加 UserSecretsId)
dotnet user-secrets init --project MyApi/MyApi.csproj
現在我將安全地添加你的數據庫連接字符串...
# 存儲連接字符串(不會提交到 Git)
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Server=localhost;Database=MyDb;User=dev;Password=secret123"
機密已存儲!你還可以添加 API 密鑰:
# 添加 Azure OpenAI API 密鑰
dotnet user-secrets set "Azure:OpenAI:ApiKey" "sk-..."
# 添加 SendGrid API 密鑰
dotnet user-secrets set "SendGrid:ApiKey" "SG...."
讓我展示已配置的內容:
# 列出所有機密
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 Key Vault 或環境變量。
📚 詳細文檔
可用工具
服務器通過 MCP 工具和資源提供全面的 .NET 開發功能:
MCP 資源(只讀上下文)
服務器公開了只讀資源,可高效訪問 .NET 環境元數據:
- dotnet://sdk-info - 已安裝的 .NET SDK 信息(版本和路徑)
- dotnet://runtime-info - 已安裝的 .NET 運行時信息(版本和類型)
- dotnet://templates - 已安裝的 .NET 模板的完整目錄及其元數據
- dotnet://frameworks - 支持的 .NET 框架信息(TFMs),包括 LTS 狀態
資源提供結構化的 JSON 數據,對於頻繁訪問的只讀信息,比工具調用更高效。
工具 - 模板與框架
- dotnet_template_list - 列出所有已安裝的 .NET 模板及其元數據
- dotnet_template_search - 按名稱或描述搜索模板
- dotnet_template_info - 獲取詳細的模板信息和參數
- dotnet_template_clear_cache - 清除模板緩存,強制從磁盤重新加載
- dotnet_framework_info - 獲取 .NET 框架版本信息和 LTS 狀態
工具 - 項目管理
- dotnet_project_new - 根據模板創建新的 .NET 項目
- dotnet_project_restore - 恢復項目依賴項
- dotnet_project_build - 構建 .NET 項目
- dotnet_project_run - 構建並運行 .NET 項目
- dotnet_project_test - 運行單元測試
- dotnet_project_publish - 發佈項目以進行部署
- dotnet_project_clean - 清理構建輸出
- dotnet_pack_create - 從項目創建 NuGet 包
- dotnet_watch_run - 運行並監視文件更改,支持熱重載
- dotnet_watch_test - 運行測試,文件更改時自動重啟
- dotnet_watch_build - 文件更改時自動重新構建
工具 - 包管理
- dotnet_package_add - 添加 NuGet 包引用
- dotnet_package_remove - 移除 NuGet 包引用
- dotnet_package_search - 在 nuget.org 上搜索 NuGet 包
- dotnet_package_update - 將 NuGet 包更新到較新版本
- dotnet_package_list - 列出包引用(包括過時/已棄用的包)
- dotnet_reference_add - 添加項目到項目的引用
- dotnet_reference_remove - 移除項目到項目的引用
- dotnet_reference_list - 列出項目引用
工具 - 工具管理
- dotnet_tool_install - 全局或本地安裝 .NET 工具到工具清單
- dotnet_tool_list - 列出已安裝的 .NET 工具(全局或從清單中本地安裝的)
- dotnet_tool_update - 將 .NET 工具更新到較新版本
- dotnet_tool_uninstall - 卸載 .NET 工具
- dotnet_tool_restore - 從工具清單(.config/dotnet-tools.json)恢復工具
- dotnet_tool_manifest_create - 創建 .NET 工具清單文件(.config/dotnet-tools.json)
- dotnet_tool_search - 在 NuGet.org 上搜索 .NET 工具
- dotnet_tool_run - 通過命令名稱運行 .NET 工具
工具 - Entity Framework Core
Entity Framework Core 工具需要安裝 dotnet-ef 工具(dotnet tool install dotnet-ef --global),並且項目中需要包含 Microsoft.EntityFrameworkCore.Design 包。
遷移管理:
- dotnet_ef_migrations_add - 為數據庫架構更改創建新的遷移
- dotnet_ef_migrations_list - 列出所有遷移(已應用和待處理的)
- dotnet_ef_migrations_remove - 移除最後一個未應用的遷移
- dotnet_ef_migrations_script - 從遷移生成 SQL 腳本以進行部署
數據庫管理:
- dotnet_ef_database_update - 應用遷移以更新數據庫架構
- dotnet_ef_database_drop - 刪除數據庫(僅用於開發環境,需要強制標誌)
DbContext 工具:
- dotnet_ef_dbcontext_list - 列出項目中的所有 DbContext 類
- dotnet_ef_dbcontext_info - 獲取 DbContext 信息(連接字符串、提供程序)
- dotnet_ef_dbcontext_scaffold - 將數據庫逆向工程為實體類(數據庫優先)
工具 - 解決方案管理
- dotnet_solution_create - 創建新的解決方案文件(.sln 或 .slnx 格式)
- dotnet_solution_add - 將項目添加到解決方案中
- dotnet_solution_list - 列出解決方案中的項目
- dotnet_solution_remove - 從解決方案中移除項目
工具 - 代碼質量
- dotnet_format - 根據 .editorconfig 和樣式規則格式化代碼
工具 - 安全與證書
- dotnet_certificate_trust - 信任 HTTPS 開發證書(可能需要提升權限)
- dotnet_certificate_check - 檢查 HTTPS 證書是否存在且受信任
- dotnet_certificate_clean - 移除所有 HTTPS 開發證書
- dotnet_certificate_export - 將 HTTPS 證書導出到文件(支持 PFX 和 PEM 格式)
- dotnet_secrets_init - 為項目初始化用戶機密(創建 UserSecretsId)
- dotnet_secrets_set - 設置用戶機密值(將敏感配置存儲在項目外部)
- dotnet_secrets_list - 列出項目的所有用戶機密
- dotnet_secrets_remove - 按密鑰移除特定的用戶機密
- dotnet_secrets_clear - 清除項目的所有用戶機密
工具 - 實用工具
- dotnet_nuget_locals - 管理 NuGet 本地緩存(列出、清除)
工具 - SDK 信息
- dotnet_sdk_version - 獲取 .NET SDK 版本
- dotnet_sdk_info - 獲取詳細的 SDK 和運行時信息
- dotnet_sdk_list - 列出已安裝的 SDK
- dotnet_runtime_list - 列出已安裝的運行時
工具 - 幫助
- dotnet_help - 獲取任何 dotnet 命令的幫助
- dotnet_server_capabilities - 獲取 MCP 服務器功能和併發指導
從源代碼構建
如果你需要進行開發或貢獻代碼,可以按照以下步驟操作:
git clone https://github.com/jongalloway/dotnet-mcp.git
cd dotnet-mcp/DotNetMcp
dotnet build
運行服務器:
dotnet run
服務器通過 stdio 傳輸進行通信,設計為由 MCP 客戶端調用。
項目結構
dotnet-mcp/
├── DotNetMcp/ # 主 MCP 服務器項目
│ ├── DotNetMcp.csproj # 包含 NuGet 依賴項的項目文件
│ ├── Program.cs # MCP 服務器設置和託管
│ ├── DotNetCliTools.cs # MCP 工具實現(44 個工具)
│ ├── DotNetResources.cs # MCP 資源實現(SDK、運行時、模板、框架)
│ ├── DotNetCommandExecutor.cs # 帶日誌記錄的命令執行幫助程序
│ ├── DotNetSdkConstants.cs # 強類型的 SDK 常量(TFMs、配置、運行時)
│ ├── TemplateEngineHelper.cs # 帶有緩存的模板引擎集成
│ └── FrameworkHelper.cs # 框架驗證和元數據幫助程序
├── DotNetMcp.Tests/ # 單元測試項目
│ ├── DotNetMcp.Tests.csproj # 測試項目文件(xUnit、FluentAssertions、Moq)
│ ├── FrameworkHelperTests.cs # 框架驗證和元數據測試
│ └── DotNetSdkConstantsTests.cs # SDK 常量驗證測試
├── doc/
│ ├── sdk-integration.md # SDK 集成架構文檔
│ ├── advanced-topics.md # 性能、日誌記錄和安全細節
│ ├── concurrency.md # 併發安全和編排指導
│ └── testing.md # 如何運行測試(包括可選的交互式測試)
├── .github/
│ ├── copilot-instructions.md # GitHub Copilot 開發指南
│ ├── dependabot.yml # 自動依賴項更新
│ └── workflows/
│ └── build.yml # CI/CD 構建和測試工作流
├── DotNetMcp.slnx # 解決方案文件(基於 XML 的 .slnx 格式)
├── LICENSE # MIT 許可證
└── README.md # 本文件
技術棧
| 屬性 | 詳情 |
|---|---|
| 協議 | Model Context Protocol (MCP) |
| SDK | MCP SDK for .NET v0.5.0-preview.1 |
| 運行時 | .NET 10.0(目標框架) |
| 傳輸方式 | stdio(標準輸入/輸出) |
| NuGet 包 | Microsoft.TemplateEngine.Abstractions & Edge - 模板元數據;Microsoft.Build.Utilities.Core & Microsoft.Build - 項目驗證 |
文檔鏈接
- 📖 SDK 集成詳情 - 技術架構和 SDK 使用方法
- 📖 高級主題 - 性能、日誌記錄和安全細節
- 📖 併發安全 - AI 編排器的並行執行指導
- 📖 測試 - 如何運行測試(包括可選的交互式測試)
- 📖 Model Context Protocol - 官方 MCP 規範
- 📖 MCP C# SDK 文檔 - SDK 文檔
互操作性
.NET MCP 服務器遵循 Model Context Protocol 規範,併為工具發現和 AI 編排提供豐富的元數據:
服務器元數據
服務器包含一個全面的 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
- 包:
-
工具描述符:全面的工具元數據,包括:
- 使用
dotnet_前綴的工具 ID,以避免命名衝突 - 類別標籤(模板、項目、包、解決方案等)
- 用於語義搜索的發現標籤(例如,“build”、“compile”、“test”)
commonlyUsed標誌,標記前 10 個最常用的工具
- 使用
-
資源描述符:用於高效元數據訪問的只讀資源
dotnet://sdk-info- SDK 版本和路徑信息dotnet://runtime-info- 運行時安裝詳細信息dotnet://templates- 帶有參數的模板目錄dotnet://frameworks- 帶有 LTS 狀態的框架版本
工具命名空間
所有工具在其外部 ID 中使用 dotnet_ 前綴,以防止與其他 MCP 服務器發生命名衝突。這遵循了 MCP 服務器互操作性的最佳實踐:
示例:
dotnet_project_new- 創建新項目dotnet_project_build- 構建項目dotnet_package_add- 添加 NuGet 包dotnet_solution_create- 創建解決方案文件
發現標籤
前 10 個常用工具包含語義標籤,以提高可發現性:
- dotnet_template_list -
["template", "list", "discovery", "project-creation"] - dotnet_project_new -
["project", "create", "new", "template", "initialization"] - dotnet_project_restore -
["project", "restore", "dependencies", "packages", "setup"] - dotnet_project_build -
["project", "build", "compile", "compilation"] - dotnet_project_run -
["project", "run", "execute", "launch", "development"] - dotnet_project_test -
["project", "test", "testing", "unit-test", "validation"] - dotnet_package_add -
["package", "add", "nuget", "dependency", "install"] - dotnet_package_search -
["package", "search", "nuget", "discovery", "find"] - dotnet_solution_create -
["solution", "create", "new", "organization", "multi-project"] - dotnet_tool_install -
["tool", "install", "global", "local", "cli"]
這些標籤使 AI 助手能夠:
- 根據語義意圖查找相關工具
- 對相關操作進行分組,以提供工作流建議
- 在推薦中優先考慮常用工具
元數據訪問
AI 編排器可以通過以下方式訪問服務器元數據:
- MCP 協議:通過 MCP SDK 進行標準的工具/資源列表操作
- server.json:用於註冊和發現的靜態元數據文件
- 工具屬性:通過代碼中的
McpMeta屬性獲取運行時元數據
有關詳細的集成示例,請參閱 MCP 規範 和我們的 SDK 集成文檔。
🔧 技術細節
工作原理
sequenceDiagram
participant User
participant AI as AI Assistant
participant MCP as .NET MCP Server
participant SDK as .NET SDK
User->>AI: "Create a console app called MyApp"
AI->>MCP: dotnet_project_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 服務器作為智能中間件,執行以下操作:
- 翻譯:將自然語言請求轉換為結構化的 .NET SDK 操作
- 驗證:使用官方 SDK 元數據(模板、框架、包)驗證參數
- 執行:安全地執行命令,並進行正確的錯誤處理
- 返回:返回 AI 助手可以理解和解釋的結構化結果
📄 許可證
本項目採用 MIT 許可證,詳情請參閱 LICENSE 文件。
貢獻說明
歡迎為該項目做出貢獻!這是一個由社區維護的項目。
貢獻方式:
- 🐛 通過 GitHub Issues 報告錯誤或請求新功能
- 💡 提交拉取請求,添加新工具或進行改進
- 📝 改進文檔
- ⭐ 給倉庫加星以表示支持
開發設置:
- 分叉倉庫
- 克隆你的分叉
- 創建功能分支
- 進行更改
- 徹底測試
- 提交拉取請求
請參閱 .github/copilot-instructions.md 瞭解開發指南。
故障排除
"dnx 未找到"
- 原因:未安裝 .NET 10 SDK
- 解決方案:安裝 .NET 10 SDK 或使用
dotnet run進行手動配置
"未找到模板"
- 原因:未安裝 .NET SDK 模板
- 解決方案:運行
dotnet new --install安裝默認模板
"服務器無響應"
- 原因:服務器崩潰或未能啟動
- 解決方案:檢查 MCP 客戶端中的日誌,確保 .NET SDK 在 PATH 中
需要幫助?
- 📖 查看 文檔
- 💬 打開 GitHub Issue
- 🔍 搜索 現有問題
相關的 Microsoft MCP
此 .NET MCP 服務器專注於 .NET SDK 操作(構建、運行、測試、模板、SDK 管理)。對於特定場景,可考慮以下互補的官方 Microsoft MCP 服務器:
- NuGet MCP Server - 高級 NuGet 包搜索、元數據和自動化場景,超越基本的包管理
- Aspire MCP Server - 用於 .NET Aspire 應用程序的運行時監控、遙測、分佈式跟蹤和資源管理
這些 MCP 與 .NET MCP 協同工作,全面覆蓋 .NET 開發生命週期:
| 功能 | .NET MCP | NuGet MCP | Aspire MCP |
|---|---|---|---|
| 主要關注點 | .NET SDK 操作 | 包元數據/發現 | 運行時監控 |
| 範圍 | CLI 命令(構建、運行、測試) | NuGet 搜索和自動化 | Aspire 應用程序遙測 |
| 階段 | 開發階段 | 開發/發現階段 | 運行時/生產階段 |
| 示例操作 | dotnet build、dotnet new |
包搜索、READMEs | 日誌查看、跟蹤 |
替代品








