统一内容管理系统接口

Conduit是一个企业级MCP服务器,通过单一接口提供对多个内容管理系统的统一访问,支持Contentful、Sanity、WordPress等平台。

  • by smithdak
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 twofoldtech-dakota/conduit

使用说明

导管

每个CMS都有一个连接。

Conduit是一个企业级MCP(模型上下文协议)服务器,通过单个接口提供对多个内容管理系统的统一访问。将您的AI助手连接到Contentful、Sanity、WordPress等,而无需为每个助手编写自定义集成。

特性

  • 统一API -跨平台所有CMS操作的单一界面
  • 多CMS支持 -同时连接到多个CMS平台
  • 企业就绪 -内置缓存、速率限制和审计日志记录
  • 类型安全 -完全支持TypeScript,具有全面的类型定义
  • 可扩展 -易于添加新CMS平台的适配器架构

支持的CMS平台

无头CMS

平台 读 写 搜索 媒体
满足 ✅ ✅ ✅ ✅
理智 ✅ ✅ ✅ ✅
WordPress ✅ ✅ ✅ ✅

企业CMS

平台 读 写 搜索 媒体
Sitecore XM Cloud ✅ ❌* ✅ ✅
Sitecore XP ✅ ✅ ✅ ✅
翁布拉科 ✅ ❌* ✅ ✅
优化 ✅ ❌* ✅ ✅

*通过内容交付API只读。Sitecore XP支持通过SSC进行写入。

快速开始

安装

npm install conduit-mcp

配置

创建 conduit.yaml 文件:

# Single CMS mode
adapter:
  type: contentful
  credentials:
    spaceId: ${CONTENTFUL_SPACE_ID}
    accessToken: ${CONTENTFUL_ACCESS_TOKEN}

middleware:
  cache:
    enabled: true
    ttlMs: 60000
  rateLimit:
    enabled: true
    windowMs: 60000
    maxRequests: 100

或连接多个CMS平台:

# Multi-CMS mode (Enterprise)
adapters:
  contentful:
    type: contentful
    credentials:
      spaceId: ${CONTENTFUL_SPACE_ID}
      accessToken: ${CONTENTFUL_ACCESS_TOKEN}

  sanity:
    type: sanity
    credentials:
      projectId: ${SANITY_PROJECT_ID}
      dataset: production
      token: ${SANITY_TOKEN}

  wordpress:
    type: wordpress
    credentials:
      url: ${WORDPRESS_URL}
      username: ${WORDPRESS_USERNAME}
      applicationPassword: ${WORDPRESS_APP_PASSWORD}

跑步

# Using npx
npx conduit-mcp

# Or with environment variable
CONDUIT_CONFIG=/path/to/conduit.yaml npx conduit-mcp

MCP客户端配置

添加到您的MCP客户端配置中(例如,Claude Desktop):

{
  "mcpServers": {
    "conduit": {
      "command": "npx",
      "args": ["conduit-mcp"],
      "env": {
        "CONTENTFUL_SPACE_ID": "your-space-id",
        "CONTENTFUL_ACCESS_TOKEN": "your-token"
      }
    }
  }
}

可用工具

工具 说明
content_list 使用过滤器和分页列出内容
content_get 按ID获取单个内容项
content_search 跨内容的全文搜索
content_create 创建新内容
content_update 更新现有内容
media_list 列出媒体资产
media_get 获取单一媒体资产
schema_list 列出可用内容类型
schema_get 获取内容类型架构
health_check 检查适配器连接

中间件

缓存

具有可配置TTL的LRU缓存:

middleware:
  cache:
    enabled: true
    ttlMs: 60000 # 1 minute
    maxSize: 500 # Max entries

速率限制

滑动窗口速率限制器:

middleware:
  rateLimit:
    enabled: true
    windowMs: 60000 # 1 minute window
    maxRequests: 100 # Max requests per window

审计日志

基于Pino的结构化日志记录:

middleware:
  audit:
    enabled: true
    level: info # debug, info, warn, error
    logFile: ./audit.log # Optional file output

程序化使用

import { ConduitServer, loadConfig } from "conduit-mcp";

const config = await loadConfig("./conduit.yaml");
const server = new ConduitServer(config);

await server.start();

Sitecore X射线(高级)

X-Ray是一个用于Sitecore XP安装的全面审计和知识图系统。

特性

  • 12分析算法:孤立检测、未使用的模板、断开的链接、安全分析等
  • 健康评分:A-F等级,有可操作的建议
  • 知识图谱:可视化项目、模板、渲染之间的关系
  • 分层扫描:高效处理超过10万件物品

MCP工具

工具 说明
xray_scan 开始新的审核扫描
xray_status 检查扫描进度
xray_report 获取问题和健康评分
xray_graph 获取知识图数据
xray_health 快速健康检查

看 docs/reference/XRAY.md 获取完整文档。

添加自定义适配器

实施 ICMSAdapter 接口:

import { BaseAdapter, type AdapterConfig } from "conduit-mcp";

export class MyAdapter extends BaseAdapter {
  readonly name = "mycms";
  readonly displayName = "My CMS";

  async initialize(config: AdapterConfig) {
    // Initialize client
  }

  async listContent(filter) {
    // Implement
  }

  // ... implement other methods
}

发展

# Install dependencies
npm install

# Run in development mode
npm run dev

# Run tests
npm test

# Type check
npm run typecheck

# Build
npm run build

环境变量

无头CMS

变量 描述
CONTENTFUL_SPACE_ID 内容空间ID
CONTENTFUL_ACCESS_TOKEN 有内容的交付API令牌
SANITY_PROJECT_ID Sanity项目ID
SANITY_TOKEN Sanity API代币
WORDPRESS_URL WordPress网站URL
WORDPRESS_USERNAME WordPress用户名
WORDPRESS_APP_PASSWORD WordPress应用程序密码

企业CMS

变量 描述
SITECORE_API_KEY Sitecore Experience Edge API密钥(XM云)
SITECORE_ENDPOINT Sitecore边缘端点(可选)
SITECORE_SITE_NAME Sitecore站点名称
SITECORE_XP_URL Sitecore XP实例URL
SITECORE_XP_USERNAME sitecore XP用户名
SITECORE_XP_PASSWORD Sitecore XP密码
SITECORE_XP_DOMAIN Sitecore域(默认:Sitecore)
UMBRACO_URL Umbraco实例URL
UMBRACO_API_KEY Umbraco API密钥
OPTIMIZELY_URL 优化实例URL
OPTIMIZELY_CLIENT_ID OAuth客户端ID
OPTIMIZELY_CLIENT_SECRET OAuth客户端密钥

文档

许可证

麻省理工学院©Twofold Tech