Strapi MCP Server

Strapi MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它使 AI 助手能够通过标准化的接口与 Strapi CMS 实例进行交互,支持内容类型和 REST API 操作。

数据库
开发者工具
JavaScript
访问服务器

Tools

strapi_list_servers

List all available Strapi servers from the configuration.

strapi_get_content_types

Get all content types from Strapi. Returns the complete schema of all content types.

strapi_get_components

Get all components from Strapi with pagination support. Returns both component data and pagination metadata (page, pageSize, total, pageCount).

strapi_rest

Execute REST API requests against Strapi endpoints. IMPORTANT: All write operations (POST, PUT, DELETE) require explicit user authorization via the userAuthorized parameter. 1. Reading components: params: { populate: ['SEO'] } // Populate a component params: { populate: { SEO: { fields: ['Title', 'seoDescription'] } } } // With field selection 2. Updating components (REQUIRES USER AUTHORIZATION): body: { data: { // For single components: componentName: { Title: 'value', seoDescription: 'value' }, // For repeatable components: componentName: [ { field: 'value' } ] } } userAuthorized: true // Must set this to true for POST/PUT/DELETE after getting user permission 3. Other parameters: - fields: Select specific fields - filters: Filter results - sort: Sort results - pagination: Page through results

strapi_upload_media

Upload media to Strapi's media library from a URL with format conversion, quality control, and metadata options. IMPORTANT: This is a write operation that REQUIRES explicit user authorization via the userAuthorized parameter.

README

Strapi MCP 服务器

一个用于与 Strapi CMS 交互的模型上下文协议服务器。该服务器使 AI 助手能够通过标准化的接口与您的 Strapi 实例进行交互,支持内容类型和 REST API 操作。

<a href="https://glama.ai/mcp/servers/qfdkybxvkp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/qfdkybxvkp/badge" alt="Strapi Server MCP server" /> </a>

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

更新日志

2.3.0 版本 - 文档和配置增强

  • 📚 在 CLAUDE.md 中添加了全面的项目文档
  • ⚙️ 扩展了配置选项,具有更好的版本检测
  • 🛠️ 增强了常见问题的故障排除指南
  • 🔄 详细的 REST API 文档,包含实际示例
  • 📝 内容管理的最佳实践指南
  • 🐛 修复了从不同格式模式解析版本的问题
  • 🔍 改进了错误消息,提供了版本特定的指导

2.2.0 版本 - 安全性和版本处理更新

  • 🔒 添加了严格的写入保护策略
  • 🔄 增强了版本格式支持(5.* , 4.1.5, v4 等)
  • 📚 将文档集成到服务器功能中
  • 🚫 删除了连接提示(现在在功能中)
  • ⚡ 改进了错误处理和验证
  • 🔍 添加了版本特定差异指南
  • 📋 增强了服务器功能文档

2.1.0 版本

  • 改进了与 Strapi v4 和 v5 的兼容性
  • 删除了自动验证,以支持不同版本之间的数据结构差异
  • 增强了错误消息,提供了版本特定的提示
  • 简化了请求处理,以便客户端拥有更多控制权
  • 更新了文档,提供了适用于两个版本的清晰示例

功能特性

  • 🔍 模式内省
  • 🔄 支持 REST API,并进行验证
  • 📸 媒体上传处理
  • 🔐 JWT 身份验证
  • 📝 内容类型管理
  • 🖼️ 图像处理,支持格式转换
  • 🌐 支持多个服务器
  • ✅ 自动模式验证
  • 🔒 写入保护策略
  • 📚 集成文档
  • 🔄 版本兼容性管理

安装

您可以直接在 Claude Desktop 配置中使用 npx 来运行此服务器:

{
  "mcpServers": {
    "strapi": {
      "command": "npx",
      "args": ["-y", "@bschauer/strapi-mcp-server@2.4.0"]
    }
  }
}

配置

~/.mcp/strapi-mcp-server.config.json 创建一个配置文件:

{
  "myserver": {
    "api_url": "http://localhost:1337",
    "api_key": "your-jwt-token-from-strapi-admin",
    "version": "5.*" // 可选:指定 Strapi 版本(例如,“5.*”,“4.1.5”,“v4”)
  }
}

您可以通过将多个 Strapi 实例添加到此文件来配置它们。

版本配置

服务器现在支持各种版本格式:

  • 通配符: "5.", "4."
  • 特定版本: "4.1.5", "5.0.0"
  • 简写版本: "v4", "v5"

这有助于服务器提供版本特定的指导,并适当地处理 API 差异。

获取 JWT Token

  1. 登录到您的 Strapi 管理面板
  2. 创建一个具有适当权限的 API 令牌
  3. 将令牌添加到您的配置文件中,放在相应的服务器名称下

用法

