Drupal MCP 服务器
一个模型上下文协议(MCP)服务器,使Claude能够通过JSON:API与Drupal 10+网站进行交互。此服务器允许Claude查询、搜索并从您的Drupal安装中检索内容。
特点/特性
- 查询内容通过灵活的选项按内容类型搜索和过滤节点
- 获取节点详细信息检索完整的节点信息,包括关系
- 列出内容类型发现您网站上所有可用的内容类型
- 跨类型搜索按标题搜索所有内容类型中的内容
先决条件
- Node.js 18+ 和 npm
- TypeScript 5及以上版本
- 一个启用了JSON:API的Drupal 10+网站(默认启用)
- 有效的Drupal凭据(用户名/密码或OAuth令牌)
安装
# Clone or create the project directory
mkdir drupal-mcp-server
cd drupal-mcp-server
# Initialize and install dependencies
npm init -y
npm install @modelcontextprotocol/sdk axios
npm install -D typescript @types/node项目结构
drupal-mcp-server/
├── src/
│ ├── index.ts # Main MCP server
│ ├── drupal-client.ts # Drupal API client
│ └── types.ts # TypeScript type definitions
├── dist/ # Compiled JavaScript (generated)
├── package.json
└── tsconfig.json建筑;大楼
# Compile TypeScript
npm run build
# Watch mode (optional)
npm run watch编译后的JavaScript文件将输出到 dist/ 目录。
配置
对于Claude Desktop
编辑您的Claude桌面配置文件:
macOS(发音:/ˈmækOS/,中文常译为“麦奥斯”或直接使用原名): ~/Library/Application Support/Claude/claude_desktop_config.json\ Windows: %APPDATA%\Claude\claude_desktop_config.json\ Linux: ~/.config/Claude/claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"drupal": {
"command": "node",
"args": ["/absolute/path/to/drupal-mcp-server/dist/index.js"],
"env": {
"DRUPAL_BASE_URL": "https://your-drupal-site.com",
"DRUPAL_USERNAME": "your-username",
"DRUPAL_PASSWORD": "your-password"
}
}
}
}注:替换 /absolute/path/to/drupal-mcp-server 使用您系统上的实际路径 pwd 在项目目录中获取完整路径。
对于Cline(VS Code)
添加到您的VS Code中 settings.json:
{
"cline.mcpServers": {
"drupal": {
"command": "node",
"args": ["/absolute/path/to/drupal-mcp-server/dist/index.js"],
"env": {
"DRUPAL_BASE_URL": "https://your-drupal-site.com",
"DRUPAL_USERNAME": "your-username",
"DRUPAL_PASSWORD": "your-password"
}
}
}
}环境变量
DRUPAL_BASE_URL(必填):您的Drupal网站URLDRUPAL_USERNAME(可选):基本身份验证用户名DRUPAL_PASSWORD(可选):基本认证密码DRUPAL_ACCESS_TOKEN(可选):OAuth 访问令牌(可替代用户名/密码)
测试
手动服务器测试
直接从命令行测试服务器:
cd /path/to/drupal-mcp-server
DRUPAL_BASE_URL="https://your-site.com" \
DRUPAL_USERNAME="admin" \
DRUPAL_PASSWORD="password" \
node dist/index.js你应该看到:
Drupal MCP Server running
Connected to: https://your-site.com按压 Ctrl+C 停止。
测试与Drupal的连接
验证您的Drupal网站是否可访问:
curl -I https://your-site.com/jsonapi应该返回一个 200 OK 状态。
在Claude桌面版上进行测试
- 更新配置后重启 Claude 桌面版
- 在界面底部寻找 🔌 图标
- 点击它查看已连接的MCP服务器
- 开启一个新的对话并尝试:
What tools do you have available?示例查询
列出内容类型:
List all available content types on my Drupal site查询内容:
Show me 5 published articles搜索内容:
Search for content with "tutorial" in the title获取节点详情:
Get the full details of node [UUID]复杂查询:
1. List all content types
2. Find 3 articles
3. Show me the complete details of the first article可用工具
query_content
按类型搜索和筛选Drupal内容。
参数:
contentType(必填):内容类型的机器名(例如,“article”,“page”)limit(可选):要返回的最大结果数(默认:10)title(可选):按标题过滤(部分匹配)status(可选):按发布状态(真/假)过滤
get_node
检索特定节点的完整详细信息。
参数:
nodeId(必填):节点的UUID或数字IDinclude(可选):要包含的相关实体数组(例如,\["field_image", "uid"\])
list_content_types
列出网站上所有可用的内容类型。
参数: 无
search_content
按标题搜索所有内容类型。
参数:
searchTerm(必填):要在标题中搜索的文本limit(可选):最大结果数(默认:10)
故障排除
“服务器断开连接”错误
- 检查服务器是否能手动启动
- 验证配置中的路径是否为绝对路径
- 检查Claude Desktop日志:
# macOS
tail -f ~/Library/Logs/Claude/mcp*.logSSL证书错误(DDEV/本地开发)
如果使用自签名证书,服务器会自动为本地开发禁用证书验证。
权限错误
确保您的Drupal用户有权访问JSON:API终端节点。通常,“查看已发布的内容”权限足以进行读取操作。
JSON:API未启用
JSON:在Drupal 10+中,“API”默认是启用的。如果您遇到404错误,请确认其已在以下位置启用: /admin/modules 搜索“JSON:API”
发展
添加新工具
- 定义工具模式(或工具架构)于
TOOLS数组中的src/index.ts - 在(相应位置)实现处理程序
CallToolRequestSchemaswitch 语句 - 添加任何新方法到
DrupalClient按需授课 - 重建:
npm run build
扩展功能
潜在的改进点:
- 创建/更新内容(POST/PATCH 请求)
- 管理分类法术语
- 查询用户
- 执行视图
- 上传媒体/文件
- 管理菜单
许可证
麻省理工学院(MIT)
做出贡献
欢迎贡献!请随时提交问题或拉取请求。
