Goldnat Plugins
← Back to Drupal

Drupal AI Connect — Installation & Setup Guide

Install, activate, and connect the webmcp_connect module (Servio Protocol) to your Drupal site. 5 free read-only tools.

📅 Updated: 2026-07-07 🎬 Video: drupal-install-connect

Overview

Goldnat AI Connect for Drupal (module: webmcp_connect) exposes your Drupal content to AI agents over the Servio Protocol. Five read-only tools: search nodes, get a single node, search comments, get a single comment, and identify the current user.

What you get:

  • 5 free toolsgetCurrentUser, searchNodes, getNode, searchComments, getComment
  • Compatible with Drupal 9 and 10
  • Version 1.5.0 — passes drupal-check cleanly

Note: Drupal AI Connect currently includes 5 read-only tools. Additional tools may be added in future releases.

Prerequisites

  • Drupal 9.x or 10.x
  • PHP 8.0 or higher
  • Composer installed on the server
  • Clean URLs enabled (Configuration → Search and metadata → URL aliases)
  • HTTPS recommended
  • “administer modules” permission

Installation

composer require 'drupal/webmcp_connect:^1.5'
drush en webmcp_connect
drush cr

Manual installation

  1. Download the module from Drupal.org.
  2. Extract to modules/contrib/webmcp_connect/.
  3. Admin → Extend → check AI ConnectInstall.
  4. Admin → Configuration → Web services → AI Connect — verify the manifest is reachable.

Connecting to an AI Agent

  1. Go to Admin → Configuration → Web services → AI Connect → My Tokens.
  2. Click Generate Prompt.
  3. Copy the prompt and paste it into your agent (Claude / ChatGPT / goldnat.ai).
  4. Approve OAuth PKCE in the browser.

First Test

  • “Who am I on this site?” → drupal.getCurrentUser
  • “Search for 5 articles about AI” → drupal.searchNodes with keyword=AI
  • “Show me the comments on article #42” → drupal.searchComments + drupal.getComment

Reconnecting

Refresh tokens valid for 30 days. If expired:

  1. AI Connect → My Tokens → Revoke the old one.
  2. Generate Prompt again → paste into your agent.

Token Management

As on WordPress — there’s a /user/tokens page (with local_task) that shows all tokens filtered by Active/Renewable/Unused/Inactive/Revoked/All.

Uninstalling the Module

1. Revoke all tokens

  • AI Connect → My Tokens → Revoke All — kills every active agent session immediately.

2. Uninstall the module

drush pmu webmcp_connect
drush cr

Or via UI: Admin → Extend → Uninstall → check AI ConnectUninstall.

3. Remove the module files

composer remove drupal/webmcp_connect

Or delete modules/contrib/webmcp_connect/ manually.

4. Clean the DB (fresh reinstall only)

DROP TABLE IF EXISTS webmcp_tokens;
DROP TABLE IF EXISTS webmcp_audit;
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'webmcp_connect';

Warning: Deletes all token history and audit logs.

Common Troubleshooting

ErrorCauseFix
Manifest not found (404)Clean URLs not enabledConfiguration → URL aliases → Save
Access deniedNo permission to read nodesAnonymous role isn’t enough — allow the authenticated user
Class not foundComposer autoload didn’t rundrush cr
Route not foundStale router cachedrush router:rebuild

Support

Need help? Contact us and we’ll get back to you.

Video Tutorial (Coming Soon)

3-4 minute walkthrough: (A) What is Goldnat AI Connect / Servio Protocol, (B) installing via Composer and drush, (C) connecting to an AI agent, (D) live usage.

Screenshots

Drupal Extend page
Navigate to Extend → Install new module
Enable the module
Enable + save configuration
Token management page
Generate prompt for AI agent connection

🎬 Video Tutorial — Coming Soon

A 3-5 minute video covering: intro → install → connect → demo.

Tag: drupal-install-connect

Status: Awaiting production

This guide is informational and non-binding. Steps and behavior can vary between platforms and plugin versions. For the binding terms, see the Terms & Conditions.

Tools

Available tool calls.

50 tools exposed via the Servio protocol. Pro tools are marked.

