使用说明
@duglelabs/strapi mcp服务器
Strapi v4的通用开源MCP服务器。将Strapi CRUD和模式自检作为MCP工具公开,并通过Vercel AI SDK和可配置的网络搜索提供商提供可选的AI内容生成(研究+草稿)。将其与Claude Desktop、Cursor或任何兼容MCP的代理一起使用,通过自然语言管理内容,或完全自动化内容创建管道。
先决条件
- Node.js 20+
- pnpm(或npm/npx)
- 带有API令牌的正在运行的Strapi v4实例
快速开始
复制env变量并运行 pnpm dlx:
STRAPI_URL=http://localhost:1337 \
STRAPI_API_TOKEN=your-token-here \
pnpm dlx @dugleelabs/strapi-mcp-server
服务器通过stdio启动,可以立即使用。所有配置都是通过环境变量进行的,不需要安装步骤。
Claude桌面配置
将此添加到您的 claude_desktop_config.json (通常在 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"strapi": {
"command": "pnpm",
"args": ["dlx", "@dugleelabs/strapi-mcp-server"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "your-token-here",
"AI_PROVIDER": "anthropic",
"AI_MODEL": "claude-sonnet-4-6",
"ANTHROPIC_API_KEY": "sk-ant-...",
"SEARCH_PROVIDER": "tavily",
"TAVILY_API_KEY": "tvly-..."
}
}
}
}
环境变量
| 变量 | 必填 | 描述 | 示例 |
|---|---|---|---|
STRAPI_URL |
是 | Strapi实例的基本URL | http://localhost:1337 |
STRAPI_API_TOKEN |
是 | Strapi API令牌(完全访问或作用域) | abc123... |
SEARCH_PROVIDER |
否 | 启用 research_topic: tavily, brave,或 exa |
tavily |
TAVILY_API_KEY |
如果 SEARCH_PROVIDER=tavily |
Tavilly API密钥 | tvly-... |
BRAVE_API_KEY |
如果 SEARCH_PROVIDER=brave |
勇敢搜索API密钥 | BSA... |
EXA_API_KEY |
如果 SEARCH_PROVIDER=exa |
Exa API密钥 | exa-... |
AI_PROVIDER |
否 | 启用AI工具: openai, anthropic, google, mistral, ollama |
anthropic |
AI_MODEL |
如果 AI_PROVIDER set |
所选提供程序的型号名称 | claude-sonnet-4-6 |
ANTHROPIC_API_KEY |
如果 AI_PROVIDER=anthropic |
无烟煤API键 | sk-ant-... |
OPENAI_API_KEY |
如果 AI_PROVIDER=openai |
OpenAI API密钥 | sk-... |
GOOGLE_GENERATIVE_AI_API_KEY |
如果 AI_PROVIDER=google |
谷歌人工智能API密钥 | AIza... |
MISTRAL_API_KEY |
如果 AI_PROVIDER=mistral |
Mistral API密钥 | ... |
OLLAMA_BASE_URL |
如果 AI_PROVIDER=ollama 基础 URL |
http://localhost:11434 |
工具
第1层——CRUD(始终启用)
list_entries
列出Strapi内容类型中的条目。
{
"contentType": "articles",
"page": 1,
"pageSize": 25,
"status": "draft",
"filters": { "title": { "$contains": "AI" } }
}
退货: { entries, total, page, pageCount }
get_entry
按ID获取单个条目。
{ "contentType": "articles", "id": 42 }
退货: { entry }
create_entry
创建新条目。使用 get_content_type_schema 首先查看可用字段。
{
"contentType": "articles",
"data": { "title": "My Post", "content": "..." },
"publish": false
}
退货: { id, adminUrl, entry }
update_entry
部分更新现有条目。
{
"contentType": "articles",
"id": 42,
"data": { "title": "Updated Title" }
}
退货: { id, entry }
delete_entry
永久删除条目。
{ "contentType": "articles", "id": 42 }
退货: { success: true, message: "Entry 42 deleted from articles" }
list_content_types
列出Strapi实例中的所有内容类型。使用此功能在CRUD操作之前发现可用类型。
无需输入。
退货: { contentTypes: [{ uid, displayName, pluralName, kind }] }
get_content_type_schema
获取内容类型的字段架构——字段名称、类型和所需状态。
{ "uid": "api::article.article" }
退货: { uid, displayName, attributes: { [field]: { type, required, default } } }
第2层——搜索(需要 SEARCH_PROVIDER)
research_topic
在网上搜索某个主题的最新信息。
{
"topic": "TypeScript 2026 trends",
"context": "developer tooling",
"maxResults": 10
}
退货: { query, results: [{ title, url, content, score }], provider }
第3层——人工智能内容(要求 AI_PROVIDER)
generate_draft
使用配置的AI提供程序生成结构化的博客文章草稿。
{
"topic": "TypeScript 2026 trends",
"researchResults": [...],
"styleGuide": "Write tersely for senior engineers.",
"targetWordCount": 800
}
退货: { title, body, metaDescription, tags, wordCount }
create_content_from_research
端到端:研究一个主题→ 生成草稿→ 拯救斯特拉皮。需要同时配置搜索和AI。
{
"topic": "TypeScript 2026 trends",
"contentType": "articles",
"context": "focus on tooling and DX",
"styleGuide": "Terse, developer-focused.",
"fieldMapping": {
"title": "title",
"body": "content",
"metaDescription": "seo_description",
"tags": "tags"
}
}
注意事项
fieldMapping: 每个Strapi实例都有不同的字段名。提供fieldMapping以匹配您的内容类型的实际字段。如果省略,则按原样使用草稿密钥(title,body,metaDescription,tags).
退货: { strapiId, adminUrl, title, wordCount, step }
MCP提示
三个提示在MCP客户端中注册为斜线命令:
| 提示 | 参数 | 描述 |
|---|---|---|
dugleelabs/create-blog-from-topic |
topic (必填), contentType (可选) |
在Strapi中研究一个主题并创建一篇博客草稿 |
dugleelabs/list-drafts |
contentType (必填) |
显示某一内容类型的所有未发布草稿 |
dugleelabs/review-entry |
contentType, id (均为必填项) |
发布前获取条目并提出改进建议 |
搜索提供程序
塔维利
SEARCH_PROVIDER=tavily TAVILY_API_KEY=tvly-...
在获取API密钥 tavily.com.
勇敢的搜索
SEARCH_PROVIDER=brave BRAVE_API_KEY=BSA...
在获取API密钥 brave.com/search/api.
Exa
SEARCH_PROVIDER=exa EXA_API_KEY=exa-...
在获取API密钥 例如ai.
AI 提供商
仅安装所需的提供程序包:
人类学(克劳德)
pnpm add @ai-sdk/anthropic
AI_PROVIDER=anthropic AI_MODEL=claude-sonnet-4-6 ANTHROPIC_API_KEY=sk-ant-...
开放人工智能
pnpm add @ai-sdk/openai
AI_PROVIDER=openai AI_MODEL=gpt-4o OPENAI_API_KEY=sk-...
谷歌
pnpm add @ai-sdk/google
AI_PROVIDER=google AI_MODEL=gemini-1.5-pro GOOGLE_GENERATIVE_AI_API_KEY=AIza...
米斯特拉尔
pnpm add @ai-sdk/mistral
AI_PROVIDER=mistral AI_MODEL=mistral-large-latest MISTRAL_API_KEY=...
Ollama(当地)
pnpm add @ai-sdk/openai
AI_PROVIDER=ollama AI_MODEL=llama3 OLLAMA_BASE_URL=http://localhost:11434
已知限制
-
架构自检需要完全访问令牌: 这
list_content_types和get_content_type_schema工具使用Strapi的内容类型生成器API,该API可以返回403受限令牌。CRUD工具可以使用具有适当权限的任何作用域令牌。 -
pnpm dlx延迟: 跑步通过pnpm dlx每次调用时都会下载该包,这会在Claude Desktop中增加约2-5秒的启动延迟。为了避免这种情况,请全局安装:pnpm add -g @dugleelabs/strapi-mcp-server. -
仅限Strapi v4: 以Strapi v4 REST API为目标。计划支持Strapi v5。
-
无内容类型假设: 服务器不采用任何特定的字段名称。始终使用
get_content_type_schema或提供fieldMapping以匹配您的Strapi模式。
贡献
欢迎在 github/dugleelabs/strapi-mcp-server.
git clone git@github.com:dugleelabs/strapi-mcp-server.git
cd strapi-mcp-server
pnpm install
cp .env.example .env # fill in STRAPI_URL and STRAPI_API_TOKEN
pnpm test
pnpm build
使用 MCP检查员 对于交互式本地测试:
pnpm dlx @modelcontextprotocol/inspector pnpm start
许可证
麻省理工学院——见 许可证.
