内容
Drupal 的 MCP 服务器

这是一个基于 TypeScript 的配套 [模型上下文协议(MCP)](https://modelcontextprotocol.io/introduction) 服务器,用于 [Drupal MCP 模块](https://www.drupal.org/project/mcp),适用于 `STDIO` 传输。要使用 `SSE` 传输,不需要此服务器。
> [!IMPORTANT]
> 📖 详细文档请参阅 [drupalmcp.io](https://drupalmcp.io/zh)
## 安装
`STDIO` 二进制文件通过多个分发渠道提供,以适应各种环境:
- [Docker 容器](https://github.com/Omedia/mcp-server-drupal/pkgs/container/mcp-server-drupal)
- [编译二进制文件](https://github.com/Omedia/mcp-server-drupal/releases)
- [JSR 包](https://jsr.io/@omedia/mcp-server-drupal)
以下是使用 `docker` 的快速示例:
```json
{
"mcpServers": {
"mcp-server-drupal": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/omedia/mcp-server-drupal",
"--drupal-url=__DRUPAL_BASE_URL_"
],
"env": {}
}
}
}
```
📖 更多详细信息,请参阅文档中的 [安装](http://drupalmcp.io/zh/mcp-server/stdio-transport/#installation) 部分。
## 身份验证
服务器支持通过环境变量进行身份验证。您可以使用身份令牌或带有用户名和密码组合的基本身份验证。支持以下环境变量:
- `DRUPAL_AUTH_TOKEN`: 身份验证令牌。
- `DRUPAL_AUTH_USER`: 身份验证的用户名。
- `DRUPAL_AUTH_PASSWORD`: 身份验证的密码。
> [!NOTE]
> 请确保在 Drupal MCP 模块设置页面上启用身份验证。
> [!NOTE]
> 如果同时设置了 `DRUPAL_AUTH_TOKEN` 和 `DRUPAL_AUTH_USER`/`DRUPAL_AUTH_PASSWORD`,则令牌将优先于用户名和密码。
📖 有关更多详细信息,请参阅文档中的 [身份验证](http://drupalmcp.io/zh/mcp-server/stdio-transport/#authentication) 部分。
## MCP
- 所有仪器均在初始化阶段由 Drupal API 定义。
> [!NOTE]
> 服务器现在公开以下内容:
>
> - 资源(模板,读取)
> - 工具(调用)
>
> 目前服务器不公开任何提示。
## 开发
该项目使用 [Deno](https://deno.land/) 构建。
> [!NOTE]
> 请使用 `2.0.0` 或更高版本的 Deno。
安装依赖项:
```bash
deno install
```
进行自动重建的开发:
```bash
bun task dev
```
构建服务器:
```bash
deno task build --output build/mcp-server-drupal
```
> [!TIP]
> 要为特定平台构建,请使用 `--target` 标志并查看
> [文档](https://docs.deno.com/runtime/reference/cli/compile/#supported-targets)。
### 调试
由于 MCP 服务器通过 stdio 进行通信,调试可能具有挑战性。我们建议使用
[MCP 检查器](https://github.com/modelcontextprotocol/inspector),它作为 Deno 任务提供:
```bash
deno task inspector --drupal-url [DRUPAL_BASE_URL]
```
## 验证二进制文件和镜像
`drupal_mcp_server` 二进制文件和容器镜像使用基于身份的签名由 [cosign](https://github.com/sigstore/cosign) 签名。
您可以通过从发布页面下载 `signatures.tar.gz` 文件,提取签名并运行以下命令来验证您的二进制文件:
```bash
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
```
在容器方面,您可以通过运行以下命令来验证镜像:
```bash
cosign verify ghcr.io/omedia/mcp-server-drupal:latest \
--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"
```