D
Drupal
community
other
Server for interacting with [Drupal](https://www.drupal.org/project/mcp) using STDIO transport layer.
MCP Server for Drupal
This is a typescript based companion
Model Context Protocol(MCP)
server for the Drupal MCP module that
works with the
STDIO
transport. In order to use SSE
transport this server is
not required.[!IMPORTANT] Both the Drupal module and this server are in active development. Use them at your own risk.
Installation and Usage
-
Download the binary for your system from the releases page
-
To use it with Claude Desktop you need to add the server config in the
file. The file is located at the following path:claude_desktop_config.json
- On MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- On Windows:
%APPDATA%/Claude/claude_desktop_config.json
{ "mcpServers": { "mcp-server-drupal": { "command": "__BINARY_PATH__", "args": ["--drupal-url", "__DRUPAL_BASE_URL__"], "env": {} } } }
is a required argument--drupal-url
- Replace
with the path to the downloaded binary__BINARY_PATH__
- Replace
with the base URL of your Drupal site__DRUPAL_BASE_URL__
- On MacOS:
-
To check the server and sdk version run the following command:
mcp-server-drupal --version
- To check the available commands run the following command:
mcp-server-drupal --help
Docker
The server is available as docker image on GHCR.
{ "mcpServers": { "mcp-server-drupal": { "command": "docker", "args": [ "run", "-i", "--rm", "ghcr.io/omedia/mcp-server-drupal", "--drupal-url=__DRUPAL_BASE_URL_" ], "env": {} } } }
Specific version of the images are also avaiable.
{ "mcpServers": { "mcp-server-drupal": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "DRUPAL_AUTH_TOKEN", "ghcr.io/omedia/mcp-server-drupal:1.0.0-alpha5", "--drupal-url=__DRUPAL_BASE_URL__" ], "env": { "DRUPAL_AUTH_TOKEN": "THEPASSWORD" } } } }
Development Phase
If you are using the server in development phase and you have
ddev
, lando
or simple docker compose
keep in mind to run the server in the same network as the Drupal site using --network
or -n
flags. You can also achive the same with host.docker.iternal
Alternative usage
The server is also available as a deno module on JSR so you can use via
npx
{ "mcpServers": { "mcp-server-drupal": { "command": "npx", "args": [ "-y", "deno", "run", "-A", "jsr:@omedia/mcp-server-drupal@<VERSION>", "--drupal-url", "__DRUPAL_BASE_URL__" ], "env": {} } } }
Authentication
The server supports both authentication via environment variables. You can use either a auth token or a basic auth with username and password combination . The following environment variables are supported:
: The authentication token.DRUPAL_AUTH_TOKEN
: The username for authentication.DRUPAL_AUTH_USER
: The password for authentication.DRUPAL_AUTH_PASSWORD
[!NOTE] Make sure to turn the authentication on the Drupal MCP module settings page.
[!NOTE] If bothandDRUPAL_AUTH_TOKEN
/DRUPAL_AUTH_USER
are set, the token will be used over the username and password.DRUPAL_AUTH_PASSWORD
Example usage with token:
{ "mcpServers": { "mcp-server-drupal": { "command": "__BINARY_PATH__", "args": ["--drupal-url", "__DRUPAL_BASE_URL__"], "env": { "DRUPAL_AUTH_TOKEN": "<AUTH_TOKEN>" } } } }
Example usage with username and password:
{ "mcpServers": { "mcp-server-drupal": { "command": "__BINARY_PATH__", "args": ["--drupal-url", "__DRUPAL_BASE_URL__"], "env": { "DRUPAL_AUTH_USER": "<BASIC_AUTH_USERNAME>", "DRUPAL_AUTH_PASSWORD": "<BASIC_AUTH_PASSWORD>" } } } }
Docker
If you want to use the auth with docker do not forget to pass them as envriment variables
{ "mcpServers": { "mcp-server-drupal": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "DRUPAL_AUTH_TOKEN", "ghcr.io/omedia/mcp-server-drupal", "--drupal-url=__DRUPAL_BASE_URL__" ], "env": { "DRUPAL_AUTH_TOKEN": "<AUTH_TOKEN>" } } } }
MCP
- All instruments are defined by the Drupal API during the initialization phase
[!NOTE] The server now exposes the following
- Resources (templates, reads)
- Tools (calls)
No prompts are exposed by the server for now
Development
This project is built with Deno.
[!NOTE] Use deno versionor above2.0.0
Install dependencies:
deno install
For development with auto-rebuild:
bun task dev
Build the server:
deno task build --output build/mcp-server-drupal
[!TIP] To build for the specific platform use theflag and check the docs--target
Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We
recommend using the
MCP Inspector, which is
available as a deno task:
deno task inspector --drupal-url [DRUPAL_BASE_URL]
Verifying the binaries
drupal_mcp_server
binaries are signed by cosign using identity-based signing. You can verify your binary by downloading the signatures.tar.gz
file from the release page, extracting the signature and running the following command:cosign verify-blob ${YOUR_BINARY_NAME} \ --bundle signatures/${YOUR_BINARY_NAME}.bundle \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ --certificate-identity-regexp https://github.com/Omedia/mcp-server-drupal/.github/workflows/release.yml@refs/tags/v \ --certificate-github-workflow-repository Omedia/mcp-server-drupal
Related Servers
S
Sequential Thinking
reference
Dynamic and reflective problem-solving through thought sequences
View Details