symfony-agent-mcp
symfony-agent-mcp
功能 • 快速开始 • 集成 • 使用 • 文档 • 贡献 • 许可证
一个面向 Symfony 应用程序的生产就绪的 Model Context Protocol (MCP) 服务器。 为 AI 助手提供对整个 Symfony 代码库的深度、只读内省——路由、控制器、服务、实体、数据库模式、迁移、事件、表单、安全、Doctrine、Messenger、Twig、API Platform 等等。
客户端 | 安装 |
Claude Code | 运行 |
Claude Desktop | 添加到 |
Cursor | 添加到 |
VS Code Copilot | 添加到 |
任何 MCP 客户端 | stdio 传输, |
功能
16 个类别中的 1,679 个工具
Available tool categories (16 categories, 1,679 tools total, ~164,729 tokens if all active)
Category │ Tools │ Est. tokens │ Description
─────────────────┼────────────┼────────────────┼────────────────────────────────────────────────────────
symfony-core │ 549 tools │ ~ 53995 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 │ 133 tools │ ~ 13008 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 之前会扫描注入模式
Related MCP server: phpustik MCP Server
快速开始
选项 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 | |
VS Code | |
VS Code Insiders | |
Windsurf | |
Claude Code | |
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-mcpClaude 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 服务器进程的环境变量完成。
工具发现
变量 | 默认值 | 描述 |
|
| 启用动态工具发现。当为 |
|
| 每个会话可激活的最大估计令牌数。当超过此限制时,激活将被阻止;传递 |
安全与访问
变量 | 默认值 | 描述 |
| (任意) | 服务器可以检查的绝对应用路径的冒号分隔列表。示例: |
|
| 设置为 |
| (全部) | 逗号分隔的工具名称允许列表。仅列出的工具可被调用。 |
| (无) | 逗号分隔的拒绝列表。优先于允许列表。 |
| (关闭) | 用于请求签名的 32 个以上字符的密钥。启用每个请求的身份验证。 |
| (关闭) | 用于会话令牌生成的密钥。 |
| (关闭) | 用于验证传入请求的令牌。 |
|
| 设置为 |
|
| 会话令牌的有效时间窗口(秒)。 |
速率限制
变量 | 默认值 | 描述 |
|
| 每个窗口的最大请求数。设置为 |
|
| 速率限制窗口(毫秒)(1 分钟)。 |
|
| 1 秒内的最大突发请求数。 |
传输
变量 | 默认值 | 描述 |
| (关闭) | HTTP/SSE 传输的端口。设置后,除了 stdio 之外还会启动 HTTP 服务器。 |
|
| 设置为 |
|
| 每个工具的执行超时时间(毫秒)。 |
示例:禁用动态工具的 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.jsClaude 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 兼容性
Symfony | PHP | ORM 映射 |
5.4 LTS | 8.0+ | 注解或属性 |
6.x | 8.0+ | 属性 |
7.x | 8.2+ | 属性 |
8.x | 8.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:架构概述、添加新工具、测试策略及贡献指南。
文档
文档 | 描述 |
分步安装、Node.js 前置要求、故障排查 | |
系统设计、安全流水线、组件概览,共记录 16 个类别的 1,679 个工具 | |
开发工作流、添加工具、测试、贡献 | |
威胁模型、DLP 流水线、负责任披露政策 | |
发布历史与路线图 | |
高层项目概览与统计数据 |
贡献
欢迎在 github.com/shakaran/symfony-agent-mcp 提交 Issue 和拉取请求。
提交 PR 前请阅读 DEVELOPMENT.md,关于负责任披露政策请阅读 SECURITY.md。
许可证
MIT © Ángel Guzmán Maeso
Available Tools
5 toolsactivate_categoryA
Activate all tools in a category for this session. After activation the MCP client will receive the full tool definitions on the next tools/list refresh. Use list_tool_categories to see available categories and their token costs. Pass force=true to override the token budget guard.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Override token budget warning and activate anyway (default false). | |
| category | Yes | Category key from list_tool_categories, e.g. "database", "api", "security". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the side effect (client receives full tool definitions on next refresh), the session scope, and the token budget guard behavior. It does not mention whether activation is reversible or if there are any side effects beyond the refresh, but the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action and effect, the prerequisite listing tool, and the force parameter. Front-loaded with the primary action, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 params, no output schema), the description is complete for an agent to call it correctly. It covers the action, the prerequisite, the parameter semantics, and the side effect. The only minor gap is not describing what happens after activation (e.g., whether tools are immediately available or require a refresh), but the description does mention the refresh behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds value by explaining the purpose of force (override token budget warning) and the category format (key from list_tool_categories), which goes beyond the schema's basic descriptions. It doesn't add syntax details but the schema already provides those.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Activate all tools in a category'), the resource ('category'), and the session scope. It distinguishes itself from siblings by mentioning the activation effect and the token budget guard, which is unique to this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to use list_tool_categories to see available categories and token costs, and explains the force parameter for overriding the budget guard. It implies when to use this tool (when you need tools from a category) and provides a clear alternative for listing categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deactivate_categoryA
Remove a previously activated category from this session to free up context budget. Useful when switching between different areas of the codebase.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category key to deactivate, e.g. "database". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds useful behavioral context by noting the session scoping and the context-budget effect. However, it does not disclose behavior for edge cases like deactivating a category that is not active, or whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The primary action and its purpose are front-loaded, and the use-case guidance is directly relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, session-scoped tool, the description covers what it does, why it matters, and when to use it. It does not mention listing available categories, but the sibling tool list_tool_categories is available in context, making this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents the 'category' parameter with an example. The description reinforces the meaning by referring to 'previously activated category' but adds no new parameter-level details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove'), a specific resource ('previously activated category'), and the scope ('from this session'). It clearly distinguishes the tool from its sibling activate_category by describing the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case: 'Useful when switching between different areas of the codebase.' It implies when to use the tool, though it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_active_toolsA
Show which tool categories are currently active in this session, how many tools are exposed, and the estimated token cost. Use this to understand your current context budget.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so behavioral disclosure falls entirely on the description. The word 'Show' communicates read-only introspection, and the description explicitly reveals that the tool returns session state, a count of exposed tools, and an estimated token cost. It does not explicitly say it has no side effects, but the verb and zero-parameter design make that clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The first sentence front-loads exactly what the tool reports, and the second sentence explains why the agent would call it. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, this description is fully adequate. It conveys the tool's scope, output, and a motivating use case. Nothing essential is missing for a model to invoke the tool appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, the schema is already complete and the description has no parameter details to add. The description does contribute some useful semantics by clarifying what the response will contain, namely active categories, count of exposed tools, and token cost.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Show', and names a clear resource: the tool categories that are currently active in this session, plus a count and estimated token cost. The phrase 'currently active' and the context-budget emphasis clearly set it apart from sibling tools like list_tool_categories or search_tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description directly tells the agent when to use the tool: 'Use this to understand your current context budget.' It clearly establishes a use case, though it does not explicitly mention exclusions alternatives such as when the agent should use list_tool_categories instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_categoriesA
List all available tool categories with descriptions, tool counts, and estimated token cost. Use this first to understand what groups of tools exist before activating them. Only the categories you activate will be shown in subsequent tools/list calls.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers the crucial state-dependent behavior: 'Only the categories you activate will be shown in subsequent tools/list calls.' This is exactly the kind of non-obvious behavior an agent must know. It could also state that this call is side-effect-free, but the provided disclosure is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste, with the most important information front-loaded. Each sentence serves a distinct purpose: what it lists, when to call it, and a critical behavioral caveat. This is a model of concise, useful description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, this description is complete. It covers return contents, invocation order, and a behavioral subtlety that would otherwise be invisible. An agent has everything it needs to decide when and how to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters and schema coverage is 100%, so the baseline is already a 4. The description doesn't need to add parameter semantics since there are none, and it doesn't waste words trying.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), a clear resource ('all available tool categories'), and the exact fields returned (descriptions, tool counts, token cost). The distinction from siblings is mostly implied via the workflow cue 'before activating them,' but it doesn't name an alternative sibling like the calibration gold standard, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit guidance to 'Use this first' before activating categories, which clearly signals the intended position in the workflow. It doesn't explicitly discuss when not to use this tool or contrast with search_tools, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsA
Search for specific tools by describing what you want to do. Returns the top matching tool definitions (name + description + input schema) ready to call immediately — no activation needed for one-off use. For repeated use of a group, call activate_category instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tools to return (default 8, max 20). | |
| query | Yes | Natural language description of what you want to do, e.g. "detect N+1 queries" or "list Symfony routes". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the return shape (name + description + input schema), the relevance model ('top matching'), and the key behavior that no activation is needed. This is solid coverage for a read-only search tool, though it does not mention edge cases like no matches found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the search intent is in the first sentence, return behavior in the second, and the alternative activation path in the third. There is no redundant text or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter search tool with no output schema, the description gives the agent enough to know what to pass, what it will receive, and whether activation is required. It also mentions the key distinction from activate_category, making the tool self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both query and limit. The description adds no additional parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource ('specific tools') and explains how the search is expressed: by describing what you want to do. It also mentions that it returns ready-to-call tool definitions, which clearly separates it from the category-oriented sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing for one-off use versus repeated use ('For repeated use of a group, call activate_category instead'). It implies when search_tools is appropriate rather than listing a category, but it does not explicitly contrast with list_tool_categories or get_active_tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.1- First observed
activate_category - First observed
deactivate_category - First observed
get_active_tools - First observed
list_tool_categories - First observed
search_tools
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: listing categories, searching tools, activating a category, viewing active categories, and deactivating. There is no overlap or ambiguity in their functions.
All tool names follow a consistent verb_noun snake_case pattern (list_tool_categories, search_tools, activate_category, get_active_tools, deactivate_category), making prediction and selection straightforward.
With 5 tools, the set is tightly scoped to the server's purpose of managing tool categories and sessions. Each tool serves a necessary role in the lifecycle without redundancy or bloat.
The surface covers the full lifecycle of tool category management: discovery (list/search), activation, status inquiry, and deactivation. No obvious gaps exist for the stated domain.
Maintenance
Related MCP Connectors
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Read-only AI coding tools for change verification, release readiness, capacity, and guidance.
Related MCP Servers
- AlicenseAqualityCmaintenanceA production-ready Model Context Protocol (MCP) server that bridges your Symfony/PHP project with LLMs such as Claude. It exposes tools that let the AI read your project's routes, services, Twig templates, and PHP source code.8MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to deeply interact with the PHP ecosystem, including runtime, static analysis, security scanning, testing, Composer, and frameworks like Laravel and Symfony. It exposes over 30 tools, 8 resources, and 7 prompts via MCP, allowing natural language commands to run PHP linting, static analysis, audits, tests, and project initialization.41MIT
- FlicenseNot gradedqualityCmaintenanceEnables debugging Symfony applications by inspecting profiler data through a standalone MCP server.-
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes Symfony profiler runtime data (requests, queries, logs) to AI agents like Claude Code for debugging and optimization.MIT