一个用于Strapi CMS的MCP服务器,通过模型上下文协议提供对内容类型和条目的访问。
此MCP服务器与任何Strapi CMS实例集成,以提供以下功能:
建议在项目根目录中使用.env文件来存储您的凭据。
STRAPI_URL: 您的Strapi实例的URL(默认:http://localhost:1337)STRAPI_ADMIN_EMAIL: Strapi管理员用户的电子邮件地址(推荐用于完整功能,特别是模式访问)STRAPI_ADMIN_PASSWORD: Strapi管理员用户的密码(推荐)STRAPI_API_TOKEN: (可选备用)API令牌。如果未提供管理员凭据,可以使用,但可能权限有限。STRAPI_DEV_MODE: 设置为"true"以启用开发模式功能(默认为false)示例.env文件:
STRAPI_URL=http://localhost:1337
STRAPI_ADMIN_EMAIL=your_admin_email@example.com
STRAPI_ADMIN_PASSWORD=your_admin_password
# STRAPI_API_TOKEN=your_api_token_here # 可选
重要事项:
.env添加到.gitignore文件中,以避免提交凭据"strapi_token"这样的占位符值——服务器会验证并拒绝常见的占位符npm install strapi-mcp
为了获取最新的开发功能:
git clone https://github.com/l33tdawg/strapi-mcp.git
cd strapi-mcp
npm install
npm run build
推荐方法(使用Cursor MCP配置):
对于Cursor用户,在您的~/.cursor/mcp.json文件中配置strapi-mcp服务器:
"strapi-mcp": {
"command": "npx",
"args": ["strapi-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
如果您是从源代码安装的,请使用直接路径:
"strapi-mcp": {
"command": "node",
"args": ["/path/to/strapi-mcp/build/index.js"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
当使用strapi-mcp工具时,Cursor将自动管理服务器生命周期。
替代方法(使用.env文件):
确保已构建项目(npm run build)。然后使用Node.js v20.6.0+和--env-file标志运行服务器:
node --env-file=.env build/index.js
替代方法(直接使用环境变量):
export STRAPI_URL=http://localhost:1337
export STRAPI_ADMIN_EMAIL=your_admin_email@example.com
export STRAPI_ADMIN_PASSWORD=your_admin_password
# export STRAPI_API_TOKEN=your-api-token # 可选备用
export STRAPI_DEV_MODE=true # 可选
# 运行全局安装的包(如果通过npm install -g安装)
strapi-mcp
# 或直接运行本地构建
node build/index.js
connect_relation 和 disconnect_relation 现在正确处理验证错误而不是超时connect_relation 和 disconnect_relation 的错误处理,带有详细的验证和故障排除信息upload_media_from_path - 从本地文件路径上传文件(最大10MB),以避免base64上下文问题publish_entry和unpublish_entry工具: 完整的内容生命周期管理list_components,get_component_schema,create_component,update_componentdelete_content_type工具: 通过内容类型生成器API删除现有内容类型create_content_type工具: 允许通过内容类型生成器API创建新的内容类型(需要管理员凭据)。ResourceNotFound和AccessDenied错误代码MIT
一个用于您Strapi CMS的MCP服务器
这是一个基于TypeScript的MCP服务器,与Strapi CMS集成。它通过MCP协议提供对Strapi内容类型和条目的访问,允许您:
strapi://content-type/URI列表和访问内容类型list_content_types - 列出Strapi中所有可用的内容类型get_entries - 获取特定内容类型的内容条目,可选过滤、分页、排序和关联关系填充get_entry - 根据ID获取特定条目create_entry - 为内容类型创建新条目update_entry - 更新现有条目delete_entry - 删除条目upload_media - 将媒体文件上传到Strapi(最大约750KB文件,由于base64上下文限制)upload_media_from_path - 从本地文件路径上传媒体文件(最大10MB,避免上下文溢出)get_content_type_schema - 获取特定内容类型的模式(字段、类型、关系)connect_relation - 将相关条目连接到条目的关系字段disconnect_relation - 断开条目的关系字段的相关条目create_content_type - 使用内容类型生成器API创建新的内容类型(需要管理员权限)publish_entry - 发布特定条目unpublish_entry - 取消发布特定条目list_components - 列出Strapi中所有可用的组件get_component_schema - 获取特定组件的模式create_component - 创建新的组件update_component - 更新现有的组件get_entries工具支持高级查询选项:
{
"contentType": "api::article.article",
"filters": {
"title": {
"$contains": "hello"
}
},
"pagination": {
"page": 1,
"pageSize": 10
},
"sort": ["title:asc", "createdAt:desc"],
"populate": ["author", "categories"]
}
可以通过各种URI格式访问资源:
strapi://content-type/api::article.article - 获取所有文章strapi://content-type/api::article.article/1 - 获取ID为1的文章strapi://content-type/api::article.article?filters={"title":{"$contains":"hello"}} - 获取过滤后的文章publish_entry和unpublish_entry工具提供了对内容生命周期的控制:
{
"contentType": "api::article.article",
"id": "1"
}
这些工具利用管理员API路径进行发布/取消发布操作,如果没有管理员权限,则会回退到直接更新publishedAt字段。
可以使用以下工具管理Strapi组件:
list_components:获取所有可用的组件get_component_schema:查看特定组件的结构create_component:使用指定字段创建新的组件update_component:修改现有的组件创建组件的示例:
{
"componentData": {
"displayName": "安全设置",
"category": "security",
"icon": "shield",
"attributes": {
"enableTwoFactor": {
"type": "boolean",
"default": false
},
"passwordExpiration": {
"type": "integer",
"min":
}
}
}
}
安装依赖项:
npm install
构建服务器:
npm run build
开发时自动重建:
npm run watch
要详细了解如何部署和测试此MCP服务器的详细步骤,请参阅DEPLOYMENT.md文件。
快速设置:
npm run build在MacOS上:~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"strapi-mcp": {
"command": "npx",
"args": ["strapi-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
}
}
如果您是从源代码安装的,请使用直接路径:
{
"mcpServers": {
"strapi-mcp": {
"command": "/path/to/strapi-mcp/build/index.js",
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
}
}
STRAPI_URL(可选):您的Strapi实例的URL(默认为http://localhost:1337)STRAPI_ADMIN_EMAIL & STRAPI_ADMIN_PASSWORD(推荐):Strapi管理员用户的凭据。完整功能(如获取内容类型模式)所需。STRAPI_API_TOKEN(可选备用):您的Strapi API令牌。如果未提供管理员凭据,可以使用,但功能可能受限于令牌权限。STRAPI_DEV_MODE(可选):设置为"true"以启用开发模式功能(默认为false)服务器按以下顺序优先认证方法:
STRAPI_ADMIN_EMAIL,STRAPI_ADMIN_PASSWORD)STRAPI_API_TOKEN)强烈建议使用管理员凭据以获得最佳效果。
常见问题及解决方案:
[Error] STRAPI_API_TOKEN似乎是一个占位符值...
解决方案: 将"strapi_token"或"your-api-token-here"替换为您从Strapi管理面板获取的真实API令牌。
无法连接到Strapi实例:连接被拒绝。Strapi是否正在http://localhost:1337运行?
解决方案:
npm run develop或yarn developSTRAPI_URL中的URL是否正确无法连接到Strapi实例:身份验证失败。检查您的API令牌或管理员凭据。
解决方案:
错误:由于大型base64字符串导致上下文窗口溢出
问题: base64编码的文件可能非常大(即使是小图片也可能达到50-100KB文本),导致上下文窗口溢出。
解决方案:
upload_media_from_path代替upload_media 用于大于约500KB的文件upload_media工具具有1MB base64限制(约750KB文件)api::data.data,api::error.error)此问题已在v0.1.8中修复。如果您仍然看到这些,您可能正在使用旧版本。
自v0.1.8起,服务器现在清楚地区分:
{"data": [], "meta": {...}}访问被禁止。您的API令牌可能缺乏必要的权限。
解决方案:
由于MCP服务器通过stdio通信,调试可能会很困难。我们建议使用[MCP Inspector](https://github