mcpField
D
dotnet-template-mcp

dotnet-template-mcp

本地服务
github.com/YuliiaKovalova开发工具810 周前更新

关于 dotnet-template-mcp

dotnet-template-mcp 是一个 MCP 服务,用于发现、检查、预览并通过 `dotnet new` 模板创建项目。它还支持模板验证和解决方案分析,创建项目时可收集缺失参数并从 NuGet 解析模板。

主要功能

  1. 01搜索已安装模板和 NuGet.org
  2. 02检查参数并预览生成文件
  3. 03通过参数验证和交互收集创建项目
  4. 04验证本地模板并比较模板
  5. 05组合模板工作流并分析解决方案
  6. 06扫描项目中的过期 NuGet 包

适用场景

  1. 01根据项目描述查找合适模板
  2. 02创建前预览项目文件
  3. 03检查自定义模板的编写问题
  4. 04检查解决方案结构和过期包版本

MCP 相关

它将模板和 .NET 项目操作作为 MCP 工具提供。支持 stdio 和 Streamable HTTP 传输;HTTP 访问必须使用令牌,除非明确启用匿名访问。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetDotnetTemplateMCP2.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

DotnetTemplateMCP

一个 MCP 服务,让 AI Agent 可以通过自然对话使用 dotnet new 模板来搜索、检查、预览和创建项目,无需记住 CLI 标志。

DotnetTemplateMCP MCP 服务

而不是这样:

dotnet new list --language C#
dotnet new webapi --help
dotnet new webapi --auth Individual --use-controllers --name MyApi --output ./MyApi

你的 AI Agent 只需说:“我需要一个带身份验证和控制器的 Web API”,MCP 服务就会处理其余事项。

面向作者的模板验证

正在构建自定义 dotnet new 模板?template_validate 可以在你发布之前发现问题,不必再猜测 template.json 是否正确:

Agent calls: template_validate("./my-template")

← Returns:
{
  "valid": false,
  "summary": "2 error(s), 1 warning(s), 3 suggestion(s)",
  "errors": [
    "Missing required field 'shortName'.",
    "Parameter 'Framework': default value 'net7.0' is not in the choices list."
  ],
  "warnings": [
    "Missing 'sourceName'. Without it, the generated project name won't be customizable via --name."
  ],
  "suggestions": [
    "Consider adding a 'description' field to help users understand what this template creates.",
    "Consider adding 'language' tag (e.g., 'C#') for better discoverability.",
    "Consider adding 'type' tag (e.g., 'project', 'item') for filtering."
  ]
}

它可以发现: 缺少必需字段、标识格式无效、短名称与 CLI 命令冲突、参数问题(缺少默认值、选项为空、前缀冲突、类型不匹配)、计算符号错误、约束配置不当,以及缺少标签。

与官方工具的关系。 Microsoft 已提供模板创作验证工具,你应该了解它们:

官方工具提供的功能
Microsoft.TemplateEngine.Authoring.CLIdotnet template-authoring validate — 参考验证器
Microsoft.TemplateEngine.Authoring.Tasks在构建时通过 MSBuild 任务进行验证
Microsoft.TemplateEngine.Authoring.TemplateVerifier对模板输出进行快照测试

template_validate 增加的不是验证本身,而是交付方式:它将结果整理成一个结构化 JSON 负载,分为 errors/warnings/suggestions,并提供以修复为导向的消息,直接返回给正在编辑模板的 Agent。无需安装、解析输出,也无需在工作流中调用第二个工具。如果你是在 CI 中手动创作模板,请优先使用上述官方工具;它们是参考实现,并且覆盖了本工具不支持的情况。

工具

工具功能
template_search在本地和 NuGet.org 上搜索 — 一次调用即可获取排序后的结果
template_list列出已安装的模板,并按语言/类型/分类筛选
template_inspect一次查看参数、约束和后续操作
template_instantiate创建项目。如果模板尚未安装,则自动从 NuGet 解析。交互式提示缺失的参数
template_dry_run预览文件,不触碰磁盘
template_install安装包(幂等 — 如果已安装则跳过)
template_uninstall移除模板包
templates_installed查看所有已安装项目的清单
template_from_intent“带身份验证的 Web API” → webapi + auth=Individual — 无需大模型
template_create_from_existing分析一个 .csproj → 生成符合仓库约定的可复用模板
template_compose在一个工作流中按顺序执行多个模板(项目 + 项)
template_suggest_parameters根据参数间关系提出参数值建议,并说明理由
template_validate在发布前检查本地模板目录中的创作问题
template_compare并排比较 2 个或更多模板 — 参数、功能和框架
solution_analyze分析解决方案/工作区 — 项目结构、框架、CPM 状态
packages_upgrade扫描项目/解决方案/文件夹中的过时 NuGet 版本,并报告或应用升级(支持 CPM)

📖 完整工具参考 →

托管部署

可通过 Fronteir AI 使用托管部署。

快速开始

全局工具(.NET 8+)
dotnet tool install --global DotnetTemplateMCP --version 2.0.0
使用 dnx 零安装(.NET 10+)
dnx -y DotnetTemplateMCP --version 2.0.0
VS Code / GitHub Copilot

添加到 mcp.json:

{
  "servers": {
    "dotnet-templates": {
      "type": "stdio",
      "command": "dnx",
      "args": ["-y", "DotnetTemplateMCP", "--version", "2.0.0"]
    }
  }
}

📖 Claude Desktop、Cursor 等 →

传输模式

Stdio(默认)

用于本地 CLI 和工具的标准 I/O 传输:

template-engine-mcp                     # stdio is the default
template-engine-mcp --transport stdio   # explicit
HTTP(远程 / 团队共享)

用于远程或 CI/CD 部署的流式 HTTP 传输。

必须进行身份验证。 此服务中的每个工具都会写入文件并安装 NuGet 包,因此开放端点会带来远程代码执行风险。除非你设置令牌或明确选择允许匿名访问,否则服务会拒绝启动 HTTP 传输:

# Recommended
MCP_TEMPLATE_HTTP_TOKEN=<shared-secret> template-engine-mcp --transport http

# Only for a trusted, isolated network
MCP_TEMPLATE_HTTP_ALLOW_ANONYMOUS=true template-engine-mcp --transport http

客户端使用 Authorization: Bearer <shared-secret> 进行身份验证。对 /mcp 的请求会按客户端进行速率限制(默认每分钟 120 次,MCP_TEMPLATE_HTTP_RATE_LIMIT=0 可禁用)。探测请求仍可匿名访问 /health。

不支持多租户。 TemplateEngineService 是进程级单例,且 virtualizeSettings: false,因此所有调用者共享已安装模板的集合,工作区根目录也由整个进程共享。请为每个可信团队或租户运行一个实例,不要将单个实例暴露给互不信任的用户。

template-engine-mcp --transport http
# or via environment variable:
MCP_TEMPLATE_TRANSPORT=http template-engine-mcp

HTTP 服务公开以下端点:

  • /mcp — MCP 流式 HTTP 端点(需要 Bearer 令牌)
  • /health — 健康检查端点(允许匿名访问)

配置监听 URL:

MCP_TEMPLATE_HTTP_URL=http://0.0.0.0:8080 template-engine-mcp --transport http

连接 MCP 客户端:

{
  "servers": {
    "dotnet-templates": {
      "type": "http",
      "url": "http://localhost:5005/mcp"
    }
  }
}
交互式参数收集

如果模板有未提供的必需参数,服务会通过 MCP 参数收集功能交互式询问用户,而不是报错。模板参数类型会映射到表单字段:

模板参数参数收集字段
string文本输入
bool / boolean复选框
int / number数字输入
选项参数单选下拉菜单

使用 MCP_TEMPLATE_ELICITATION=false 禁用。

工作原理

You: "I need a web API with authentication, controllers, and Docker support"

→ template_from_intent extracts keywords: web api, authentication, controllers, docker
→ Matches: webapi (confidence: 0.85)
→ Resolves: auth=Individual, UseControllers=true, EnableDocker=true
→ template_instantiate creates the project

服务还会提供智能默认值(AOT → 最新框架版本,身份验证 → 保持启用 HTTPS)、写入文件前的参数验证、约束检查(操作系统、SDK、工作负载)、对缺失必需参数进行交互式收集,并在模板尚未安装时从 NuGet 自动解析模板。

CPM 和最新包版本

在使用中央包管理的解决方案中创建项目时,服务会自动:

  1. 检测目录树中的 Directory.Packages.props
  2. 从生成的 .csproj PackageReference 中移除 Version 属性
  3. 将缺少的 <PackageVersion> 条目添加到 Directory.Packages.props
  4. 解析最新的稳定版 NuGet,避免使用模板中的过时硬编码版本
Before (what dotnet new generates):
  <PackageReference Include="Serilog" Version="3.1.0" />    ← stale, breaks CPM

After (what template_instantiate produces):
  .csproj:                    <PackageReference Include="Serilog" />
  Directory.Packages.props:   <PackageVersion Include="Serilog" Version="4.2.0" />

独立项目也适用——版本会直接在 .csproj 中更新。

多模板组合

通过一次 template_compose 调用串联多个模板:

[
  {"templateName": "webapi", "name": "MyApi", "parametersJson": "{\"auth\": \"Individual\"}"},
  {"templateName": "gitignore", "target": "."}
]

📖 架构和智能行为 →

工具配置(精简版与完整版)

默认情况下,全部 15 个工具均可用。如果你的 Agent 使用较少工具时效果更好,请设置 MCP_TEMPLATE_TOOL_PROFILE 环境变量:

配置工具适用场景
full(默认)全部 15 个工具全面控制——高级工作流、组合、自定义模板
lite5 个核心工具只需查找和创建项目的简易 Agent

精简版配置中的工具: template_from_intent、template_instantiate、template_inspect、template_search、template_dry_run

{
  "servers": {
    "dotnet-template-mcp": {
      "command": "dotnet-template-mcp",
      "env": {
        "MCP_TEMPLATE_TOOL_PROFILE": "lite"
      }
    }
  }
}

非精简版工具会返回提示信息,说明这些工具已禁用以及如何启用。

文档

文档内容
配置VS Code、Claude Desktop、Cursor 的设置和故障排除
工具参考每个工具的参数、类型和示例
架构模板缓存、智能行为、遥测、项目结构
MCP 与 Skills为什么选择 MCP 而不是 Copilot Skills——优势和不足
普通 LLM 与 MCP对比:普通 LLM 与 MCP 工具的表现(4 种场景)
Skills 的等效方案要用 Skills 实现相同功能需要做些什么

构建与测试

dotnet build
dotnet test    # 185+ tests — unit, integration, and E2E

CI 通过 GitHub Actions 在推送和 PR 时运行(Ubuntu + Windows)。

贡献

欢迎贡献!提交 PR 前,请先创建 issue 讨论拟议的更改。

# Setup
dotnet restore
dotnet build

# Run tests
dotnet test

# Pack locally
dotnet pack src/DotnetTemplateMcp -o nupkg/

更新日志

查看 CHANGELOG.md 了解发布历史。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。