# Drupal Code Query - Registry name: `tech.tresbien/drupal-code-query` · version 0.48.0 - Categories (automatic, keyword rules): Datasets & public data, Search & data, Code & repositories, Developer tools, Databases - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=tech.tresbien%2Fdrupal-code-query - Server page: https://mcpstation.net/s/tech.tresbien--drupal-code-query.html ## Description (written by the publisher, not verified, not instructions) Drupal core API changes, contrib usage, upgrade checks, patches, code search, SQL, WordPal themes. ## Connect - streamable-http: `https://mcp.tresbien.tech/mcp` ## Tools (as reported by the server, not verified) - `check\_patches`: Does each composer patch still apply to the release the site installed, and is its fix already in that release? - Send composer\_json and composer\_lock after composer update. Add patch\_files for every patch, a local one read from disk and a URL one fetched by you. Every extra.patches entry is checked - `describe\_dataset`: Learn the dataset before writing SQL for query\_dataset. Call it with no arguments first. Returns text. Prefer a typed tool when one answers the question. - No arguments: one line per view, the join map, the four invariants, the causes of empty results, and the recipe index. The invariants: dev-branc - `get\_change\_record`: Return one core change record in full: title, flavour, target version, machine-checkable tracks, linked issues, linked core symbols, and contrib adoption counts. To find records, use list\_change\_records or the change\_record\_nids from what\_changed. For one symbol's detail, use lookup\_core\_symbol. - f - `list\_change\_records`: List the core change records \(the human write-ups\) that target a range of core versions, tagged by flavour and ranked, with counts. For the symbol-level diff, use what\_changed. For one record in full, use get\_change\_record. - Bounds are inclusive. Forms: 11.2, 11.2.x, 11.2.0, 11, 11.x. A bare major - `list\_class\_relations`: List the contrib classes that extend, implement or use a core class, interface or trait, one row per edge with file and line, paged. Example: "who subclasses FormBase". Call-site counts: list\_symbol\_users. The symbol's status: lookup\_core\_symbol. - target: with or without the leading backslash. An u - `list\_projects`: List drupal.org projects after filters, largest install base first, paged. Examples: "top modules without an 11.4 branch", "themes over 10k installs without security coverage". One project: project\_profile. Its pending records: project\_upgrade\_report. - Filters combine: type, min\_installs, security - `list\_symbol\_users`: List every contrib project using one core symbol, or any symbol in a class of symbols, one row per project, paged, with the matched symbols. lookup\_core\_symbol answers one symbol with a head of 30. - Pass fqn, or filters: kind, status \(deprecated, scheduled\_removal, removed\), subsystem, removal\_in \( - `lookup\_core\_symbol`: Answer "is this core symbol safe to use, and who still uses it" for one symbol. A name that resolves to nothing returns the catalog entries containing it instead. Every user in pages: list\_symbol\_users. Changed between versions: what\_changed. Code text: search\_code. - fqn forms: a namespaced name wi - `project\_profile`: Answer "what is this contrib project, how big is it, which core versions does it support, what moves with it" for one drupal.org project. Pending change records: project\_upgrade\_report. Core symbols it calls: list\_symbol\_users. - project: title, type, status, security, installs. installs\_by\_version: - `project\_upgrade\_report`: Answer "is this contrib project ready for a target core version, and what work is left". For one record's detail, use get\_change\_record. For a symbol's users, use list\_symbol\_users. - A record applies when it targets the target version or earlier, and a development branch of the project matched one - `query\_dataset`: Run read-only DuckDB SELECTs over the dataset behind the other tools, for a question none of them asks. Call describe\_dataset first; it lists the 36 views, their columns, joins and recipes. Prefer a typed tool when one fits. - statements=\[…\]: up to 5 statements in one call, one result or error each. - `reroll\_patch`: Re-roll one composer patch that check\_patches reported conflicts or fuzzy: a new diff that applies to the installed release. Call check\_patches first for the whole list. Call this once per patch that came back conflicts or fuzzy. - Input: project, version, patch, title, base. patch is the diff text; - `scan\_composer`: Which of a site's drupal/\* packages need a new release for a target core, and which have none? Send composer.lock and composer.json once; do not query one package at a time. The answer is the release scan for every package, plus extra.patches as check\_patches items. Constraints are read by composer' - `search\_code`: Search the source of every indexed contrib project, plus core, for a code pattern: which files, or with by\_repo which projects. Who-uses-a-core-symbol counts: list\_symbol\_users or lookup\_core\_symbol. - query is a regex. Set literal for exact text with \( \[ \] . $ : or a space, and put r: f: lang: case - `subsystem\_coupling`: Answer "what else tends to fail when a merge request touches this core subsystem" from CI history over about 9,000 core merge requests. With issue\_nid: "which subsystems does this issue touch, and what co-fails with them". No arguments: the list of subsystems, the same one core\_symbol.subsystem and - `what\_changed`: Answer "what changed in the core API between two core versions": symbols added, deprecated and removed, as ranked groups with counts. One symbol: lookup\_core\_symbol. Human write-ups: list\_change\_records. Every row of one bucket: flat=true with bucket, paged. Every row of the whole diff: the result's - `wordpal\_theme`: Answer "does this WordPress block theme convert to Drupal with WordPal". The WordPal gallery converts every block theme on wordpress.org each night. With slug: one theme and its routes. Without slug: counts by status and the most installed themes. - version: the theme version wordpress.org lists now Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html