关于 Directus Content MCP
Directus Content MCP 是一个 MCP 服务,让 Directus 用户可以通过 LLM 与项目中的数据交互。它面向内容编辑人员和数据分析人员,并有意限制删除字段或集合等破坏性操作。
主要功能
- 01通过自然语言读写 Directus 集合中的条目
- 02读取集合结构与字段定义
- 03管理文件元数据并导入外部文件
- 04触发自动化流程并管理评论
- 05限制删除字段和集合等高风险操作
适用场景
- 01编辑人员通过 LLM 撰写博客文章并更新内容
- 02数据分析人员查询集合并生成报告
- 03整理媒体资源并为文件添加描述和标签
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 Directus 的读写、文件、字段、流程和评论等工具,以及提示词与系统提示。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Directus 内容 MCP 服务
模型上下文协议(MCP)是一项标准,可帮助 AI 工具和 大模型与 Directus 等应用和服务进行交互。
Directus 内容 MCP 服务为 Directus 用户提供了在大模型中与其数据交互的接口。一些不错的 使用场景包括:
- 内容编辑人员:在 Directus 项目中创建自定义页面、撰写博客文章、更新内容、整理资源等。
- 数据分析师:使用自然语言查询集合、生成报告、分析趋势,并从 Directus 数据中提取见解。
该服务有意限制会导致严重后果的破坏性操作,例如删除字段或集合而造成的数据丢失。
我们计划在未来版本中为使用本地/开发环境 Directus 项目的开发者提供更多工具,也可能将其作为独立软件包提供,以进一步避免数据丢失。
安装
先决条件
- 一个现有的 Directus 项目
如果你还没有 Directus 项目,可以在 Directus Cloud 免费试用,开始使用:https://directus.cloud/register
或者
你可以使用以下终端命令,在本地启动一个 Directus 示例实例。
npx directus-template-cli@latest init
第 1 步:获取 Directus 凭据
你可以使用电子邮件和密码,或生成静态令牌,将 MCP 连接到你的 Directus 实例。
获取静态访问令牌:
- 登录你的 Directus 实例
- 前往用户目录,并选择你自己的用户个人资料
- 向下滚动到令牌字段
- 生成令牌并复制
- 保存用户(务必保存,否则会收到显示“令牌无效”的错误!)
第 2 步:在 AI 工具中配置 MCP
Claude Desktop
-
打开 Claude Desktop,然后前往设置。
-
在开发者选项卡下,点击编辑配置以打开配置文件。
-
添加以下配置:
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_TOKEN": "your-directus-token>" } } } }或者,如果你使用电子邮件和密码
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_USER_EMAIL": "[email protected]", "DIRECTUS_USER_PASSWORD": "your-password" } } } }请务必将占位值替换为你的 URL 和凭据。
-
保存配置文件并重启 Claude desktop。
-
在新聊天界面中,你应该会看到一个显示 Directus MCP 服务的图标。
Cursor
-
打开 Cursor,如果项目根目录中不存在
.cursor目录,请创建一个。 -
如果
.cursor/mcp.json文件不存在,请创建并打开该文件。 -
添加以下配置:
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_TOKEN": "your-directus-token>" } } } }或者,如果你使用电子邮件和密码
{ "mcpServers": { "directus": { "command": "npx", "args": ["@directus/content-mcp@latest"], "env": { "DIRECTUS_URL": "https://your-directus-url.com", "DIRECTUS_USER_EMAIL": "[email protected]", "DIRECTUS_USER_PASSWORD": "your-password" } } } }请务必将占位值替换为你的 URL 和凭据。
-
保存配置文件。
-
打开 Cursor 并前往设置/MCP。服务成功连接后,你应该会看到绿色的活动状态。
工具
MCP 服务提供以下工具,用于与您的 Directus 实例交互:
| 工具 | 描述 | 使用场景 |
|---|---|---|
| system-prompt | 向大模型助手提供有关其角色的上下文 | 在会话开始时了解系统上下文 |
| users-me | 获取当前用户信息 | 了解权限、个性化回复 |
| read-collections | 获取所有集合的架构 | 探索数据库结构、了解关系 |
| read-items | 获取任意集合中的条目 | 检索内容、搜索数据、展示信息 |
| create-item | 在集合中创建新条目 | 添加新内容、记录或条目 |
| update-item | 修改现有条目 | 编辑内容、更新状态、更正信息 |
| delete-item | 从集合中删除条目 | 清理过时内容 |
| read-files | 访问文件元数据或原始内容 | 查找图片、文档或媒体资源 |
| import-file | 从 URL 导入文件 | 将外部媒体添加到您的 Directus 实例 |
| update-files | 更新文件元数据 | 整理媒体、添加描述、添加标签 |
| read-fields | 获取集合的字段定义 | 了解数据结构、字段类型和验证规则 |
| read-field | 获取特定字段的信息 | 查看详细的字段配置 |
| create-field | 向集合添加新字段 | 扩展数据模型 |
| update-field | 修改现有字段 | 更改字段配置、界面选项 |
| read-flows | 列出可用的自动化工作流 | 寻找自动化机会 |
| trigger-flow | 执行自动化工作流 | 批量操作、发布、状态更改 |
| read-comments | 查看条目上的评论 | 检索反馈、查看讨论串 |
| upsert-comment | 添加或更新评论 | 提供反馈、记录决策 |
| markdown-tool | 在 Markdown 和 HTML 之间进行转换 | 为 WYSIWYG 字段设置内容格式 |
| get-prompts | 列出可用的提示词 | 查找预配置的提示词模板 |
| get-prompt | 执行已存储的提示词 | 使用提示词模板,确保 AI 交互保持一致 |
系统提示词
MCP 服务附带一个系统提示词,用于引导正确使用工具,并为大模型提供指导。
您可以在环境配置中设置 MCP_SYSTEM_PROMPT 变量,以覆盖默认系统提示词。
您也可以根据需要完全禁用系统提示词。
只需将 MCP_SYSTEM_PROMPT_ENABLED 设置为 false
提示词配置
MCP 服务支持存储在 Directus 集合中的动态提示词。MCP 客户端对提示词的支持并不广泛,但 Claude Desktop 支持提示词。
你可以配置以下内容:
DIRECTUS_PROMPTS_COLLECTION_ENABLED:设为 "true" 以启用提示词功能DIRECTUS_PROMPTS_COLLECTION:包含提示词的集合名称DIRECTUS_PROMPTS_NAME_FIELD:提示词名称的字段名(默认值:"name")DIRECTUS_PROMPTS_DESCRIPTION_FIELD:提示词描述的字段名(默认值:"description")DIRECTUS_PROMPTS_SYSTEM_PROMPT_FIELD:系统提示词文本的字段名(默认值:"system_prompt")DIRECTUS_PROMPTS_MESSAGES_FIELD:消息数组的字段名(默认值:"messages")
Mustache 模板
系统提示词和消息内容都支持使用 {{ variable_name }} 语法进行 Mustache 模板化:
- 使用双大括号在提示词中定义变量:
Hello, {{ name }}! - 调用提示词时,在
arguments参数中为变量提供值 - MCP 服务会自动将所有变量替换为你提供的值
本地/开发环境安装
- 克隆仓库
- 运行
pnpm install && pnpm build以构建服务 - 按照上述说明配置 Claude Desktop 或 Cursor,但将其指向
dist文件: - 使用
pnpm dev监听更改并重新构建服务
{
"mcpServers": {
"directus": {
"command": "node",
"args": ["/path/to/directus-mcp-server/dist/index.js"]
}
}
}
用于本地开发并包含完整设置的 Claude Desktop 配置示例
{
"mcpServers": {
"directus": {
"command": "node",
"args": [
"/path/to/directus-mcp-server/dist/index.js"
],
"env": {
"DIRECTUS_URL": "DIRECTUS_URL",
"DIRECTUS_TOKEN": "DIRECTUS_TOKEN",
"MCP_SYSTEM_PROMPT_ENABLED": "true",
"MCP_SYSTEM_PROMPT": "You're a content editor working at Directus.\nYou're a master at copywriting and creating messaging that resonates with technical audiences.\nYou'll be given details about a Directus instance and the schema within it. You'll be asked to update content and other helpful tasks. **Rules** \n - If you're updating HTML / WYSWIG fields inside the CMS - DO NOT ADD extra styling, classes, or markup outside the standard HTML elements. If you're not 95% sure what values should go into a certain field, stop and ask the user. Before deleting anything, confirm with the user and prompt them for an explicit DELETE confirmation via text.",
"DIRECTUS_PROMPTS_COLLECTION_ENABLED": "true",
"DIRECTUS_PROMPTS_COLLECTION": "ai_prompts"
}
}
}
}
配置示例
使用令牌的基本配置
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your_directus_token"
}
}
}
}
使用电子邮件/密码身份验证的配置
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_USER_EMAIL": "[email protected]",
"DIRECTUS_USER_PASSWORD": "your_password"
}
}
}
}
使用自定义系统提示词和工具限制的高级配置
{
"mcpServers": {
"directus": {
"command": "npx",
"args": ["@directus/content-mcp@latest"],
"env": {
"DIRECTUS_URL": "https://your-directus-instance.com",
"DIRECTUS_TOKEN": "your_directus_token",
"DISABLE_TOOLS": ["delete-item", "update-field"],
"MCP_SYSTEM_PROMPT_ENABLED": "true",
"MCP_SYSTEM_PROMPT": "You are an assistant specialized in managing content for our marketing website.",
"DIRECTUS_PROMPTS_COLLECTION_ENABLED": "true",
"DIRECTUS_PROMPTS_COLLECTION": "ai_prompts",
"DIRECTUS_PROMPTS_NAME_FIELD": "name",
"DIRECTUS_PROMPTS_DESCRIPTION_FIELD": "description",
"DIRECTUS_PROMPTS_SYSTEM_PROMPT_FIELD": "system_prompt",
"DIRECTUS_PROMPTS_MESSAGES_FIELD": "messages"
}
}
}
}
❤️ 参与贡献
我们很乐意看到社区贡献,但请先创建一个 issue,讨论拟议的更改,然后再提交任何 PR。
🙏 致谢
这最初是由这位老哥、传奇人物 @rijkvanzanten 发起的一项实验 🙌
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。