列出可用服务器

strapi_list_servers();
// 现在包括版本信息以及 v4 和 v5 之间的差异

内容类型

// 从特定服务器获取所有内容类型
strapi_get_content_types({
  server: "myserver",
});

// 获取带有分页的组件
strapi_get_components({
  server: "myserver",
  page: 1,
  pageSize: 25,
});

REST API

REST API 提供全面的 CRUD 操作,具有内置的验证和版本特定的处理:

// 使用过滤器查询内容
strapi_rest({
  server: "myserver",
  endpoint: "api/articles",
  method: "GET",
  params: {
    filters: {
      title: {
        $contains: "search term",
      },
    },
  },
});

// 创建新内容
strapi_rest({
  server: "myserver",
  endpoint: "api/articles",
  method: "POST",
  body: {
    data: {
      title: "New Article",
      content: "Article content",
      category: "news",
    },
  },
});

// 更新内容
strapi_rest({
  server: "myserver",
  endpoint: "api/articles/123",
  method: "PUT",
  body: {
    data: {
      title: "Updated Title",
      content: "Updated content",
    },
  },
});

// 删除内容
strapi_rest({
  server: "myserver",
  endpoint: "api/articles/123",
  method: "DELETE",
});

媒体上传

// 上传图像,自动优化
strapi_upload_media({
  server: "myserver",
  url: "https://example.com/image.jpg",
  format: "webp",
  quality: 80,
  metadata: {
    name: "My Image",
    caption: "Image Caption",
    alternativeText: "Alt Text",
  },
});

版本差异 (v4 vs v5)

服务器自动处理的 Strapi 版本之间的主要差异:

v4

  • 使用数字 ID
  • 嵌套属性结构
  • 响应中的数据包装器
  • 传统的 REST 模式
  • 外部 i18n 插件

v5

  • 基于文档的 ID
  • 平面数据结构
  • 直接属性访问
  • 增强的 JWT 安全性
  • 集成的 i18n 支持
  • 新的文档服务 API

安全特性

写入保护策略

服务器实施严格的写入保护策略:

  • 所有写入操作都需要显式授权
  • 受保护的操作包括:
    • POST (创建)
    • PUT (更新)
    • DELETE (删除)
    • 媒体上传
  • 每个操作都会被记录和验证

最佳实践

  1. 始终首先使用 strapi_get_content_types 检查模式
  2. 对端点使用正确的复数/单数形式
  3. 在您的查询中包含错误处理
  4. 上传前验证 URL
  5. 从最小的查询开始,仅在需要时添加 population
  6. 更新时始终包含完整的数据对象
  7. 使用过滤器来优化查询性能
  8. 利用内置的模式验证
  9. 检查您的操作的版本兼容性
  10. 遵循写入保护策略指南

REST API 提示

过滤

// 按字段值过滤
params: {
  filters: {
    title: "Exact Match";
  }
}

// 包含过滤器
params: {
  filters: {
    title: {
      $contains: "partial";
    }
  }
}

// 多个条件
params: {
  filters: {
    $and: [{ category: "news" }, { published: true }];
  }
}

排序

params: {
  sort: ["createdAt:desc"];
}

分页

params: {
  pagination: {
    page: 1,
    pageSize: 25
  }
}

Population

// 没有 population 的基本请求
params: {
}

// 在需要时进行选择性 population
params: {
  populate: ["category"];
}

// 带有字段选择的详细 population
params: {
  populate: {
    category: {
      fields: ["name", "slug"];
    }
  }
}

故障排除

常见问题和解决方案:

  1. 404 错误

    • 检查端点的复数/单数形式
    • 验证内容类型是否存在
    • 确保正确的 API URL
    • 检查是否使用正确的 ID 格式(数字 vs 基于文档)
  2. 身份验证问题

    • 验证 JWT 令牌是否有效
    • 检查令牌权限
    • 确保令牌未过期
  3. 版本相关问题

    • 验证配置中的版本规范
    • 检查数据结构是否与版本匹配
    • 查看版本差异文档
  4. 写入保护错误

    • 确保操作已授权
    • 检查操作是否受保护
    • 验证请求是否符合安全策略

贡献

欢迎贡献!请随时提交 Pull Request。

许可证

MIT

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Supabase MCP Server

Supabase MCP Server

一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。

精选
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
@kazuph/mcp-gmail-gas

@kazuph/mcp-gmail-gas

用于 Gmail 集成的模型上下文协议 (Model Context Protocol, MCP) 服务器。它允许 Claude Desktop(或任何 MCP 客户端)通过 Google Apps Script 与您的 Gmail 帐户进行交互。

精选
JavaScript
MCP DuckDB Knowledge Graph Memory Server

MCP DuckDB Knowledge Graph Memory Server

一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。

精选
TypeScript