Strapi CMS CLI工具

一个用于自动化管理Strapi CMS内容的命令行工具,支持内容类型管理、条目操作和媒体上传等功能。

  • by Viz38
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Viz38/Strapi-CMS-MCP

使用说明

Strapi MCP(模型上下文协议)工具🚀

📖 项目概述

此工具提供了一个命令行界面(CLI),用于与您的Strapi内容管理系统(CMS)实例进行交互。它允许您自动化各种功能,例如列出内容类型、管理条目和上传媒体。

⚠️ 重要免责声明:该软件是在人工智能技术的帮助下开发的。它按原样提供,未经彻底测试和验证,不得在生产环境中使用。代码可能包含错误、安全漏洞或意外行为。仅用于研究、学习或开发目的,风险自负。

🛠️ 先决条件

  • Node.js (v14或更高版本)
  • npm
  • 正在运行的Strapi实例

📦 安装

安装和使用此工具有两种方法:

方法1:全局安装(推荐)

此方法在您的系统上全局安装该工具,允许您运行 strapi-cms-mcp 命令从任何目录。

  1. 从npm安装:

    npm install -g strapi-cms-mcp
    
  2. 配置: 安装后,您仍然需要创建 .env 文件来存储您的Strapi URL和API令牌。该工具将在您运行 strapi-cms-mcp 命令。

方法2:本地安装(用于开发)

如果你想为工具的开发做出贡献,建议使用这种方法。

  1. 克隆此存储库:

    git clone https://github.com/Viz38/Strapi-CMS-MCP.git
    
  2. 导航到项目目录:

    cd Strapi-CMS-MCP
    
  3. 安装依赖项:

    npm install
    
  4. 在本地运行: 您可以使用 npm run strapi-cms-mcp -- 从项目目录中执行命令。例如:

    npm run strapi-cms-mcp -- list-content-types
    
  5. 从本地源全局安装(可选): 如果你想运行 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的正确权限。

  1. 登录您的Strapi管理面板。
  2. 引导到 设置 -> API令牌.
  3. 点击 创建新的API令牌 按钮。
  4. 在出现的形式中:
    • 姓名: 给它一个描述性的名称(例如“MCP工具访问”)。
    • 说明: (可选)“Strapi MCP工具的API令牌”。
    • 令牌持续时间: 选择 无限.
    • 令牌类型: 选择 自定义.
  5. 在 权限 出现的部分:
    • 找到 “内容类型生成器” 并确保 所有权限(查找、findOne、创建、更新、删除) 检查。
    • 找到 “内容管理员” 并确保 所有权限(查找、findOne、创建、更新、删除) 检查您的所有内容类型。
    • 找到 “上传” 并确保 所有权限(上传) 检查。
  6. 点击 保存.
  7. 立即复制新生成的令牌。 它将不再显示。
  8. 将此令牌粘贴到您的 .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许可证获得许可。请参阅 许可证 文件以获取详细信息。