mcpField
A
Archform

Archform

ローカル
github.com/himanshu-mamgainメディア・デザイン01 週間前に更新

Archform について

Archform は、Mermaid、PlantUML、Graphviz、D2 などの図表コードをレンダリング、検証する MCP サーバーです。ローカルの stdio 接続またはリモートの Streamable HTTP エンドポイントで AI アシスタントに提供でき、セルフホストの Kroki も利用できます。

主な機能

  1. 01図表ソースを SVG または PNG に変換
  2. 02ソースを検証して解析エラーを報告
  3. 03対応形式とサンプルの一覧表示
  4. 04Mermaid、PlantUML、C4、Graphviz などに対応

活用シーン

  1. 01ソースコードやスキーマから図表を作成
  2. 02アーキテクチャ図やシーケンス図を作成
  3. 03図表の構文を検査してエラーを特定

MCP 対応

Archform は MCP クライアントに `list_formats`、`render_diagram`、`validate_diagram` ツールを提供します。レンダリングには Kroki を使い、`KROKI_URL` でセルフホスト環境を指定できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"himanshu-mamgain-archform": {
"command": "npx",
"args": [
"-y",
"@archform/mcp"
],
"env": {
"KROKI_URL": "<KROKI_URL>"
}
}
}
}
起動コマンドnpx -y @archform/mcp
設定が必要な環境変数
KROKI_URLKroki server used for rendering. Defaults to the public https://kroki.io; set it to a self-hosted instance to keep diagram source private.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@archform/mcp0.2.2

ツール

3

掲載時のツール一覧 · 1 週間前に更新

このツールにパラメーターはありません。

詳細

@archform/mcp

AI アシスタントがコードで記述する図(Mermaid、PlantUML、C4-PlantUML、Graphviz、D2、Structurizr、BPMN、Excalidraw)をレンダリングして検証できるMCP サーバーです。

stdio 経由で Claude Desktop、Claude Code、Cursor、VS Code から利用でき、ChatGPT の開発者モードではリモートの Streamable HTTP エンドポイントとして利用できます。

例

アシスタントは、次のような図のソースをD2で記述します。

direction: right
user: User {shape: person}
ai: AI assistant
mcp: Archform MCP
kroki: Kroki {shape: cylinder}
user -> ai: "draw our architecture"
ai -> mcp: render_diagram
mcp -> kroki: diagram source
kroki -> mcp: SVG / PNG
mcp -> ai: image + share link

render_diagram はこれを画像と共有リンクに変換します。以下の画像がそのリンク先です。

レンダリング例:ユーザー、AI アシスタント、Archform MCP、Kroki

お試しください: Archform に接続したら、アシスタントに次のように頼んでください。

URL 短縮サービスの C4 コンテキスト図を描いてください。

または 「schema.prisma を ER 図に変換して」、「ログインフローのシーケンス図を描いて」 と頼んでみてください。

プライバシー: レンダリングはKrokiで行われます。デフォルトでは、図のソースが公開されている kroki.io サービスに送信されます。公開ウェブサイトには貼り付けられない内容を図に含める場合は、Kroki をセルフホストして KROKI_URL を設定してください。

ツール

すべてのツールは読み取り専用です(readOnlyHint: true、openWorldHint: true)。

ツール入力結果
list_formatsなしエイリアス、出力形式、ドキュメントへのリンク、最小限の有効な例を含む、サポートされているすべての形式
render_diagramformat、source(≤ 100 KB)、output(デフォルトは svg、または png)埋め込み image/svg+xml リソースとしての SVG、または画像コンテンツとしての PNG、および共有可能な kroki.io リンク。ソースが無効な場合は、パーサーのメッセージと行番号とともに isError: true を返します
validate_diagramformat、source{ valid, errors: [{ line?, message }] }。図が無効でも、ツールエラーではなく通常の結果として返されます

形式

形式エイリアス出力形式
mermaidsvg, png
plantumlsvg, png
c4plantumlsvg, png
graphvizdotsvg, png
d2svg
structurizrsvg, png
bpmnsvg
excalidrawsvg

ローカルで実行する(stdio)

Node.js 22 以降が必要です。

Claude Desktop:claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "archform": {
      "command": "npx",
      "args": ["-y", "@archform/mcp"]
    }
  }
}

Claude Code:

claude mcp add archform -- npx -y @archform/mcp

Cursor:~/.cursor/mcp.json(またはプロジェクト内の .cursor/mcp.json)に追加します。

{
  "mcpServers": {
    "archform": { "command": "npx", "args": ["-y", "@archform/mcp"] }
  }
}

VS Code:.vscode/mcp.json に追加します。

{
  "servers": {
    "archform": { "type": "stdio", "command": "npx", "args": ["-y", "@archform/mcp"] }
  }
}

独自の Kroki を使用するには、サーバーエントリに "env": { "KROKI_URL": "https://kroki.internal.example.com" } を追加します。

リモートで実行する(Streamable HTTP)

npx -y @archform/mcp --http --port 3000
  • POST /mcp:MCP トラフィック(ステートレス)
  • GET /health:ヘルスチェック

