Skip to main content
Glama

Drupal Code Query

Server Details

Drupal core change records, core symbol lifecycle, and contrib upgrade readiness.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.

Tool Definition Quality

Score is being calculated. Check back soon.

Available Tools

6 tools
get_change_recordInspect

Return one Drupal core change record in full: its title, flavour, target core version, machine-checkable tracks, linked issue numbers, and how far contrib has adopted it.

Flavour separates work that is forced from work that is offered. coming-break means an API is going away, coming-new-API means one is being added, landed-but-still-relevant means it already shipped, and policy-only means it targets no code and therefore has no adoption to measure.

Adoption is counted over contrib development branches only, because a release tag is a frozen snapshot and says nothing about work still to do. A branch counted as legacy still calls the going-away side; migrated has moved.

Returns counts across every affected project plus a ranked head with the outstanding ones first. Ask for a specific project with a narrower tool rather than raising top_projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
nidYesThe change record's drupal.org node id, for example 3581981.
top_projectsNoHow many impacted projects to return in the ranked head. Defaults to 10, capped at 40.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nidYes
urlYes
titleYes
flavorYes
impactNo
issuesYes
tracksYes
computed_atYes
issue_countYes
target_versionNo
list_change_recordsInspect

List the Drupal core change records targeting a range of core versions, each tagged with its flavour so a caller can separate work that is forced from work that is merely offered.

A change record is the human write-up of a change: why it happened and what to do about it. For the machine-readable diff of the API surface itself — which symbols were added, deprecated or removed — use what_changed.

Both bounds are inclusive and accept the forms people write: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major covers the whole major.

Flavours: coming-break is an API going away, coming-new-API is one being added, landed-but-still-relevant already shipped. Records that target no core version at all are policy-only and belong to no range, so they never appear here.

Narrow with project to answer a single maintainer's question; each record then also carries how many of that project's development branches are still on the legacy side. Returns the count of every record in range plus a ranked head, newest target version first.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesUpper core version bound, inclusive. Same forms as from. A bare major covers every minor of it.
fromYesLower core version bound, inclusive. Write it the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major starts at its first minor.
limitNoHow many records to return in the head. Defaults to 15, capped at 40.
projectNoOptional contrib project machine name. Narrows the list to records a development branch of that project still matches.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
fromYes
totalYes
projectNo
recordsYes
by_flavorYes
truncatedYes
lookup_core_symbolInspect

Look up one Drupal core symbol and answer whether it is safe to use, and who still uses it.

Returns the catalog entry with its lifecycle fields reported separately, since they do not always agree: a symbol can be deprecated with no removal date, or removed without ever having been deprecated, and internal is a third thing again. The status list names every flag that applies.

Usage is counted over contrib development branches only, so it measures work still to do rather than history. Returns the number of projects and branches using the symbol plus a ranked head, largest install base first.

Change records that touched the symbol are listed with their flavour and node id, so the rationale is one call away rather than a search.

ParametersJSON Schema
NameRequiredDescriptionDefault
fqnYesFully-qualified core symbol name, with or without the leading backslash. Classes, interfaces, methods and functions all work: Drupal\Core\Entity\EntityInterface, or Drupal\Core\Recipe\RecipeRunner::installModule.
top_projectsNoHow many using projects to return in the ranked head. Defaults to 10, capped at 30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
usageNo
symbolYes
change_recordsYes
change_record_countYes
project_upgrade_reportInspect

Answer whether one contrib project is ready for a target Drupal core version, and what work is left.

A change record applies to the project when it targets that core version or an earlier one and a development branch of the project matched one of its tracks. Each applicable record gets a verdict: outstanding means a branch still calls the going-away side, in_progress means some branches have moved, adopted means they all have.

Returns counts by verdict across every applicable record, then a ranked head of the outstanding ones with file and line evidence from the project's own code, so a caller can go straight to the callsite. Each carries how many other projects are outstanding on the same record, which is what says whether to wait for an upstream fix.

Every entry carries its node id: pass it to get_change_record for the full record.

Counted over development branches only. A release tag cannot be fixed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many outstanding records to return with evidence. Defaults to 8, capped at 15.
projectYesContrib project machine name as it appears on drupal.org, for example webform.
target_versionYesTarget core version. Write it the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major means the end of that major.

Output Schema

ParametersJSON Schema
NameRequiredDescription
axisYes
projectYes
recordsYes
branchesYes
truncatedYes
computed_atYes
outstandingYes
target_versionYes
search_contrib_codeInspect

Search the source of every indexed Drupal contrib project, plus core, for a code pattern. Use it to find callers of an API before changing it.

The index classifies Drupal's PHP file extensions — .module, .install, .theme, .engine, .profile, .inc — as PHP, so lang:php matches them and sym: resolves symbols inside them. No language filter is applied for you: add lang:php to narrow to PHP, or leave it off to reach Twig, JavaScript, YAML and the rest.

Returns index-wide match and file counts plus a ranked head of files, each with its repository, path, and matching line numbers. Narrow with the repos argument or a tighter query rather than raising limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum files to return. Defaults to 20, capped at 50.
queryYesZoekt query. Regex by default, so escape . ( ) $ and other metacharacters. Filters: r:<repo> f:<path regex> lang:<language> b:<branch> sym:<symbol> case:yes. Example: hook_form_alter f:\.module$
reposNoRestrict the search to these project machine names. Sent as one query, never one call per project.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsYes
queryYes
truncatedYes
total_filesYes
total_matchesYes
what_changedInspect

Diff the Drupal core API surface between two core versions: which symbols were added, which were deprecated, and which were removed.

Both bounds are inclusive and accept the forms people write: 11.2, 11.2.x, 11.2.0, 11, or 11.x. To see one minor alone, pass the same version twice.

The three buckets are independent. A symbol can be added and deprecated in the same range, and a removal usually lands a major or two after its deprecation, so the removed count is not a subset of the deprecated one.

Each bucket returns the full count plus a head ranked by how many contrib projects still call the symbol on a development branch, so the entries that will actually break someone come first. Symbols core marks @internal are counted separately and kept out of the heads: they are not API.

For the human write-up of why a change happened and what to do about it, use list_change_records over the same range.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesUpper core version bound, inclusive. Same forms as from. A bare major covers every minor of it.
fromYesLower core version bound, inclusive. Write it the way people say it: 11.2, 11.2.x, 11.2.0, 11, or 11.x. A bare major starts at its first minor.
headNoHow many symbols to return per bucket. Defaults to 8, capped at 20.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toYes
fromYes
addedYes
removedYes
deprecatedYes
unplaceable_symbolsNo

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Software end-of-life intelligence for AI agents: EOL dates, support timelines and 0-100 upgrade risk scores for 480+ products. Check whether a version is still supported, score its risk, or audit an entire stack.
    5
    MIT
  • A
    license
    -
    quality
    B
    maintenance
    Enables AI agents to coordinate on a shared repository using commutativity-proven parallel landing and regenerative merge, avoiding rebase conflicts through symbol-level leases.
    Apache 2.0

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources