mcp-server-chinesereads-canva
Enables creating Chinese-vocabulary carousel posts from multi-page Canva templates, with automatic content validation and avoidance of recently used words and topics.
README
Generador de posts desde plantillas de Canva
Pides "5 palabras en chino sobre deportes" y sale un carrusel nuevo de 5 slides en tu cuenta de Canva, con la plantilla intacta y sin repetir palabras recientes.
Coste: 0 €. Canva Free + el servidor MCP oficial de Canva + este servidor local. Sin redimensionado, sin autofill de Enterprise, sin recursos premium.
Cómo está montado
Dos servidores MCP repartiéndose el trabajo:
| Servidor | Quién lo mantiene | Qué hace |
|---|---|---|
canva |
Canva (remoto, OAuth) | Duplicar, leer, editar y exportar diseños |
catalogo-plantillas |
Tú (local, stdio) | Catálogo, límites, validación e historial |
El de Canva sabe de diseños pero no sabe nada de tus plantillas ni de lo que ya publicaste. Ese hueco lo llena el servidor local, y ahí es donde vive la lógica que hace que esto sea fiable: las reglas duras las comprueba código, no el modelo. Contar caracteres es justo el tipo de cosa que un LLM hace regular.
Instalación
python3 -m venv .venv
./.venv/bin/pip install -r requirements.txt
Conecta Canva desde Claude (Ajustes → Conectores → Canva) o, en Claude Code:
claude mcp add --transport http canva https://mcp.canva.com/mcp
Se abre el OAuth de Canva en el navegador. No hay que crear ninguna app ni gestionar API keys.
El servidor local ya está declarado en .mcp.json, así que Claude Code lo
levanta solo al abrir el proyecto. Comprueba con /mcp que aparecen los dos.
Configurar tus plantillas
Cada plantilla debe ser un diseño multi-página en Canva: varias páginas
duplicadas con el mismo layout (hasta el número que pongas en max_paginas,
p. ej. 12). Un post de N slides se genera copiando N de esas páginas, así que
necesitas al menos tantas páginas en el maestro como slides vayas a pedir
nunca en un post.
Edita plantillas.json (o pide al asistente que use anadir_plantilla). Por cada
plantilla necesitas:
canva_design_id— está en la URL del diseño maestro:canva.com/design/DAFxxxxxxxx/edit→ elDAFxxxxxxxx.max_paginas— cuántas páginas tiene el maestro (= el máximo de slides que podrá tener un post con esta plantilla).huecos— un objeto por cada bloque que quieras cambiar en cada página. El campotexto_actualdebe ser literalmente lo que pone hoy ese bloque en la plantilla: así es como se localiza al editar. Los de texto llevan"tipo": "texto"ymax_caracteres; un hueco de imagen lleva"tipo": "imagen"(sinmax_caracteres) y se rellena buscando una foto de licencia libre (CC0/dominio público) o, si no se encuentra ninguna, a mano.max_caracteres— mídelo escribiendo texto en una página hasta que se descuadre, y resta un par de caracteres.reglas_estilo— el estilo de tu contenido en frases imperativas. Esto es lo que más se nota en la calidad del resultado; merece la pena afinarlo.
Un consejo: nombra las plantillas de forma descriptiva en Canva
(PLANTILLA_chino_5palabras_feed). Ayuda a que se elija la correcta.
Uso
En Claude Code, dentro de la carpeta del proyecto:
> hazme un post de 5 palabras en chino sobre deportes
La skill generar-post se dispara sola. El flujo es: elegir plantilla y número
de slides → pedir el contrato de huecos → generar contenido por slide →
validar → duplicar N páginas y editarlas en Canva → exportar todo en un solo
link → registrar el post completo en el historial.
Si el contenido no pasa la validación, se corrige y se revalida antes de tocar nada en Canva. Esa es la parte que evita que acabes con diseños rotos.
Cómo evita repetirse
- Temas (
temas_publicados): avisa si ya publicaste un post con ese tema exacto (p. ej. "deportes" completo otra vez). - Palabras (
elementos_usados): las palabras usadas en los últimosCOOLDOWN_POSTSposts (15 por defecto, configurable enservidor_catalogo.py) de esa plantilla se evitan. No es un bloqueo permanente — pasado ese número de posts, la palabra vuelve a estar disponible, lo justo para que nadie la recuerde.
Lo que este proyecto no hace
- No publica en Instagram ni TikTok. El MCP de Canva llega hasta exportar a imagen o PDF. Publicar es otra integración (APIs de Meta y TikTok) y no es gratis en tiempo de montaje.
- No genera imágenes con IA. Para los huecos de imagen busca fotos ya existentes con licencia CC0/dominio público (Openverse); si no encuentra ninguna, pide que la pongas tú.
- No redimensiona entre formatos. Requiere Canva Pro. Mantén una plantilla por formato: una de feed y otra vertical, cada una con su entrada en el catálogo.
- No corre solo. El MCP responde cuando tú abres una conversación. No hay nada programado generando posts de madrugada.
- No sustituye la revisión. Cambiar texto puede descuadrar un salto de línea, y una imagen auto-buscada puede no acertar del todo. Abre el diseño antes de publicar.
Verificar que el servidor local funciona
./.venv/bin/python -c "
import servidor_catalogo as s
print(s.listar_plantillas())
print(s.preparar_encargo('texto-3', 'animales', 4))
print(s.elementos_usados('texto-3'))
"
Debe listar tus plantillas y devolver el contrato de una petición de 4 slides
para texto-3.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。