mcpField
D
dotnet-template-mcp

dotnet-template-mcp

ローカル
github.com/YuliiaKovalova開発ツール810 週間前に更新

dotnet-template-mcp について

dotnet-template-mcpは、`dotnet new`テンプレートを検索、確認、プレビューし、プロジェクトを作成するMCPサーバーです。テンプレート検証とソリューション分析にも対応し、作成時には不足パラメーターの入力や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

AI エージェントが dotnet new テンプレートを使って作業できる MCP サーバーです。CLI フラグを暗記しなくても、自然な会話を通じてテンプレートの検索、確認、プレビュー、プロジェクトの作成ができます。

DotnetTemplateMCP MCP server

たとえば、次のように入力する代わりに:

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

AI エージェントに「認証とコントローラーを備えた 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."
  ]
}

検出できる問題: 必須フィールドの欠落、無効な ID 形式、CLI コマンドとの短い名前の競合、パラメーターの問題(既定値の欠落、選択肢が空、プレフィックスの競合、型の不一致)、計算シンボルの破損、制約の設定ミス、タグの欠落。

公式ツールとの関係。 Microsoft はすでにテンプレート作成の検証ツールを提供しています。ぜひ知っておいてください。

公式ツール提供される機能
Microsoft.TemplateEngine.Authoring.CLIdotnet template-authoring validate — リファレンス検証ツール
Microsoft.TemplateEngine.Authoring.TasksMSBuild タスクとして、ビルド時に検証
Microsoft.TemplateEngine.Authoring.TemplateVerifierテンプレート出力のスナップショットテスト

template_validate が追加するのは、検証そのものではなく、その提供方法です。errors/warnings/suggestions に分けられ、修正方法を示すメッセージを含む、単一の構造化 JSON ペイロードを返します。テンプレートをすでに編集しているエージェントに対して、インバンドで結果を返すため、インストールも出力の解析も、ワークフロー内での別ツールも必要ありません。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 — LLM は不要です
template_create_from_existing.csproj を分析し、リポジトリの規約に合った再利用可能なテンプレートを生成します
template_compose一連のテンプレート(プロジェクト+項目)を 1 つのワークフローで実行します
template_suggest_parametersパラメーター間の関係に基づき、理由を添えてパラメーター値を提案します
template_validate公開前に、ローカルのテンプレートディレクトリに作成上の問題がないか検証します
template_compare2 つ以上のテンプレートを、パラメーター、機能、フレームワークごとに並べて比較します
solution_analyzeソリューション/ワークスペースを分析し、プロジェクト構成、フレームワーク、CPM の状態を確認します
packages_upgradeプロジェクト/ソリューション/フォルダー内をスキャンして古い NuGet バージョンを検出し、アップグレードを報告または適用します(CPM を考慮)

📖 ツールの詳細リファレンス →

ホスト型デプロイ

Frontier 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 のプロセス全体で共有されるシングルトンであるため、インストール済みテンプレートのセットはすべての呼び出し元で共有され、ワークスペースのルートもプロセス全体で共有されます。信頼できるチームまたはテナントごとにインスタンスを 1 つ実行してください。互いに信頼関係のないユーザーに単一のインスタンスを公開しないでください。

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

HTTP サーバーが公開するエンドポイント:

  • /mcp — MCP ストリーマブル HTTP エンドポイント(ベアラートークン必須)
  • /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 を有効のまま維持)、ファイル書き込み前のパラメーター検証、制約チェック(OS、SDK、ワークロード)、不足している必須パラメーターの対話型エリシテーションを行い、インストールされていないテンプレートは NuGet から自動解決します。

CPM と最新のパッケージバージョン

Central Package Management を使用しているソリューション内でプロジェクトを作成すると、サーバーは自動的に次の処理を行います:

  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 を使うと、1 回の呼び出しで複数のテンプレートを連結できます:

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

📖 アーキテクチャとスマートな動作 →

ツールプロファイル(Lite と Full)

デフォルトでは、15 個すべてのツールが利用できます。エージェントが少ないツールのほうが適切に動作する場合は、MCP_TEMPLATE_TOOL_PROFILE 環境変数を設定してください:

プロファイルツール使用する場面
full(デフォルト)15 個すべてのツール高度なワークフロー、合成、カスタムテンプレートなど、すべてを制御する場合
lite5 個のコアツールプロジェクトの検索と作成だけが必要な、よりシンプルなエージェント向け

Lite プロファイルのツール: 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"
      }
    }
  }
}

Lite プロファイルに含まれないツールを呼び出すと、そのツールが無効であることと、有効にする方法を説明するメッセージが返されます。

ドキュメント

ドキュメント内容
設定VS Code、Claude Desktop、Cursor のセットアップとトラブルシューティング
ツールリファレンス各ツールのパラメーター、型、使用例
アーキテクチャテンプレートキャッシュ、スマートな動作、テレメトリー、プロジェクト構成
MCP と SkillsCopilot Skills ではなく MCP を選ぶ理由 — メリットとデメリット
通常の LLM と MCP通常の LLM と MCP ツールの動作を比較 — 4 つのシナリオ
Skills での代替方法Skills で代替する場合に必要なこと

ビルドとテスト

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

CI は GitHub Actions を通じてプッシュ時/PR 時に実行されます(Ubuntu + Windows)。

コントリビューション

コントリビューションを歓迎します!変更案を提出する前に、まず issue を開いて内容をご相談ください。

# Setup
dotnet restore
dotnet build

# Run tests
dotnet test

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

変更履歴

リリース履歴については CHANGELOG.md をご覧ください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。