Strapi MCP Server

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Enables interaction with a Strapi CMS instance through its REST API, supporting content types management, media uploads, schema introspection, and CRUD operations with version compatibility for both Strapi v4 and v5.

Strapi MCP 服务器

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

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

变更日志

版本 2.3.0 - 文档和配置增强

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

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

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

版本 2.1.0

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

特征

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

安装

您可以在 Claude Desktop 配置中直接将此服务器与 npx 一起使用:

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

配置

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

{ "myserver": { "api_url": "http://localhost:1337", "api_key": "your-jwt-token-from-strapi-admin", "version": "5.*" // Optional: Specify Strapi version (e.g., "5.*", "4.1.5", "v4") } }

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

版本配置

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

  • 通配符:“5. ”、“4.
  • 具体:“4.1.5”,“5.0.0”
  • 简单:“v4”,“v5”

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

获取 JWT 令牌

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

用法

列出可用服务器

strapi_list_servers(); // Now includes version information and differences between v4 and v5

内容类型

// Get all content types from a specific server strapi_get_content_types({ server: "myserver", }); // Get components with pagination strapi_get_components({ server: "myserver", page: 1, pageSize: 25, });

REST API

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

// Query content with filters strapi_rest({ server: "myserver", endpoint: "api/articles", method: "GET", params: { filters: { title: { $contains: "search term", }, }, }, }); // Create new content strapi_rest({ server: "myserver", endpoint: "api/articles", method: "POST", body: { data: { title: "New Article", content: "Article content", category: "news", }, }, }); // Update content strapi_rest({ server: "myserver", endpoint: "api/articles/123", method: "PUT", body: { data: { title: "Updated Title", content: "Updated content", }, }, }); // Delete content strapi_rest({ server: "myserver", endpoint: "api/articles/123", method: "DELETE", });

媒体上传

// Upload image with automatic optimization 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 与 v5)

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

v4

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

v5

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

安全功能

写保护策略

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

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

最佳实践

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

REST API 技巧

过滤

// Filter by field value params: { filters: { title: "Exact Match"; } } // Contains filter params: { filters: { title: { $contains: "partial"; } } } // Multiple conditions params: { filters: { $and: [{ category: "news" }, { published: true }]; } }

排序

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

分页

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

人口

// Basic request without population params: { } // Selective population when needed params: { populate: ["category"]; } // Detailed population with field selection params: { populate: { category: { fields: ["name", "slug"]; } } }

故障排除

常见问题及解决方案:

  1. 404 错误
    • 检查端点复数/单数形式
    • 验证内容类型是否存在
    • 确保 API URL 正确
    • 检查是否使用正确的 ID 格式(数字或基于文档)
  2. 身份验证问题
    • 验证 JWT 令牌是否有效
    • 检查令牌权限
    • 确保令牌未过期
  3. 版本相关问题
    • 验证配置中的版本规范
    • 检查数据结构是否匹配版本
    • 查看版本差异文档
  4. 写保护错误
    • 确保操作已获得授权
    • 检查操作是否受到保护
    • 验证请求是否符合安全策略

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

执照

麻省理工学院

Appeared in Searches

ID: qfdkybxvkp