mcpField
S
Symfony Agent MCP

Symfony Agent MCP

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

Symfony Agent MCP について

Symfony Agent MCPは、Symfonyアプリケーションを調査する読み取り専用MCPサーバーです。PHPの実行やデータベース接続をせずにローカルファイルを解析し、秘密情報のマスキングやパス検証も行います。

主な機能

  1. 01ルート、サービス、コントローラーの調査
  2. 02Doctrineエンティティとマイグレーションの読み取り
  3. 03セキュリティ、Twig、設定の確認
  4. 04秘密情報のマスキングとツール出力のスキャン
  5. 05PHPを実行せずにファイルを解析

活用シーン

  1. 01ルートからコントローラーをたどる
  2. 02Doctrineエンティティとマイグレーション履歴を確認
  3. 03サービスコンテナーの循環依存を調べる
  4. 04セキュリティ設定とアプリケーションログを確認

MCP 対応

このサーバーはstdio経由でSymfonyプロジェクトの調査ツールをMCPクライアントに公開し、任意でHTTP/SSEにも対応します。ツールはローカルファイルを読み取り専用で調べます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"shakaran-symfony-agent": {
"command": "npx",
"args": [
"-y",
"@shakaran/symfony-agent-mcp"
],
"env": {
"SYMFONY_MCP_DYNAMIC_TOOLS": "<SYMFONY_MCP_DYNAMIC_TOOLS>",
"SYMFONY_MCP_TOKEN_BUDGET": "<SYMFONY_MCP_TOKEN_BUDGET>",
"SYMFONY_MCP_ALLOWED_PATHS": "<SYMFONY_MCP_ALLOWED_PATHS>",
"SYMFONY_MCP_SESSION_SECRET": "<SYMFONY_MCP_SESSION_SECRET>",
"SYMFONY_MCP_SESSION_TOKEN": "<SYMFONY_MCP_SESSION_TOKEN>",
"SYMFONY_MCP_AUDIT": "<SYMFONY_MCP_AUDIT>",
"SYMFONY_MCP_DLP": "<SYMFONY_MCP_DLP>"
}
}
}
}
起動コマンドnpx -y @shakaran/symfony-agent-mcp
設定が必要な環境変数
SYMFONY_MCP_DYNAMIC_TOOLSProgressive tool discovery. Left on, tools/list advertises five discovery meta-tools and the rest become callable once a category is activated (~828 tokens on connect). Set to false to advertise all 1,677 up front (~154,000).
SYMFONY_MCP_TOKEN_BUDGETシークレットToken ceiling for the schemas a session may have active at once.
SYMFONY_MCP_ALLOWED_PATHSColon-separated allowlist of directories the server may read. Any app_path outside them is refused.
SYMFONY_MCP_SESSION_SECRETシークレットEnables session-token authentication. Unset, authentication is off.
SYMFONY_MCP_SESSION_TOKENシークレットClient-side token, required only once SYMFONY_MCP_SESSION_SECRET is set.
SYMFONY_MCP_AUDITEncrypted audit log of every tool call.
SYMFONY_MCP_DLPScan every result for credentials before returning it. Turning this off is reported as CRITICAL by the startup audit.

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

パッケージ
npm@shakaran/symfony-agent-mcp1.0.2

ツール

5

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

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

詳細

symfony-agent-mcp

npm version License: MIT Node.js MCP PRs Welcome GitHub issues GitHub stars Build Status Coverage OpenSSF Scorecard Glama score smithery badge OpenSSF Baseline

機能 • クイックスタート • 連携 • 使い方 • ドキュメント • コントリビューション • ライセンス


Symfony アプリケーション向けの、本番環境に対応した Model Context Protocol (MCP) サーバーです。 AI アシスタントが、Symfony のコードベース全体を読み取り専用で詳細に調査できます — ルート、コントローラー、サービス、エンティティ、データベーススキーマ、マイグレーション、イベント、フォーム、 セキュリティ、Doctrine、Messenger、Twig、API Platform など、幅広く対応しています。

クライアントインストール
Claude Codeclaude mcp add を実行 → セットアップ
Claude Desktopclaude_desktop_config.json に追加 → セットアップ
Cursor.cursor/mcp.json に追加 → セットアップ
VS Code Copilot.vscode/mcp.json に追加 → セットアップ
任意の MCP クライアントstdio トランスポート、command: npx @shakaran/symfony-agent-mcp

機能

