mcpField
S
Symfony Agent MCP

Symfony Agent MCP

本地服务
github.com开发工具05 周前更新

关于 Symfony Agent MCP

Symfony Agent MCP 是用于检查 Symfony 应用的只读 MCP 服务。它解析本地项目文件,无需运行 PHP 或连接数据库,并通过敏感信息脱敏和路径校验等措施辅助开发者与 AI 助手。

主要功能

  1. 01检查路由、服务和控制器
  2. 02读取 Doctrine 实体与迁移
  3. 03查看安全配置、Twig 和项目配置
  4. 04脱敏敏感信息并扫描工具输出
  5. 05不执行 PHP 代码而解析文件

适用场景

  1. 01追踪路由对应的控制器
  2. 02审查 Doctrine 实体和迁移历史
  3. 03检查服务容器中的循环依赖
  4. 04查看安全配置与应用日志

MCP 相关

该服务通过 stdio 向 MCP 客户端提供 Symfony 项目检查工具,也可选用 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 应用模型上下文协议(MCP)服务。 为 AI 助手提供对整个 Symfony 代码库的深入只读探查能力—— 涵盖路由、控制器、服务、实体、数据库架构、迁移、事件、表单、 安全、Doctrine、Messenger、Twig、API Platform 等等。

客户端安装
Claude Code运行 claude mcp add → 设置
Claude Desktop添加到 claude_desktop_config.json → 设置
Cursor添加到 .cursor/mcp.json → 设置
VS Code Copilot添加到 .vscode/mcp.json → 设置
任意 MCP 客户端stdio 传输,command: npx @shakaran/symfony-agent-mcp

功能

1,677 个工具,分为 16 类
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

请参阅 GETTING_STARTED.md,了解分步指南,其中包括 Node.js 设置、故障排查和首次使用验证。


集成

一键安装
客户端安装
Cursor在 Cursor 中安装
VS Code在 VS Code 中安装
VS Code Insiders在 VS Code Insiders 中安装
Windsurf在 Windsurf 中安装
Claude Code在 Claude Code 中安装
Claude Desktop在 Claude 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"]
    }
  }
}

使用

每个工具都接受一个 app_path 参数,用于指向 Symfony 应用的根目录:

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 行”
  • “服务容器中是否存在循环依赖?”
  • “哪些 Doctrine 实体与 User 存在关联?”
  • “显示迁移历史记录以及所有具有破坏性的迁移”
  • “哪些控制器没有安全属性?”

配置

所有配置均通过传递给 MCP 服务进程的环境变量完成。

工具发现
变量默认值描述
SYMFONY_MCP_DYNAMIC_TOOLStrue启用动态工具发现。设为 true 时,tools/list 只返回 5 个元工具,而非全部 1,677 个。设为 false 可恢复旧版行为(始终显示所有工具)。
SYMFONY_MCP_TOKEN_BUDGET40000每个会话可激活的预估令牌数上限。超出此限制时将阻止激活;在 activate_category 中传入 force=true 可覆盖此限制。
安全与访问
变量默认值描述
SYMFONY_MCP_ALLOWED_PATHS(任意)服务可检查的绝对应用路径列表,以冒号分隔。例如:/var/www/app1:/var/www/app2
SYMFONY_MCP_REQUIRE_SYMFONYtrue设为 false 可跳过 Symfony 项目验证(适用于测试)。
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_STDIOtrue设置为 false 可禁用 stdio 传输(仅运行 HTTP 时很有用)。
SYMFONY_MCP_TOOL_TIMEOUT_MS30000每个工具的执行超时时间,以毫秒为单位。
示例:禁用动态工具的 Claude Code
{
  "mcpServers": {
    "symfony": {
      "command": "npx",
      "args": ["@shakaran/symfony-agent-mcp"],
      "env": {
        "SYMFONY_MCP_DYNAMIC_TOOLS": "false"
      }
    }
  }
}
示例:将 token 预算提高到 80 000 tokens
{
  "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 — Framework、security、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项目概要和统计数据

贡献

欢迎通过 github.com/shakaran/symfony-agent-mcp 提交问题和拉取请求。

提交 PR 前,请先阅读 DEVELOPMENT.md;关于负责任的信息披露政策,请阅读 SECURITY.md。


项目标准

标准状态
OpenSSF BaselineLevel 1、2 和 3
OpenSSF Best Practices已通过
OpenSSF Scorecard7.4 / 10
供应链通过 CI 发布,包含 SLSA 来源证明和 SBOM
可复现构建已在 CI 中验证,不同构建的字节完全一致
代码扫描未解决的警报数为零
密钥扫描未解决的警报数为零
测试1,019 项 — src/utils/ 覆盖率为 100%,传输层为 99.5%
许可MIT,每个源文件均包含 SPDX 标头
签署确认开发者原创证明,已在 CI 中检查

威胁模型、保证论证和修复阈值请参阅 SECURITY.md, 计划内容请参阅 ROADMAP.md。

许可证

MIT © Ángel Guzmán Maeso

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。