コード・Terraform・ダイアグラムを MCP で C4 モデルに変換 - Archyl Blog

白紙のキャンバスは嘘です。あなたのアーキテクチャは、Structurizr ファイル、Terraform モジュール、Mermaid 図、README の中にすでに書かれています。AI エージェントを Archyl の MCP サーバーにつなげば、そのすべてが生きた C4 モデルになります——箱をひとつも描き直すことなく。

コード・Terraform・ダイアグラムを MCP で C4 モデルに変換

アーキテクチャドキュメントで一番難しいのは、箱を描くことではありません。ツールを開いた時点で、アーキテクチャはすでに存在している——しかも、互いに会話しない5つの場所に散らばって——ということです。

誰かが8ヶ月間メンテしてきた Structurizr DSL ファイル。十数個の README に散らばる Mermaid 図。どんな図よりも本物のインフラを正確に記述している Terraform モジュール。以前使っていたツールから書き出した PlantUML。そして、決して嘘をつかない唯一のソースであるコードベースそのもの。

土曜日には、2つの MCP サーバーとプロンプトひとつで Confluence スペースを Archyl に移行する方法を紹介しました。今日は同じトリックで、もっと大きな獲物を狙います。アーキテクチャそのもののインポートです。

2つの道——ソースごとに選ぶ

まずは組み込みの道から。リポジトリが Archyl に接続されているなら、AI Discovery がコードを解析し、完全な C4 モデル——システム、コンテナ、コンポーネント、リレーションシップ——を提案してくれます。あなたはレビューして承認するだけ。そして別の C4 ツールから来たなら、Structurizr DSL、LikeC4、IcePanel のエクスポートには、すでにワンクリックのインポーターがあります。どちらかが当てはまるなら、まずそこから始めましょう。

MCP の道はそれ以外のすべて、つまり Discovery には見えないソースのためにあります。diagrams-as-code のファイル、インフラ定義、誰かの wiki にあるアーキテクチャページ、あるいはプライベートサーバー上のリポジトリ。Archyl の MCP サーバーは C4 モデルの書き込み面をすべて公開しています——create_systemcreate_containercreate_componentcreate_relationshipset_element_technologiescreate_adr——だから、ソースを 読める エージェントなら誰でも、モデルを 書ける のです。

セットアップは土曜日と同じワンライナー:

claude mcp add --transport http archyl https://api.archyl.com/mcp \
  --header "X-API-Key: your_api_key"

レシピ1 — Structurizr、Mermaid、PlantUML

diagrams-as-code は最も簡単な勝ち筋です。セマンティクスがすでに明示されているからです。標準的な workspace.dsl なら、上記のワンクリックのインポーターのほうが速い——エージェントが本領を発揮するのは、Mermaid と PlantUML(インポーターが存在しません)、インポーターがパースできない DSL の変種、あるいはすでにモデルを持つプロジェクトに 選択的に マージしたいときです。Claude Code でリポジトリを開いて:

このリポジトリのルートにある workspace.dsl を読んでください。
私の Archyl プロジェクト "Aurora Commerce" にモデルを再現してください:

- softwareSystem → create_system(外部のものは external_system として
  マークする)
- container → 適切なシステムの下に create_container、technology
  フィールドは維持する
- すべてのリレーションシップ → create_relationship に説明付きで
- DSL にないものは何も発明しないこと。マッピングできなかったものは
  一覧にすること

その後、list_systems と list_containers でモデルを読み返し、
何も失われていないか確認できるようにサマリーを見せてください。

最後の読み返しステップは、習慣として残す価値があります。「うまくいったはず」と仮定する代わりに、エージェント自身がライブのモデルに対して自分のインポートを検証するのです。

レシピ2 — Terraform

あなたのインフラコードは、図が忘れてしまったことを知っています。エージェントを Terraform に向けて、適切な高度で仕事をさせましょう:

このリポジトリの infra/ を読んでください。デプロイメントレベルの
アーキテクチャを Archyl にモデル化してください:マネージドサービス
(RDS、SQS、S3、CloudFront...)はコンテナまたは外部システムに、
実際のサービスごとに1つ — リソースごとに1つではありません。
IAM ポリシー、セキュリティグループ、環境変数からリレーションシップを
つないでください。後でインポートしたレイヤーをフィルタできるよう、
作成したものすべてに "terraform" タグを付けてください。

「リソースごとに1つではない」という一文が、実際に仕事をしています。素朴なインポーターは400個の Terraform リソースを400個の箱に変えてしまいます。エージェントは、DB インスタンスとそのサブネットグループ、パラメータグループが Orders Database というひとつのコンテナであることを理解します。

レシピ3 — コードベースそのもの

DSL も図もなく、リポジトリも Archyl に接続されていない? エージェントはすでにあなたのコードの中に座っています。ボトムアップでモデルを提案させましょう——デプロイマニフェストからサービスを、パッケージ構造からコンポーネントを、見つけた HTTP クライアントとキュープロデューサーからリレーションシップを。これは AI Discovery の仕事を手作業でやることであり、Discovery がソースに届かないときの正しいフォールバックです。

レシピ4 — wiki に閉じ込められた図

土曜日の記事の2つの MCP サーバーを組み合わせます。エージェントは Atlassian の MCP サーバー経由でアーキテクチャページを読み、そこに記述されたシステムとフローを抽出し、Archyl に書き込みます。イベントパイプラインを 説明していた wiki ページが、実際にナビゲートできるモデルになる——しかもページ自体も、リンクされたドキュメントとして一緒についてきます。

インポートは退屈な部分——本題はここから

インポートの翌日こそが、これをやった理由です。モデルは MCP 経由で入ったので、MCP 経由で届き続けます:

  • エージェントはコーディング中にモデルをクエリします——「決済データベースと通信しているコンテナは?」はツールコール1回の距離です。
  • 新しいサービスは、それを作った同じエージェントの手で追加されるので、モデルは朽ちていく代わりに現実を追いかけ続けます。
  • ドリフトスコアリングとコンフォーマンスルールが、実際にシステムと一致するモデルに対して動きます。

締めくくりに、正直なルールをひとつ。エージェントが提案し、あなたがレビューする。 システムはひとつずつインポートし、サマリーを読み、そぐわないものは刈り込む——コードレビューと同じ規律です。最終的に手に入るモデルの質は、食べさせたソースの質まで。そして5つのソースのうちどれが真実を語っていたかを知っているのは、あなたです。

あなたのアーキテクチャはもう存在しています。描き直すのはやめて、インポートしましょう。ツールの完全な一覧は MCP サーバードキュメントにあります。