16 カテゴリーにわたる 1,677 個のツール
Available tool categories (16 categories, 1,677 tools total, ~164,615 tokens if all active)

  Category         │ Tools      │ Est. tokens    │ Description
  ─────────────────┼────────────┼───────────────┼────────────────────────────────────────────────────────
  symfony-core     │  548 tools │ ~ 53939 tokens │ Routes, services, controllers, events, commands, bundles, DI container, kernel
  database         │  176 tools │ ~ 17121 tokens │ Entities, migrations, Doctrine ORM, relationships, query patterns, indexes, DBAL
  security         │  132 tools │ ~ 12950 tokens │ Voters, firewalls, authenticators, JWT, OAuth, CSRF, access control, secrets vault
  frontend         │  121 tools │ ~ 11568 tokens │ Twig, translations, asset mapper, Symfony UX, Turbo, live components, Webpack
  testing          │  110 tools │ ~ 10559 tokens │ PHPUnit, Behat, Cypress, Playwright, Psalm, PHPStan, Rector, static analysis
  integrations     │  106 tools │ ~ 10939 tokens │ Stripe, Slack, Sentry, Elasticsearch, Twilio, SendGrid, Mailgun, Datadog, OpenAI
  serializer       │   91 tools │ ~  9031 tokens │ Serializer, validation, forms, constraints, DTOs, transformers, normalizers
  messaging        │   87 tools │ ~  8455 tokens │ Messenger, notifier, webhooks, Mercure, mailer, transports, stamps, failure handling
  api              │   68 tools │ ~  6438 tokens │ API Platform, OpenAPI, GraphQL, REST patterns, versioning, rate limits, Nelmio
  infrastructure   │   68 tools │ ~  6794 tokens │ Docker, CI/CD, Kubernetes, Terraform, Helm, Nginx, serverless, cloud platforms
  cache-sessions   │   62 tools │ ~  5945 tokens │ Cache pools, HTTP cache, sessions, rate limiter, lock, cache warmers, OPcache
  config           │   35 tools │ ~  3157 tokens │ Environment config, framework settings, Monolog, CORS, locale, feature flags
  code-quality     │   25 tools │ ~  2447 tokens │ Profiler, dead code detection, dependency graph, accessibility, code metrics
  cloud-aws        │   18 tools │ ~  1945 tokens │ AWS S3, SES, Cognito, ECS, Lambda/Bref, Parameter Store, Secrets Manager, CloudFront
  cloud-other      │   16 tools │ ~  1851 tokens │ Azure Blob/Pipelines, Google Cloud Run/Storage, Firebase, DigitalOcean, Consul
  queues           │   14 tools │ ~  1476 tokens │ RabbitMQ, Kafka, SQS FIFO/DLQ, Pusher, Redis pub/sub and streams

To activate a category: call activate_category(category: "<key>")
To search for specific tools: call search_tools(query: "what you want to do")
セキュリティを最優先した設計
  • 読み取り専用 — 書き込み、変更、実行は一切行いません
  • 自動マスキング — パスワード、トークン、API キー、データベースの認証情報は、AI にデータが渡される前に [REDACTED] に置き換えられます
  • DLP パイプライン — 多層のデータ損失防止スキャナー(正規表現パターンと、クレジットカード、JWT、SSH キー、クラウド認証情報などの構造検出)
  • パス検証 — ディレクトリトラバーサル攻撃は入力レイヤーでブロックされます
  • コード実行なし — PHP ファイルは静的に解析されます(eval も PHP ランタイムも使用しません)
  • ネットワーク呼び出しなし — すべてのデータはローカルファイルのみから取得します
  • プロンプトインジェクションフィルター — ツールの出力は AI に転送される前にインジェクションパターンをスキャンされます

クイックスタート

オプション A:npx(インストール不要)
npx @shakaran/symfony-agent-mcp
オプション B:グローバルにインストール
npm install -g @shakaran/symfony-agent-mcp
symfony-agent-mcp
オプション C:ソースから
git clone https://github.com/shakaran/symfony-agent-mcp
cd symfony-agent-mcp
pnpm install
pnpm build
pnpm start

Node.js のセットアップ、トラブルシューティング、初回使用時の確認を含む手順ガイドについては、GETTING_STARTED.md を参照してください。


連携

ワンクリックインストール
クライアントインストール
CursorCursor にインストール
VS CodeVS Code にインストール
VS Code InsidersVS Code Insiders にインストール
WindsurfWindsurf にインストール
Claude CodeClaude Code にインストール
Claude DesktopClaude Desktop にインストール
Claude Code

サーバーを登録するには、一度だけ次のコマンドを実行します。

# npx (no local install required)
claude mcp add symfony -- npx @shakaran/symfony-agent-mcp

# Or from a local source build
claude mcp add symfony -- node /path/to/symfony-agent-mcp/dist/server.js

すべてのプロジェクトでグローバルに利用できるようにするには、--scope user フラグを追加します。

claude mcp add --scope user symfony -- npx @shakaran/symfony-agent-mcp
Claude Desktop

Claude Desktop の設定ファイル(claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "symfony": {
      "command": "npx",
      "args": ["@shakaran/symfony-agent-mcp"]
    }
  }
}
Cursor

