Strapi MCP(模型上下文协议)工具🚀
📖 项目概述
此工具提供了一个命令行界面(CLI),用于与您的Strapi内容管理系统(CMS)实例进行交互。它允许您自动化各种功能,例如列出内容类型、管理条目和上传媒体。
⚠️ 重要免责声明:该软件是在人工智能技术的帮助下开发的。它按原样提供,未经彻底测试和验证,不得在生产环境中使用。代码可能包含错误、安全漏洞或意外行为。仅用于研究、学习或开发目的,风险自负。
🛠️ 先决条件
- (v14或更高版本)
- 正在运行的Strapi实例
📦 安装
安装和使用此工具有两种方法:
方法1:全局安装(推荐)
此方法在您的系统上全局安装该工具,允许您运行 strapi-cms-mcp 命令从任何目录。
- 从npm安装:
npm install -g strapi-cms-mcp- 配置:
安装后,您仍然需要创建 .env 文件来存储您的Strapi URL和API令牌。该工具将在您运行 strapi-cms-mcp 命令。
方法2:本地安装(用于开发)
如果你想为工具的开发做出贡献,建议使用这种方法。
- 克隆此存储库:
git clone https://github.com/Viz38/Strapi-CMS-MCP.git- 导航到项目目录:
cd Strapi-CMS-MCP- 安装依赖项:
npm install- 在本地运行:
您可以使用 npm run strapi-cms-mcp -- 从项目目录中执行命令。例如:
npm run strapi-cms-mcp -- list-content-types- 从本地源全局安装(可选):
如果你想运行 strapi-cms-mcp 在使用该工具的本地版本时,您可以从任何目录中的命令,从本地源代码全局安装它:
npm install -g .⚙️ 配置
要运行此工具,您需要配置Strapi实例详细信息和API令牌。
1.创建一个 .env 文件
创建一个名为的文件 .env 在这个项目的根源(D:\Github\Strapi-mcp\)内容如下:
STRAPI_URL=http://localhost:1337
STRAPI_API_TOKEN=YOUR_STRAPI_API_TOKENSTRAPI_URL:替换http://localhost:1337使用Strapi实例的实际URL。STRAPI_API_TOKEN:替换YOUR_STRAPI_API_TOKEN使用有效的Strapi API令牌。
地方发展快速设置
要快速创建 .env 用于本地测试的带有虚拟凭据的文件:
对于Windows(命令提示符/PowerShell):
echo STRAPI_URL=http://localhost:1337 > .env
echo STRAPI_API_TOKEN=dummy_token_for_local_dev >> .env对于macOS/Linux(Bash/Zsh):
echo "STRAPI_URL=http://localhost:1337" > .env
echo "STRAPI_API_TOKEN=dummy_token_for_local_dev" >> .env记得更换 dummy_token_for_local_dev 具有正确权限的实际Strapi API令牌,如下一节所述。
2.创建Strapi API代币
至关重要的是,您的Strapi API令牌具有访问必要API的正确权限。
- 登录您的Strapi管理面板。
- 引导到 设置 -> API令牌.
- 点击 创建新的API令牌 按钮。
- 在出现的形式中:
- 姓名: 给它一个描述性的名称(例如“MCP工具访问”)。 - 说明: (可选)“Strapi MCP工具的API令牌”。 - 令牌持续时间: 选择 无限. - 令牌类型: 选择 自定义.
- 在 权限 出现的部分:
- 找到 “内容类型生成器” 并确保 所有权限(查找、findOne、创建、更新、删除) 检查。 - 找到 “内容管理员” 并确保 所有权限(查找、findOne、创建、更新、删除) 检查您的所有内容类型。 - 找到 “上传” 并确保 所有权限(上传) 检查。
- 点击 保存.
- 立即复制新生成的令牌。 它将不再显示。
- 将此令牌粘贴到您的
.env文件作为的值STRAPI_API_TOKEN.
🚀 用法
您可以使用以下命令运行命令 strapi-cms-mcp 如果您是全局安装的,或者 npm run strapi-cms-mcp -- 如果从项目目录运行它。
list-content-types
列出Strapi实例中的所有可用内容类型。
用途:
strapi-cms-mcp list-content-typesget-entry [id]
从给定的内容类型中检索一个或多个条目。如果不 id 如果提供,它将列出内容类型的所有条目,并支持过滤、排序和分页。
论据:
- `
:内容类型的API ID(例如。,api::blog-post.blog-post`). [id]:(可选)要检索的条目的ID。
选项:
--filters:过滤结果(例如。,'{"title":{"$contains":"search"}}').--sort:对结果进行排序(例如。,'createdAt:desc').- `--populate
:填充关系(例如。, 'category'`).
- `--page
`:分页页码。
- `--pageSize
`:每页的项目数。
使用示例:
- 获取单个条目:
strapi-cms-mcp get-entry api::blog-post.blog-post 1- 列出某一内容类型的所有条目:
strapi-cms-mcp get-entry api::blog-post.blog-post- 筛选条目:
strapi-cms-mcp get-entry api::blog-post.blog-post --filters '{"title":{"$contains":"search"}}'- 对条目进行排序:
strapi-cms-mcp get-entry api::blog-post.blog-post --sort 'createdAt:desc'- 填充关系:
strapi-cms-mcp get-entry api::blog-post.blog-post --populate 'category'- 分页条目:
strapi-cms-mcp get-entry api::blog-post.blog-post --page 2 --pageSize 10create-entry ''
为给定的内容类型创建新条目。
论据:
- ``:内容类型的API ID。
- ``:包含新条目的数据的JSON字符串。
用途:
strapi-cms-mcp create-entry api::blog-post.blog-post '{"title": "My new blog post", "body": "This is the content of my new blog post."}'update-entry ''
更新给定内容类型的现有条目。
论据:
- ``:内容类型的API ID。
- ``:要更新的条目的ID。
- ``:包含要更新的数据的JSON字符串。
用途:
strapi-cms-mcp update-entry api::blog-post.blog-post 1 '{"title": "My updated blog post"}'delete-entry
从给定的内容类型中删除条目。
论据:
- ``:内容类型的API ID。
- ``:要删除的条目的ID。
用途:
strapi-cms-mcp delete-entry api::blog-post.blog-post 1upload-media
将媒体文件上传到Strapi。
论据:
- ``:要上传的文件的绝对或相对路径。
用途:
strapi-cms-mcp upload-media "C:\path\to\your\image.jpg"🔌 将MCP添加到Vibe编码工具
一旦你发布了你的 strapi-cms-mcp 工具到npm,您可以将其与其他流行的CLI工具和AI助手集成。
重要:在与这些工具集成时,您不能依赖 .env 文件。您必须配置环境变量(STRAPI_URL 和 STRAPI_API_TOKEN)直接在每个工具的JSON配置中,如下面的示例所示。
克劳德代码
要将您的工具添加到Claude Code,请创建一个 claude-tools.json 文件。使用 env object提供您的Strapi凭据。
{
"mcpServers": {
"strapi": {
"command": "npx",
"args": ["strapi-cms-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "YOUR_ACTUAL_STRAPI_TOKEN"
}
}
}
}Gemini CLI
对于Gemini CLI,创建 gemini-cli.json 文件并包括 env 对象。
{
"tools": {
"strapi": {
"command": "npx",
"args": ["strapi-cms-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "YOUR_ACTUAL_STRAPI_TOKEN"
}
}
}
}打开CLI
对于Open CLI,请在您的 open-cli.json 配置与 env 对象。
{
"tools": {
"strapi": {
"command": "npx",
"args": ["strapi-cms-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "YOUR_ACTUAL_STRAPI_TOKEN"
}
}
}
}光标
要与Cursor集成,请在设置中添加自定义命令。这 env 对象是您安全提供凭据的地方。
{
"cursor.customCommands": [
{
"name": "Strapi MCP",
"command": "npx strapi-cms-mcp {command}",
"prompt": "Enter a Strapi MCP command (e.g., 'list-content-types')",
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_API_TOKEN": "YOUR_ACTUAL_STRAPI_TOKEN"
}
}
]
}🤔 故障排除
401 Unauthorized错误: 这是最常见的错误,几乎总是由于您的STRAPI_API_TOKEN.
- 确保令牌正确且未过期。 - 验证令牌的关联角色是否具有您尝试执行的操作所需的权限(请参阅“创建Strapi API令牌”部分)。
404 Not Found错误:
- 检查一下 STRAPI_URL 在你的 .env 文件正确,您的Strapi服务器正在运行。 - 确认 contentType 和 id 您在命令中使用的是正确的。
ECONNREFUSED错误: 这意味着该工具无法连接到您的Strapi服务器。
- 确保您的Strapi服务器正在运行。 - 检查一下 STRAPI_URL 是正确的。 - 如果您在与Strapi服务器不同的环境中运行该工具,请确保可以从该工具的环境访问该服务器(例如防火墙规则、端口转发)。
🧩 扩展功能
您可以通过向中添加更多命令来扩展此工具 index.js 以及相应的方法 strapi-client.jsThe commander.js 库使添加新命令、选项和参数变得容易。
📄 许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
