射影剤ツールキット
Projectional Agent Toolkit は、MPS プロジェクトを AI コーディングエージェントが利用できるようにします。このツールキットには、MCP(モデルコンテキストプロトコル)サーバーと、MPS 固有のスキルを厳選したカタログが同梱されているため、Claude Code、JetBrains AI Assistant、その他の MCP 対応ツールなどのエージェントは、.mps XML ファイルの脆弱なテキスト編集に頼ることなく、構造的に安全な方法で MPS 言語とモデルを移動、理解、変更できます。
ツールキットが提供するもの
ツールキットが有効になり、エージェントに接続されると、エージェントは以下のメリットを得ます。
射影型 MCP ツールは、稼働中の MPS リポジトリ上で動作するモジュール、モデル、ルートノード、完全な SNode ツリー、言語構造、エディター宣言、生成、実行構成、プロジェクト全体の検索機能を提供します。エージェントは、シリアル化された XML を編集する代わりに、これらのツールを使用してモデルを読み書きします。
JSON ノードの設計図は、概念、プロパティ、子ノード、参照に基づいてノードを作成および更新するためのツールであり、大規模なツリーの一括ルート挿入や段階的構築にも対応しています。
検証ツールは、ノード、ルートノード、モデル全体を、MPS が対話的に使用するのと同じ問題ディテクター(エラー、警告、情報メッセージ)に対してチェックします。
統合の構築と実行は、エージェントがモデルを再生成し、モジュールを再構築し、JUnit スタイルの MPS テストを実行し、標準の MPS 実行構成を通じて
IMainClassまたはITestCaseルートを起動できるようにします。MPS スキルカタログをバンドルしたもの — プロジェクトにオンデマンドでインストールされるこのツールキットは、エージェントにツールキットの正しい使い方を学習させます。学習内容は、概念構造やノード編集から、エディター、制約、型システム、動作、ジェネレーター、マイグレーション、インテンション、データフロー、TextGen といった特定の側面、さらには言語分析、BaseLanguage の使い方、テスト、MPS ビルド言語まで多岐にわたります。詳細については、下記のスキルの組み合わせセクションを参照してください。
その結果、モデルの構造内に留まり、制約、参照、使用されている言語を考慮しながら、言語に関する複雑な質問に答え、モデル内の問題を特定し、新しい概念やエディターを生成し、ジェネレーターテンプレートを作成し、一括リファクタリングを適用できるエージェントが実現します。
始める前に
射影エージェントツールキットを使用するには、以下が必要です。
JetBrains MPS 2026.1 以降のバージョンで、同梱の
Projectional Agent Toolkitプラグインが有効になっている必要があります(デフォルトで有効になっています)。たとえば、MCP 対応 AI コーディングエージェント、Claude Code、JetBrains、Junie、OpenAI、Codex、MCP サーバーに接続できるその他のツール。
開いている MPS プロジェクト。ツールキットは、実行中の MPS インスタンスで開いているプロジェクトに対して動作します。
設定方法
このツールキットは、MPS プロセス内で組み込みの MCP サーバーとして動作します。エージェントをこのツールキットに接続する方法は、他の JetBrains MCP サーバーに接続する方法と同じです。
MPS を起動し、プロジェクトを開きます。MCP サーバーが自動的に起動し、射影ツールが利用可能になります。
設定 | ツール | MCP サーバー | 公開ツールでは、エージェントに公開する個々の MCP ツールを有効または無効にします。MPS プロジェクトには関係がなく、エージェントを混乱させる可能性があるため、プラットフォームツールの一部 (
mps_mcp_ …接頭辞なし) を無効にすることを検討してください。
エージェントが MPS MCP サーバーと通信できるように設定してください。設定手順(URL、ポート、エージェントに追加する JSON スニペット)については、IDE MCP サーバーの JetBrains ヘルプページに記載されています。JetBrains MCP サーバーの設定も参照してください。MPS にも同じ手順が適用されます。
エージェントから、利用可能なツールの一覧を表示するように依頼して接続を確認してください。ツールには、
mps_mcp_ …という接頭辞が付いたもの(例:mps_mcp_get_project_structure、mps_mcp_print_node、mps_mcp_check_root_node_problems、mps_mcp_initialize_project_for_agents)が表示されるはずです。
mps_mcp_ …ツールが表示されない場合は、エージェントの MCP 構成を再確認し、MPS インスタンスが Projectional Agent Toolkit プラグインを有効にした状態で実行されていることを確認してください。
エージェントで使用するためにプロジェクトを初期化する
実際の作業を開始する前に、バンドルされている MPS スキルカタログをプロジェクトにインストールしてください。これはプロジェクトごとに一度だけ行う手順です。これにより、スキルが <projectPath>/.agents/skills/ にコピーされ、エージェントがそれらのスキルを参照するための推奨エントリポイントである AGENTS.md (または CLAUDE.md) が提供されます。
推奨される方法は、エージェントに実行を依頼することです。ツールキットには、コピーを実行して推奨コンテンツである AGENTS.md を返す専用ツール mps_mcp_initialize_project_for_agents が用意されています。
短い指示で十分な場合が多いです。
次は何が起こる:
エージェントは、あなたのオープンプロジェクトに対して
mps_mcp_initialize_project_for_agentsを呼び出します。このツールは
<projectPath>/.agents/skills/をスキャンします。そこにインストール予定のスキルと同じ名前のフォルダーが存在する場合、ツールはディスクにアクセスすることなく処理を中止し、競合を報告します。競合するフォルダーの名前を変更または削除して解決し、再度実行してください。成功した場合、ツールはバンドルされているすべてのスキルを
<projectPath>/.agents/skills/<skill-name>/にコピーし、推奨されるAGENTS.mdボディをレスポンスとして返します。エージェントはその内容を
AGENTS.mdに書き込みます(そして通常は、それを参照する 1 行のCLAUDE.mdも書き込みます)。プロジェクトルートが VCS ルートのサブフォルダーである設定では、エージェントを起動し、VCS ルートにスキルをインストールします。MPS でプロジェクトが開かれている場合、エージェントは mcp を介して MPS プロジェクトを自動的に検出します。
単一の VCS ルート領域に属する複数のプロジェクトサブフォルダーも同様に処理されます。MPS で目的のプロジェクトが開いていることを確認してください。複数のプロジェクトが開いている場合、コンテキストやプロンプトから目的のプロジェクトが明確でない場合は、エージェントがプロジェクトを特定するように求めます。
エージェントの初期化が正常に完了した後の MPS プロジェクトのルートディレクトリは次のようになります。