.cursor/mcp.json に追加します。

{
  "symfony": {
    "command": "npx",
    "args": ["@shakaran/symfony-agent-mcp"]
  }
}
VS Code Copilot

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

{
  "servers": {
    "symfony": {
      "type": "stdio",
      "command": "npx",
      "args": ["@shakaran/symfony-agent-mcp"]
    }
  }
}

使用方法

すべてのツールは、Symfony アプリケーションのルートを指定する app_path パラメーターを受け取ります。

list_routes(app_path: "/var/www/myapp")
→ Found 42 routes: GET /api/users [api_users], POST /login [app_login], …

get_entity_details(app_path: "/var/www/myapp", entity_name: "User")
→ Entity: User  |  Table: users
  Properties: id (int, PK), email (string 180), isActive (bool)
  Relationships: OneToMany → Post (author)

get_error_summary(app_path: "/var/www/myapp")
→ Last 24h: 3 CRITICAL, 12 ERROR, 47 WARNING

get_code_quality_report(app_path: "/var/www/myapp")
→ God classes: UserManager (1240 lines), dead services: 4, N+1 risks: 7

Claude で使用できるプロンプトの例:

  • 「POST メソッドを持つすべてのルートと、そのコントローラーを表示してください」
  • 「doctrine.event_listener タグが付いたサービスはどれですか?」
  • 「本番ログの最後の 50 行を一覧表示してください」
  • 「サービスコンテナーに循環依存はありますか?」
  • 「User とリレーションを持つ Doctrine エンティティは何ですか?」
  • 「マイグレーション履歴と、破壊的なマイグレーションがあれば表示してください」
  • 「セキュリティ属性が設定されていないコントローラーはどれですか?」

設定

すべての設定は、MCP サーバープロセスに渡される環境変数で行います。

ツールの検出
変数デフォルト説明
SYMFONY_MCP_DYNAMIC_TOOLStrue動的なツール検出を有効にします。true の場合、tools/list は 1,677 個すべてではなく、5 個のメタツールのみを返します。従来の動作(常にすべてのツールを表示)に戻すには、false に設定します。
SYMFONY_MCP_TOKEN_BUDGET40000セッションごとに有効化できるトークンの推定最大数です。この上限を超える場合は有効化がブロックされます。上書きするには、activate_category に force=true を渡します。
セキュリティとアクセス
変数デフォルト説明
SYMFONY_MCP_ALLOWED_PATHS(任意)サーバーによる検査を許可するアプリケーションの絶対パスを、コロン区切りで指定します。例:/var/www/app1:/var/www/app2
SYMFONY_MCP_REQUIRE_SYMFONYtrueSymfony プロジェクトの検証をスキップするには、false に設定します(テストに便利です)。
SYMFONY_MCP_ALLOWED_TOOLS(すべて)ツール名の許可リストをカンマ区切りで指定します。リストにあるツールのみ呼び出せます。
SYMFONY_MCP_BLOCKED_TOOLS(なし)拒否リストをカンマ区切りで指定します。許可リストより優先されます。
SYMFONY_MCP_SIGNING_SECRET(無効)リクエスト署名用の 32 文字以上のシークレットです。有効にすると、リクエストごとの認証が行われます。
SYMFONY_MCP_SESSION_SECRET(無効)セッショントークン生成用のシークレットです。
SYMFONY_MCP_SESSION_TOKEN(無効)受信リクエストで検証するトークンです。
SYMFONY_MCP_SESSION_STRICTfalse有効なセッショントークンのないリクエストを拒否するには、true に設定します。
SYMFONY_MCP_SESSION_WINDOW300セッショントークンの有効期間(秒)です。
レート制限
変数デフォルト説明
SYMFONY_MCP_RATE_LIMIT60期間ごとの最大リクエスト数です。無効にするには 0 に設定します。
SYMFONY_MCP_RATE_WINDOW_MS60000レート制限の期間(ミリ秒、1 分)です。
SYMFONY_MCP_RATE_BURST101 秒あたりの最大バーストリクエスト数です。
トランスポート
変数デフォルト説明
SYMFONY_MCP_HTTP_PORT(off)HTTP/SSE トランスポート用のポートです。設定すると、stdio に加えて HTTP サーバーを起動します。
SYMFONY_MCP_STDIOtruestdio トランスポートを無効にするには false に設定します(HTTP のみで実行する場合に便利です)。
SYMFONY_MCP_TOOL_TIMEOUT_MS30000ツールごとの実行タイムアウト(ミリ秒)です。
例:動的ツールを無効にした Claude Code
{
  "mcpServers": {
    "symfony": {
      "command": "npx",
      "args": ["@shakaran/symfony-agent-mcp"],
      "env": {
        "SYMFONY_MCP_DYNAMIC_TOOLS": "false"
      }
    }
  }
}
例:トークンの上限を 80 000 トークンに増やす
{
  "mcpServers": {
    "symfony": {
      "command": "node",
      "args": ["/path/to/symfony-agent-mcp/dist/server.js"],
      "env": {
        "SYMFONY_MCP_TOKEN_BUDGET": "80000"
      }
    }
  }
}

