README
🚀 Storyblok MCP 服务器
将 AI 工具与 Storyblok 即时连接,使用自然语言如魔法般管理你的内容管理系统(CMS)。
🚀 快速开始
本项目旨在将 AI 与 Storyblok 的强大功能相结合,实现通过自然语言与 Storyblok 进行交互,以管理内容。下面为你介绍使用和贡献此项目的相关内容。
✨ 主要特性
- 即时连接:可快速将 AI 工具与 Storyblok 连接起来。
- 自然语言交互:允许通过自然语言管理 Storyblok 的内容,操作更加便捷。
- 多功能支持:提供故事管理、标签管理、发布管理等多种功能。
📦 安装指南
贡献者安装步骤
- 克隆仓库
git clone https://github.com/ArjunCodess/storyblok-mcp.git
cd storyblok-mcp
- 安装依赖
pnpm install
- 启动服务器
pnpm start
💻 使用示例
普通用户使用步骤
克隆仓库
git clone https://github.com/ArjunCodess/storyblok-mcp.git
cd storyblok-mcp
与 Cursor 连接
- 在同一目录下打开 Cursor。
- 右键点击
build/index.js文件并选择 复制路径。 - 进入 设置 → MCP 工具。
- 点击 新建 MCP 服务器。
- 在打开的
mcp.json文件中粘贴以下内容,并将PATH_YOU_COPIED替换为第二步复制的路径:
{
"mcpServers": {
"storyblok": {
"command": "node PATH_YOU_COPIED",
"env": {
"STORYBLOK_SPACE_ID": "your_space_id",
"STORYBLOK_MANAGEMENT_TOKEN": "your_management_token",
"STORYBLOK_DEFAULT_PUBLIC_TOKEN": "your_public_token",
"GOOGLE_GENERATIVE_AI_API_KEY": "your_gemini_ai_api_key"
}
}
}
}
📚 详细文档
项目背景
本项目是为 DEV.to 上的 Storyblok Headless CMS 挑战赛 而构建的。目标是将 AI 和 Storyblok 的力量结合起来,创造出新颖且实用的东西。
什么是 Storyblok?
Storyblok 是一个强大的无头内容管理系统(CMS),采用 API 优先的设计理念,便于开发人员和内容创作者协同工作。它具有模块化、高度灵活的特点,可适配任何前端框架或工作流程。
什么是 MCP 服务器?
MCP 是一种连接 AI、工具和数据的协议。MCP 服务器充当中间人角色,向 AI 展示其功能和可用数据。这使得诸如 Cursor 或 Claude Desktop 等 AI 客户端能够通过自然语言与 Storyblok 进行交互,流畅地管理内容。
面临的挑战
- 个人开发经验不足:此前从未创建或安装过 MCP,花费的时间远超预期。
- API 文档查阅压力:需要反复查阅 Storyblok 的 API 文档,担心遗漏重要信息。
- AI 功能实现难题:在不破坏系统的前提下实现 AI 功能是一项令人头疼的任务。
- 安全问题:在开放 Storyblok 管理功能的同时,必须确保不泄露敏感信息。
- 开发者体验优化:要确保服务器易于运行、扩展,并能顺利集成到 AI 工具中。
工具功能介绍
1. 故事管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_stories | 从 Storyblok 检索故事(页面、文件夹或内容条目)列表,支持过滤、分页和搜索。 |
| get_story | 按故事 ID 获取单个故事。 |
| create_story | 在 Storyblok 中创建新的故事(页面、文件夹或内容条目)。 |
| update_story | 更新现有故事的内容、名称、slug 或标签。 |
| delete_story | 按故事 ID 删除故事。 |
| publish_story | 发布故事,使其上线。 |
| unpublish_story | 取消发布故事,将其从在线网站中移除。 |
| get_story_versions | 检索故事的所有先前版本,用于版本历史记录和回滚。 |
| restore_story | 将故事恢复到先前版本。 |
2. 标签管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_tags | 列出空间中使用的所有标签。 |
| create_tag | 创建新标签。 |
| create_tag_and_add_to_story | 创建标签并立即将其分配给故事。 |
| delete_tag | 按标签 ID 删除标签。 |
3. 发布管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_releases | 列出所有发布(用于计划发布的内容批次)。 |
| create_release | 创建新的发布。 |
| add_story_to_release | 将故事添加到发布中。 |
| publish_release | 发布发布中的所有故事。 |
| delete_release | 删除发布。 |
4. 资产管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_assets | 列出空间中的所有资产(如图像、文件等)。 |
| get_asset | 按资产 ID 获取单个资产。 |
| delete_asset | 删除资产。 |
| init_asset_upload | 开始上传新资产。 |
| complete_asset_upload | 完成资产上传过程。 |
5. 资产文件夹管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_asset_folders | 列出所有资产文件夹。 |
| create_asset_folder | 创建新的资产文件夹。 |
| update_asset_folder | 重命名资产文件夹。 |
| delete_asset_folder | 删除资产文件夹。 |
6. 组件管理
| 功能 | 详情 |
| ---- | ---- |
| fetch_components | 列出空间中的所有组件(内容类型)。 |
| get_component | 按组件 ID 获取单个组件。 |
| create_component | 创建新组件。 |
| update_component | 更新组件的架构或设置。 |
| delete_component | 删除组件。 |
7. 高级故事搜索
| 功能 | 详情 |
| ---- | ---- |
| search_stories | 使用高级过滤器(如按 slug、标签等)搜索故事。 |
| get_story_by_slug | 按故事的 slug 获取故事。 |
8. 空间与文件夹信息
| 功能 | 详情 |
| ---- | ---- |
| get_space | 获取当前 Storyblok 空间的信息。 |
| fetch_folders | 列出所有故事文件夹。 |
| fetch_datasources | 列出所有数据源(用于动态选择字段等)。 |
9. 实用工具
| 功能 | 详情 |
| ---- | ---- |
| ping | 检查服务器和 Storyblok API 是否可达。 |
10. AI 工具
| 功能 | 详情 |
| ---- | ---- |
| generate_alt_text | 根据内容或上下文自动为图像创建替代文本。 |
| translate_story | 使用 AI 将故事内容翻译成不同语言。 |
| generate_meta_tags | 为任何故事生成 SEO 友好的元标题和描述。 |
| summarize_story | 获取故事内容的 AI 生成简要摘要。 |
| tag_story_with_ai | 使用自然语言处理为故事自动生成相关标签。 |
🔧 技术细节
本项目构建了一个 MCP 服务器,作为 AI 与 Storyblok 之间的中间层。通过该服务器,AI 客户端可以通过自然语言与 Storyblok 进行交互,实现对内容的管理。在实现过程中,需要处理与 Storyblok API 的交互、AI 功能的集成以及安全等方面的问题。
🤝 如何贡献
如果你想为项目做出贡献,可以进行以下操作:
- 代码贡献: Fork 仓库,进行修改后提交拉取请求(PR)。
- 问题反馈: 如果你发现了 bug 或有新功能需求,请在仓库中创建一个 issue。
🔗 有用链接
🙏 致谢
本项目是为 DEV.to Storyblok 挑战赛 满怀热情打造的。
📄 许可证
本项目采用 MIT 许可证。
微信扫一扫