デフォルトでは、サーバーは 127.0.0.1 にバインドし、Host または Origin が localhost でないリクエストを拒否します(DNS リバインディング保護)。ChatGPT の開発者モードなどで公開するには、すべてのインターフェースにバインドし、公開ホスト名を指定します。

HOST=0.0.0.0 ALLOWED_HOSTS=mcp.example.com TRUST_PROXY=1 RATE_LIMIT_PER_CLIENT=0 PORT=8080 npx -y @archform/mcp --http

その後、ChatGPT のコネクターとして https://mcp.example.com/mcp を認証なしで追加します(設定 → コネクター、開発者モード)。HTTPS 経由で提供してください。

制限

HTTP エンドポイントではリクエストボディが 512 KB に制限され、HTTP リクエストではなくツール呼び出しがカウントされます。セッションの initialize と tools/list リクエストはカウントされません。

  • 全体: RATE_LIMIT(デフォルトは 1 分あたり 120)は、すべてのクライアントからのツール呼び出しを合算して上限を設定します。Kroki バックエンドが処理できる量に合わせて設定してください。デフォルト値は公開されている kroki.io に配慮した値です。セルフホストの Kroki では引き上げてください。
  • クライアントごと: RATE_LIMIT_PER_CLIENT(デフォルトは 1 分あたり 60)は、1 つのクライアントが予算全体を使い切るのを防ぎます。ChatGPT は OpenAI のサーバーからお使いのサーバーを呼び出すため、すべての ChatGPT ユーザーが少数の IP アドレスを共有し、この制限はユーザー全員にまとめて適用されます。主に ChatGPT にサービスを提供するデプロイでは、ChatGPT ユーザーが全体の予算を使えるよう、RATE_LIMIT_PER_CLIENT=0(上記の例と同様)にするか、RATE_LIMIT と同じ値に設定してください。
  • プロキシ経由の場合: 多くのホスト(Render、Fly.io、Railway、Cloud Run)ではアプリの前にプロキシが置かれるため、すべてのリクエストがプロキシのアドレスから届くように見えます。TRUST_PROXY=1(サーバーの前にあるプロキシの数)を設定すると、レートリミッターはプロキシが X-Forwarded-For に追加したアドレスを使用します。クライアントが直接接続する場合は、設定しないでください。クライアントはこのヘッダーに任意の値を記述できるため、TRUST_PROXY が設定されていない限り無視されます。

1 回のツール呼び出しが制限を超えた場合、モデルには isError: true と「Rate limit reached: … Retry in 42s.」のようなメッセージを含む通常のツール結果が返されるため、ユーザーに待つよう伝えることができます。HTTP 429 を返した場合は、一般的なコネクターエラーとして表示されるだけです。制限を超えたバッチリクエストや不正なリクエストには、Retry-After とともに 429 が返されます。

カウンターはメモリ上にあるため、各インスタンスがそれぞれの制限を適用します。

設定

フラグ/変数デフォルト説明
--httpオフstdio の代わりに Streamable HTTP でサービスを提供します
--port、PORT3000HTTP ポート
--host、HOST127.0.0.1HTTP バインドアドレス
ALLOWED_HOSTSパブリックバインドで許可する Host 値(カンマ区切り)
RATE_LIMIT120全クライアントを合わせた 1 分あたりのツール呼び出し数。0 で無効になります
RATE_LIMIT_PER_CLIENT60クライアント IP ごとの 1 分あたりのツール呼び出し数。0 で無効になります
TRUST_PROXY0X-Forwarded-For のエントリを信頼するリバースプロキシの数(true = 1)
KROKI_URLhttps://kroki.ioレンダリングと共有リンクに使用する Kroki サーバー

Kroki のセルフホスト

Kroki は Docker イメージとして提供されています。コアイメージは PlantUML、C4-PlantUML、Graphviz、D2、Structurizr に対応しています。Mermaid、BPMN、Excalidraw にはそれぞれ追加のコンテナーが必要です。

# docker-compose.yml
services:
  kroki:
    image: yuzutech/kroki
    ports: ["8000:8000"]
    environment:
      KROKI_MERMAID_HOST: mermaid
      KROKI_BPMN_HOST: bpmn
      KROKI_EXCALIDRAW_HOST: excalidraw
  mermaid:
    image: yuzutech/kroki-mermaid
  bpmn:
    image: yuzutech/kroki-bpmn
  excalidraw:
    image: yuzutech/kroki-excalidraw
docker compose up -d
KROKI_URL=http://localhost:8000 npx -y @archform/mcp

共有可能なリンクはお使いの Kroki インスタンスを参照するため、そのインスタンスにアクセスできる人だけが開けます。詳しくはKroki のインストールドキュメントをご覧ください。

開発

pnpm install
pnpm test                      # unit + in-process integration tests (Kroki stubbed)
KROKI_LIVE=1 pnpm test         # also run the live tests against KROKI_URL
pnpm build
npx @modelcontextprotocol/inspector node dist/index.js           # stdio
node dist/index.js --http      # then point the Inspector at http://127.0.0.1:3000/mcp

ライセンス

MIT

コメント

MCP は初めてですか?

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

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