この時点以降、プロジェクトに対して開かれたエージェントはすべて、スキルを自動的に検出し、エントリポイントファイルに従って動作します。
エージェントの設定とスキルをリフレッシュする
MPS の各リリースには、新しいスキルや設定、またはリフレッシュされたスキルや設定が含まれる場合があります。MPS にアップグレードした後、プロジェクトのエージェントファイルをリフレッシュして最新バージョンを取得してください。簡単なプロンプトが表示されるだけで十分です。
古いスキルを使用しているエージェントはミスが多くなり、修正が必要になる可能性が高くなるため、MPS のアップグレード後は必ずスキルをリフレッシュしてください。
その他の設定に関するヒント
MPS 内のターミナルツールウィンドウは CLI コーディングエージェントの実行をサポートしているため、MPS 内でエージェントと直接やり取りできます。

特に Claude Code については、ENABLE_TOOL_SEARCH が
trueに設定されていることを確認してください(これはデフォルト値ですが、環境によっては上書きされている場合があります)。"env": { "ENABLE_TOOL_SEARCH": "true" },これにより、多数の MPS ツールによって消費されるコンテキストトークンの数が削減されます。
MCP 対応 MPS でエージェントができることに関する実践的なアイデア
MPS コードでエージェントと連携する際には、以下のヒントが役立つかもしれません。
エージェントは、エディターで現在開いているノードを確認できます。
エージェントはエディターでノードを開くことができます。彼らに依頼してください。
エージェントは、モデルチェッカーによってコード内で報告された問題(警告とエラー)を確認できます。
担当者が MPS コードについてご説明いたします。
MPS の原則についてご存知ない場合は、担当者がご説明いたします。
エージェントは、MPS コンソールでコードを記述したり、コンソールコマンドを実行したり、コンソールの履歴を閲覧したりできます。
エージェントは実行構成を作成し、それを実行できます。
複数のエージェントが同時に一つのプロジェクトに取り組むことができます。
言語構造が設定されると、複数のエージェントが言語定義のさまざまな側面を同時に処理できるようになります。
サブエージェントは、同じ MPS モデルまたは言語の独立したタスクを並行して実行するために便利に利用できます。
エージェントを使用するためにプロジェクトを初期化してください。必要なスキルがインストールされておらず、AGENTS.md/CLAUDE.md エントリポイントが設定されていない場合、エージェントのパフォーマンスは著しく低下します。
エージェントが MPS モデルファイルを直接読み書きしている場合は、そのエージェントを停止し、MPS MCP ツールを使用するようにリダイレクトしてください。
エージェントにとってコンテキストのサイズが管理しやすいように、より小さなステップで作業を進めることを推奨します。エージェントに完全な言語を設計させるのではなく、一度に 1 つの側面だけを実行させるか、大きなタスクを複数の側面にまたがる機能に分割してください。
Claude Code の
/rewindは、エージェントが会話の最新部分を忘れてしまう場合にトークンを節約できます。例: 次のような会話の場合:あなた: 「構造を定義する」
エージェント: 「構造が構築されました」
あなた: 「エディターの作成」
エージェント: 「エディター作成」
/rewindを使用すると、会話をロールバックして、エージェントにエディター作成部分を忘れさせつつ、コードはディスク上に残しておくことができます。これにより、エージェントにジェネレーターや制約アスペクトの作成を依頼する前に、コンテキストを解放できます。会話の構造部分は依然として必要なので、コンテキスト内に保持してください。より低性能なモデルを使用したい場合は:
ゴールを明確な境界を持つ小さなタスクに分割し、可能であれば各タスクの後に不要なコンテキストを削除します。
より具体的な指示を与えてください。例:
Enforce … on XではなくCreate a constraints root for concept X, define the 'can be child' function to enforce …と書いてください。/mps-mcp-workflow、/mps-model-manipulation、/mps-baselanguage、/mps-node-editingなどの必要なスキルを明示的にロードし、スキルの選択プロセスをエージェントのランダム性に任せないでください。
推奨されるエージェント構成
すべてのエージェントとモデルの組み合わせが、あらゆる種類の MPS 作業に適しているわけではありません。一般的に、最も強力なモデルは、ジェネレーター、制約、型システムの側面を定義する場合や、BaseLanguage と smodel などの拡張機能を混在させるすべてのコードに最適です。Less の強力なモデルは、構造やエディターの定義など、要求の低い側面でコストを削減できます。コードや言語のイントロスペクションは、それほど強力でないモデルでもうまく機能します。DSL でコードを作成する場合、必要なモデルの機能は、DSL の複雑さとタスクに大きく依存します。
mps-dsl-memory を使用した DSL のドキュメント作成
MPS 言語と DSL を AI エージェントと併用することで、エージェントがカスタム言語を理解し、より効果的に操作できるようにするための、プロジェクト固有のドキュメントを作成できます。
mps-dsl-memory スキルを使用すると、以下の情報を体系的に取得することで、DSL ドキュメントをブートストラップまたはリフレッシュできます。
概念階層 — どの概念がルート化可能か、それらの特性、子ロール、参照
サンドボックスの例 — 代表的なモデルインスタンスとその構造
ワークフロー — 一般的な DSL パターンを作成および編集するためのレシピ
注意点―言語固有の参照形式、順序制約、検証ルール
設計図テンプレート — 共通操作のための再利用可能な JSON スケルトンとサブツリー
いつ使用するか
mps-dsl-memory を使用するタイミング:
新しい MPS 言語または DSL を開発し、AI エージェントがそれを効果的に扱えるようにしたいと考えています。
既存の DSL スキルは時代遅れになっており、言語変更に伴いリフレッシュが必要です。
DSL に関する知識を、将来のセッションでも再利用できる永続的な形式で保存したいと考えています。
使い方
このスキルは、MPS プロジェクトを分析して言語概念とサンドボックスの例を検出し、.agents/skills/<dsl-name>-dsl/ に構造化されたドキュメントパッケージを生成します。これには、概念、サンドボックスモデル、一般的なワークフロー、既知の注意点に関する参照ファイルが含まれており、今後のセッションで AI エージェントが利用できるように設計されています。
生成されたスキルはプロジェクト内に保持され、外部ツールやサービスは一切必要ありません。言語定義と並行して改善・維持管理でき、DSL の進化に合わせて更新していくことができます。
手に入れるもの
ドキュメントが生成されると、今後のセッションのエージェントは、以下の詳細なリファレンスドキュメントを参照できるようになります。
どのような概念が根幹となり得るのか、それらはどのように構造化されるべきなのか。
それぞれの概念がどのような特性と関係性をサポートしているか。
サンドボックスモデル内で動作するサンプルを見つける場所。
言語特有の一般的なパターンと潜在的な落とし穴。
新しいモデルを作成するための、すぐに使える JSON テンプレート。
これにより、AI エージェントはプロジェクト固有の知識を自動的に活用できるため、DSL 構造を毎回再説明する必要がなくなり、AI エージェントを使った作業が加速します。
ツールキットを使った作業: ヒント
バンドルされているスキルは、エージェントがそれに従って動作するように記述されています。これらのスキルを最大限に活用するには、エージェントが関連するスキルをロードし、MCP ツールを使用し、その動作を検証するように促すプロンプトを表示する必要があります。これは、機能の低い LLM にとって特に重要です。高性能なモデルは通常、AGENTS.md/CLAUDE.md の指示に従って、これらのヒントを自動的に適用します。
エージェントを適切なスキルに向ける
スキルはトピックごとに整理されています。作業している領域に名前を付けることで、エージェントが推測するのではなく、適切な SKILL.md をロードできるようになります。例:
「
ClassConceptのエディターを変更します。まずmps-aspect-editor-menus-and-keymapsとエディターの技術リファレンスをロードしてください。」「これはジェネレーターテンプレートの問題です。まずは
mps-aspect-generatorスキルから確認してください。」「型システム規則を編集する前に、
mps-aspect-typesystemを参照してください。」「MPS テストモデルでテストを書いています。
mps-testsと読み替えてください。」
どのスキルが該当するか分からない場合は、まず mps-language-aspects-overview または mps-mcp-workflow を参照するようにエージェントに依頼してください。これらはカタログの残りの部分への索引として機能します。
ファイル編集よりも射影型 MCP ツールを優先する
MCP ツールを通して変更を行い、.mps ファイルのテキスト編集は行わないことを明確に述べてください。分かりやすい表現としては、次のようになります。
変更を行う際は、MPS MCP ツールのみを使用してください。
.mpsモデルファイルを手動で編集しないでください。「編集前に、永続的な参照によって概念とノードを解決してください。」
「構造変更を行うたびに、影響を受けるルートに対して
mps_mcp_check_root_node_problemsを実行してください。」
小さな、検証済みのステップで作業を進めてください。
エージェントは、実行しながら検証を行うことで最も効果を発揮します。明示的なループを要求してください。
mps_mcp_get_project_structureとmps_mcp_search_root_node_by_nameを使ってプロジェクトを探索してみましょう。mps_mcp_print_nodeを使用して関連するノードを出力します。JSON の設計図または操作を提案してください。
適切なツール(
mps_mcp_update_node、mps_mcp_insert_root_node_from_json、mps_mcp_update_root_node_from_json、…)を使用して適用してください。mps_mcp_check_root_node_problemsで検証してください。必要に応じて再生または再構築します(
mps_mcp_alter_nodesとMAKE)。
これを捉えるプロンプトテンプレート:
名前、参照を使用する
エージェントに何かを指定する際は、まず名前(「モデル calc.demo の Calculator ルートノード」など)を指定し、MCP ツールを介して永続参照に解決させてください。.mps ファイルから MPS XML ショート ID を貼り付けるのは避けてください。これらは内部エンコーディングであり、ツールが想定する永続参照とは互換性がありません。
エージェントの誠実さを保つ
代理人が変更が行われたと主張する場合は、次のことを要求してください。
影響を受けたノードを
mps_mcp_print_nodeで出力します。検証結果を表示
下流の Java コードまたは Kotlin コードが関係する場合は、再構築(または再生成)してください。
これは、エージェントが文章の変更を記述するものの、実際にツールを通して変更を反映させないという、よくある失敗パターンを捉えるものです。
/rewind を使用する
Claude Code の /rewind コマンドは、賢く使用すればかなりの数のトークンを節約できます。例: 言語を定義する場合、通常は最初に構造を定義し、次にエディターを定義します。ジェネレーターなどに進む前に、/rewind を使用して会話を構造が完成した時点まで戻し、エディターの詳細を破棄してコンテキスト領域を解放します。
スキルの組み合わせ
mps_mcp_initialize_project_for_agents は、以下のスキルセットを .agents/skills/ にインストールします。各スキルは、エージェントに特定の分野のツールキットの使い方を教える、自己完結型の SKILL.md (オプションのサポートファイルを含む)です。
ワークフローとオリエンテーション :
mps-mcp-workflow、mps-language-aspects-overview、mps-language-analysis、mps-language-inheritance、mps-language-modularity、mps-dsl-memory.構造とノード :
mps-aspect-structure-concepts、mps-node-editing、mps-quotations、mps-model-manipulation.言語面 :
mps-aspect-accessories、mps-aspect-actions、mps-aspect-behavior、mps-aspect-constraints、mps-aspect-dataflow、mps-aspect-editor、mps-aspect-editor-menus-and-keymaps、mps-aspect-generation-plan、mps-aspect-generator、mps-aspect-intentions、mps-aspect-migrations、mps-aspect-textgen、mps-aspect-typesystem.基本言語と DSL :
mps-baselanguage、mps-console、mps-lang-core-xml.テスト、ビルド、ツール :
mps-tests、mps-build-language、mps-distribution-build、mps-ide-plugin、mps-run-configurations.
スキルファイルはプロジェクトにコピーされるため、内容を確認したり、カスタマイズしたり、拡張したりできます。プロジェクトローカルでの編集内容は、mps_mcp_initialize_project_for_agents を再度実行しても上書きされません。このツールは既存のスキルフォルダーを上書きすることを拒否し、代わりに競合を報告します。
MCP ツールリファレンス
以下のツールは、Projectional Agent Toolkit MCP サーバーによって公開されています。ツール名には mps_mcp_ という接頭辞が付き、接続されているすべてのエージェントからアクセス可能です。
コンソール
ツール | 説明 |
|---|---|
| JSON ブループリントノードを編集可能なコードとして MPS コンソール入力エディターに挿入します。 |
| コンソールのコマンド履歴を一覧表示します(古いものから順に表示されます)。 |
| 過去に入力したコンソールコマンドを実行せずに、入力フィールドにコピーします。 |
| コンソール入力エディターに現在表示されている内容を、実行中のプロジェクトに対して実行します。 |
エディター
ツール | 説明 |
|---|---|
| コンセプト、接続プロパティ、子要素、一致するセルモデルへの参照に対して、デフォルトの |
プロジェクト、モジュール、モデル
ツール | 説明 |
|---|---|
| この MPS MCP サーバーで現在開いている IDE プロジェクトの一覧を表示します。 |
| プロジェクトの発見、名前ベースの検索、依存関係分析。 |
| MPS プロジェクト内のすべてのモジュールを再読み込みします。 |
| 指定された型の新しい空の MPS モジュールを作成します。 |
| MPS モジュールを更新または削除します。 |
| モジュールにインストールされているファセットを返します。 |
| 利用可能なすべての MPS モジュールファセットタイプを一覧表示します。 |
| モジュールファセットを更新または削除します。 |
| スコープ制御付きでモジュールの依存関係を追加または削除します。 |
| 指定されたモジュール内に、新しい空のモデルを作成します。 |
| MPS モデルを更新します(名前の変更、ステレオタイプの再設定など)。 |
| モデルのインポートを追加または削除し、モジュールに一致する Default 依存関係があることを確認します。 |
| モデルに使用されている言語または開発キットを追加または削除します。 |
ノード
ツール | 説明 |
|---|---|
| 指定されたモデルに新しいルートノードを作成します。 |
| JSON ブループリントから、アトミックロールバック機能を備えたルートノードを一括作成します。 |
| JSON ブループリントからルートノードを書き換えるか削除します。 |
| 任意のノードに関する外科的特性、参照、子ノードの更新。 |
| 構造的な変更: 子ノードの移動、ノードの親ノードの変更、作成 / 再構築、参照の修正。 |
| 指定されたノードの JSON 出力を一時ファイルに保存します。 |
| 読み取り専用ノードクエリ: インスタンスと使用箇所を検索し、親、ルート、モデル、兄弟ノードを取得します。 |
| MPS エディターで現在フォーカスされているノードを返します。 |
| MPS エディターでノードを開きます。 |
| ルートノード(およびその子孫)またはモデル全体を検証します。 |
| 指定された文字列のいずれかに名前が一致するルートノードを検索します。 |
| MPS JavaParser を使用して Java ソースを解析し、結果を MPS ノードとして挿入します。 |
言語構造
ツール | 説明 |
|---|---|
| 概念、列挙型、プロパティ、子要素、参照を作成、名前変更、削除します。 |
| 読み取り専用の構造クエリ: 継承、アスペクト、参照、列挙型リテラル、スマート参照ステータス。 |
| 言語内のリストされた概念、またはすべての概念に関する詳細なメタデータを返します。 |
| 概念およびインターフェース概念の自由記述検索(AND 演算子で複数語クエリを結合)。 |
その他
ツール | 説明 |
|---|---|
| AI エージェントのスキルカタログとガイドファイルを MPS チェックアウトにインストールします。 |
| ルートノード( |
トラブルシューティング
エージェントは
mps_mcp_ …ツールを認識しません。MPS が Projectional Agent Toolkit プラグインを有効にして実行されており、エージェントが MPS MCP サーバーに接続されていることを確認してください。JetBrains MCP サーバーの設定を参照してください。mps_mcp_initialize_project_for_agentsは衝突エラーで失敗しました。.agents/skills/フォルダー内のフォルダー名がすでにバンドルされているスキル名と同じになっています。フォルダーを移動または名前変更してから、ツールを再度実行してください。エージェントは
.mpsファイルを直接編集します。MPS MCP ツールのみを使用するように明確な指示を再度表示し、mps-mcp-workflowとエントリポイントファイル(AGENTS.mdまたはCLAUDE.md)を参照するように指示します。変更内容は生成された Java または Kotlin には反映されません。エージェントに、影響を受けるモデルまたはモジュールに対して
mps_mcp_alter_nodesとMAKEを同時に実行させ、その後コンパイルの問題がないか確認するように依頼してください。MCP ツールへの呼び出しが応答しない。MPS でモーダルダイアログが開いていないか確認してください。モーダルダイアログは EDT をブロックし、MCP 処理に必要な書き込みロックをサーバーが取得できない原因となる機能があります。また、エージェントのリクエストが、潜在的に有害な状態変更を行う MCP ツールを実行するための十分な権限がクライアント側の MCP プロトコル実装になかったために拒否された可能性もあります。どちらの場合も、エージェントに MCP 呼び出しが失敗した理由を問い合わせることで、何が起こったのかを明確にすることができます。
リファレンス
JetBrains MCP サーバーの設定 — MCP 対応エージェントを JetBrains IDE および MPS に接続します。
モデルコンテキストプロトコル(英語) — ツールキットで使用されるオープンプロトコル。
MPS ユーザーズガイド — MPS ドキュメントへの主要な入り口。
関連ページ:
MCP サーバー
バージョン 2026.1 以降、MPS には MCP サーバーが統合されており、Claude Code、Cursor、Codex などの外部クライアントが IDE が提供するツールにアクセスできるようになります。MCP サーバープラグインを有効にするこの機能は、MPS にデフォルトでバンドルされ有効化されている MCP Server プラグインに依存しています。関連機能が利用できない場合は、プラグインが無効化されていないことを確認してください。を押して設定を開き、を選択します。インストール済みタブを開...
MPS ユーザーズガイド
言語デザイナーのための MPS ユーザーガイド:MPS へようこそ。このユーザーガイドは MPS の完全なリファレンスドキュメントであり、MPS が提供する多くの概念と使用パターンを案内し、システムの特定の側面に関する詳細を知る必要があるときはいつでも手に入れることができます。トピック基礎知識 - 基本概念の概要 MPS の基本概念: ノード、概念、言語、用語集、よくある質問 (FAQ)、MPS プロジェクト構造、コピーライト、JetBrains MPS への貢献 - MPS のソースコードを回避す...