使用说明
Strapi MCP(模型上下文协议)工具🚀
📖 项目概述
此工具提供了一个命令行界面(CLI),用于与您的Strapi内容管理系统(CMS)实例进行交互。它允许您自动化各种功能,例如列出内容类型、管理条目和上传媒体。
⚠️ 重要免责声明:该软件是在人工智能技术的帮助下开发的。它按原样提供,未经彻底测试和验证,不得在生产环境中使用。代码可能包含错误、安全漏洞或意外行为。仅用于研究、学习或开发目的,风险自负。
🛠️ 先决条件
📦 安装
安装和使用此工具有两种方法:
方法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_TOKEN
STRAPI_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 <command> 如果您是全局安装的,或者 npm run strapi-cms-mcp -- <command> 如果从项目目录运行它。
list-content-types
列出Strapi实例中的所有可用内容类型。
用途:
strapi-cms-mcp list-content-types
get-entry <contentType> [id]
从给定的内容类型中检索一个或多个条目。如果不 id 如果提供,它将列出内容类型的所有条目,并支持过滤、排序和分页。
论据:
<contentType>:内容类型的API ID(例如。,api::blog-post.blog-post).[id]:(可选)要检索的条目的ID。
选项:
--filters <filters>:过滤结果(例如。,'{"title":{"$contains":"search"}}').--sort <sort>:对结果进行排序(例如。,'createdAt:desc').--populate <populate>:填充关系(例如。,'category').--page <page>:分页页码。--pageSize <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 10
create-entry <contentType> '<data>'
为给定的内容类型创建新条目。
论据:
<contentType>:内容类型的API ID。<data>:包含新条目的数据的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 <contentType> <id> '<data>'
更新给定内容类型的现有条目。
论据:
<contentType>:内容类型的API ID。<id>:要更新的条目的ID。<data>:包含要更新的数据的JSON字符串。
用途:
strapi-cms-mcp update-entry api::blog-post.blog-post 1 '{"title": "My updated blog post"}'
delete-entry <contentType> <id>
从给定的内容类型中删除条目。
论据:
<contentType>:内容类型的API ID。<id>:要删除的条目的ID。
用途:
strapi-cms-mcp delete-entry api::blog-post.blog-post 1
upload-media <filePath>
将媒体文件上传到Strapi。
论据:
<filePath>:要上传的文件的绝对或相对路径。
用途:
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许可证获得许可。请参阅 许可证 文件以获取详细信息。