drupal

  • drupal.downloadFile Get a direct download URL or binary content for a file by file ID. Returns authenticated URL and file metadata.
  • drupal.executeView Run a view and return its actual results — the rendered rows, not just its configuration.
  • drupal.getContentTypes List all available content types (node bundles) with their machine names, labels, descriptions, and field configurations.
  • drupal.getImageStyles Get all configured image styles (responsive derivatives) for a specific media image, including thumbnail, medium, large, and custom styles. Returns URLs for each style with dimensions. Essential for responsive image delivery.
  • drupal.getMedia Get media entity details by media ID, including media type (image/video/document), source file, alt text, and usage references.
  • drupal.getMediaDownloadUrl Get a direct download URL for a media file. Returns both public and private file URLs with appropriate access tokens for private files. Use this to retrieve the actual binary content of images, videos, documents, and audio files.
  • drupal.getMediaFieldValues Get all custom field values for a media item, including taxonomy terms, entity references, text fields, and computed fields. Returns structured data with field machine names, labels, and formatted values.
  • drupal.getMediaUsage Get a complete list of all places where a specific media item is used across the site, including node IDs, entity types, field names, and URLs. Essential for understanding impact before deletion or modification.
  • drupal.getMenuItems Get menu structure and items for a specific menu by menu ID, including titles, links, parent-child relationships, and weights.
  • drupal.getNodeAttachments List all file and media attachments for a node, including file IDs, names, types, sizes, and URLs.
  • drupal.getNodeRevisionContent Get the full content of a specific node revision by revision ID, including all fields, body, and metadata as they existed in that version.
  • drupal.getNodeRevisions List all revisions for a specific node, including revision IDs, creation dates, authors, and revision log messages.
  • drupal.getTaxonomyTerm Get a single taxonomy term by ID, including name, description, vocabulary, parent terms, and hierarchy depth.
  • drupal.getUser Get user profile by user ID, including username, email, roles, creation date, last login, status, and custom profile fields.
  • drupal.getView Execute a Drupal View and get results by view ID and display ID, with optional filters and arguments. Returns structured data as configured in the view.
  • drupal.getVocabularies List all taxonomy vocabularies (content categorization systems), including vocabulary IDs, names, descriptions, and term counts.
  • drupal.listMediaLibrary List all media items in the media library with pagination, sorted by upload date, name, or usage count. Supports filtering by media type (image/video/document/audio) and collection/folder. Returns thumbnail URLs and basic metadata for each item.
  • drupal.listMediaTypes List all configured media types (bundles) on the site with their field definitions, allowed file extensions, upload size limits, and configured image styles or video transcoders. Useful for understanding what types of media can be uploaded.
  • drupal.listUnusedMedia List all media items that are not currently referenced by any content entity. Useful for cleanup operations and identifying orphaned files that can be safely deleted. Returns media IDs, names, file sizes, and upload dates.
  • drupal.listViews List the views configured on the site, with their displays and status.
  • drupal.searchMedia Search media library by name, type, MIME type, or upload date. Returns media IDs, names, types, thumbnails, and file references.
  • drupal.searchMediaByTag Search media items by taxonomy tags or categories. Supports multiple tags with AND/OR logic. Returns matching media with thumbnails and usage statistics. Essential for organizing large media libraries.
  • drupal.searchTaxonomyTerms Search taxonomy terms by name, vocabulary, parent term, or hierarchy level. Returns term IDs, names, descriptions, and relationships.
  • drupal.searchUsers Search users by username, email, role, status (active/blocked), or registration date. Returns user IDs, names, emails, and roles.

CoreModule

  • drupal.createComment Post a new comment on a content node (auto-detects the comment field per content type)
  • drupal.createNode Create a new content node (article, page, or any content type)
  • drupal.deleteComment Permanently delete a comment
  • drupal.deleteNode Permanently delete a content node
  • drupal.getComment Returns a single comment by ID.
  • drupal.getCurrentUser Returns the currently authenticated user.
  • drupal.getNode Returns a single content node by ID.
  • drupal.publishNode Publish or unpublish a content node
  • drupal.searchComments Searches comments by keywords.
  • drupal.searchNodes Searches content nodes by keywords and type.
  • drupal.updateComment Update the body of an existing comment
  • drupal.updateNode Update an existing content node's title or body

FileModule

  • drupal.uploadFile Upload a new file from base64-encoded content (max 10 MB), for use as a media source

MediaModule

  • drupal.createMedia Create a media library item from an uploaded file or a remote source URL
  • drupal.deleteMedia Delete a media item (the underlying file is left in place)
  • drupal.updateMedia Update a media item's name or source

StructureModule

  • drupal.createMenuLink Add a new link to a menu (internal path or external URL); requires administer menu permission
  • drupal.deleteMenuLink Permanently delete a custom menu link
  • drupal.updateMenuLink Update an existing custom menu link

TaxonomyModule

  • drupal.createTaxonomyTerm Create a new taxonomy term in a vocabulary, optionally hierarchical
  • drupal.deleteTaxonomyTerm Permanently delete a taxonomy term
  • drupal.updateTaxonomyTerm Update an existing taxonomy term's name or description

UserModule

  • drupal.blockUser Block a user account, preventing login (the primary uid=1 administrator cannot be blocked)
  • drupal.createUser Create a new user account, auto-generating a password if none is given
  • drupal.unblockUser Unblock a previously blocked user account
  • drupal.updateUser Update a user account's email, password, or role assignments