ローカルインストール(ソースから)

ローカルのクローンからサーバーを実行する場合は、こちらを使用してください(npm で公開する必要はありません)。

# 1. Clone the repo
git clone https://github.com/shakaran/symfony-agent-mcp
cd symfony-agent-mcp

# 2. Install dependencies (Node.js ≥ 22 required)
pnpm install         # or: npm install

# 3. Build TypeScript → dist/
pnpm build           # or: npm run build

# 4. Test the server responds
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/server.js

次に、ビルドしたファイルを参照するように MCP クライアントを設定します。

Claude Code(一度だけ実行):

claude mcp add symfony -- node /absolute/path/to/symfony-agent-mcp/dist/server.js

Claude Desktop(claude_desktop_config.json):

{
  "mcpServers": {
    "symfony": {
      "command": "node",
      "args": ["/absolute/path/to/symfony-agent-mcp/dist/server.js"]
    }
  }
}

VS Code(.vscode/mcp.json):

{
  "servers": {
    "symfony": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/symfony-agent-mcp/dist/server.js"]
    }
  }
}

ヒント: 再ビルド(pnpm build)した後、変更を反映するために MCP クライアントを再起動してください。


読み取り対象

このサーバーは Symfony アプリからファイルを直接読み取ります。データベース接続も PHP ランタイムも必要ありません。

  • config/routes.yaml、config/routes/*.yaml — YAML ルート
  • src/Controller/ 内のコントローラーにある PHP 8 の #[Route] 属性
  • config/services.yaml — DI コンテナーのサービス
  • config/packages/*.yaml — フレームワーク、セキュリティ、Doctrine、Messenger、Mailer の設定
  • src/Entity/*.php — Doctrine エンティティファイル(PHP 8 の属性とアノテーション)
  • var/log/*.log — アプリケーションログ
  • migrations/、src/Migrations/ — Doctrine のマイグレーションファイル
  • composer.json、composer.lock — パッケージ情報
  • .env、.env.local、.env.*.local — 環境変数(機密値は自動的にマスキングされます)

Symfony の互換性

SymfonyPHPORM マッピング
5.4 LTS8.0+アノテーションまたは属性
6.x8.0+属性
7.x8.2+属性
8.x8.2+属性

要件

  • Node.js ≥ 22.0.0
  • pnpm ≥ 11.0.0(または開発用の npm/yarn)

開発

pnpm install
pnpm dev            # watch mode (TypeScript → dist/)
pnpm test           # run all tests
pnpm lint           # ESLint
pnpm typecheck      # tsc --noEmit

開発ガイドの全文(アーキテクチャの概要、新しいツールの追加、テスト戦略、コントリビューションのガイドライン)については、DEVELOPMENT.md を参照してください。


ドキュメント

ドキュメント説明
GETTING_STARTED.md手順に沿ったセットアップ、Node.js の前提条件、トラブルシューティング
ARCHITECTURE.mdシステム設計、セキュリティパイプライン、コンポーネントの概要、16 カテゴリーにわたる全 1,677 ツールの説明
DEVELOPMENT.md開発ワークフロー、ツールの追加、テスト、コントリビューション
SECURITY.md脅威モデル、DLP パイプライン、責任ある脆弱性開示ポリシー
CHANGELOG.mdリリース履歴とロードマップ
PROJECT_SUMMARY.mdプロジェクトの概要と統計

貢献

Issue やプルリクエストは、github.com/shakaran/symfony-agent-mcp で歓迎します。

PR を送信する前に DEVELOPMENT.md を、責任ある脆弱性開示ポリシーについては SECURITY.md をお読みください。


プロジェクトの標準

標準状況
OpenSSF Baselineレベル 1、2、3
OpenSSF Best Practices合格
OpenSSF Scorecard7.4 / 10
サプライチェーンSLSA provenance と SBOM を含め、CI から公開
再現可能なビルドCI で検証済み。ビルド間でバイト単位の一致を確認
コードスキャン未解決のアラートなし
シークレットスキャン未解決のアラートなし
テスト1,019 件 — src/utils/ は 100%、トランスポートは 99.5%
ライセンスMIT。すべてのソースファイルに SPDX ヘッダーを記載
サインオフDeveloper Certificate of Origin。CI で確認

脅威モデル、保証ケース、修正のしきい値については SECURITY.md を、今後の計画については ROADMAP.md をご覧ください。

ライセンス

MIT © Ángel Guzmán Maeso

コメント

MCP は初めてですか?

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

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