cnblogs-mcp
Servicio MCP de cnblogs
A través del protocolo MCP (Model Context Protocol), encapsula la API abierta de cnblogs como herramientas invocables por IA. Te permite publicar artículos en cnblogs directamente con lenguaje natural en cualquier cliente MCP (QwenPaw, Claude Desktop, Cline, etc.).
Funcionalidades
✅
create_post— Publicar entradas de blog en Markdown en cnblogs✅ Gestión de tokens mediante
.env, sin hardcoding✅ Soporte para conexión con cualquier cliente MCP
Related MCP server: Dev.to Blog Publisher MCP Server
Índice
Inicio rápido
1. Clonar / Descargar el proyecto
git clone https://github.com/你的用户名/cnblogs-mcp.git
cd cnblogs-mcp2. Crear entorno virtual
python -m venv .venv
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows3. Instalar dependencias
pip install -r requirements.txt4. Configurar Token
cp .env.example .envEdita .env e introduce tu Personal Access Token de cnblogs:
CNBLOGS_TOKEN=your_token_here5. Ejecutar pruebas
# 验证 MCP 服务能正常启动
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}\n{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}\n' \
| python cnblogs_mcp.py 2>/dev/null | grep '"name"'Salida normal:
{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"create_post",...}]}}Obtener Token
Inicia sesión en cnblogs
Ve a Configuración personal → Configuración de seguridad → Personal Access Token
Haz clic en "Crear Token", introduce el nombre y los permisos (se requiere el permiso "Publicar entradas")
Copia el token generado e insértalo en el archivo
.env
⚠️ El token solo se muestra una vez, guárdalo de forma segura.
Conexión del cliente
1. QwenPaw
Busca agent.json en el directorio de trabajo de QwenPaw y añade el cliente MCP:
{
"mcp": {
"clients": {
"cnblogs": {
"name": "cnblogs",
"description": "博客园博文发布",
"enabled": true,
"transport": "stdio",
"command": "/absolute/path/to/cnblogs-mcp/.venv/bin/python",
"args": ["/absolute/path/to/cnblogs-mcp/cnblogs_mcp.py"],
"env": {
"DOTENV_PATH": "/absolute/path/to/cnblogs-mcp/.env"
}
}
}
}
}Reinicia QwenPaw:
qwenpaw daemon restart2. Claude Desktop
Añade lo siguiente en ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"cnblogs": {
"command": "/absolute/path/to/cnblogs-mcp/.venv/bin/python",
"args": ["/absolute/path/to/cnblogs-mcp/cnblogs_mcp.py"],
"env": {
"DOTENV_PATH": "/absolute/path/to/cnblogs-mcp/.env"
}
}
}
}Reinicia Claude Desktop.
3. Cline / Roo Code
Busca "MCP" en la configuración de VS Code, encuentra MCP Servers y añade:
{
"cnblogs": {
"command": "/absolute/path/to/cnblogs-mcp/.venv/bin/python",
"args": ["/absolute/path/to/cnblogs-mcp/cnblogs_mcp.py"],
"env": {
"DOTENV_PATH": "/absolute/path/to/cnblogs-mcp/.env"
}
}
}4. Otros clientes MCP
Plantilla de configuración general:
Parámetro | Valor |
|
|
|
|
| Ruta absoluta del archivo |
💡 Si el cliente MCP no admite
DOTENV_PATH, también puedes pasar el token directamente usandoenv.CNBLOGS_TOKEN.
Pruebas manuales
cd cnblogs-mcp
# 测试 1:初始化 + 工具列表
printf '...' | python cnblogs_mcp.py
# 测试 2:发布一篇博文
printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}\n{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"create_post","arguments":{"title":"测试","body":"## 你好\n\n这是一篇测试文章。"}}}\n' | python cnblogs_mcp.py 2>/dev/nullRespuesta normal:
{"success": true, "postId": 12345678, "postUrl": "https://www.cnblogs.com/你的博客名/p/12345678"}Manejo de errores
Mensaje de error | Causa | Solución |
|
| Verifica si el archivo |
| Token inválido o expirado | Crea un nuevo token en cnblogs |
| Permisos de token insuficientes | Asegúrate de marcar "Publicar entradas" al crear el token |
| Formato de solicitud incorrecto | Verifica si el título y el cuerpo están vacíos |
| Problema de red | Verifica la red y vuelve a intentarlo |
Lista de herramientas vacía tras conectar MCP | Problema con | Asegúrate de usar |
Referencia de API
Herramienta: create_post
Parámetros:
Parámetro | Tipo | Obligatorio | Descripción |
| string | ✅ | Título de la entrada |
| string | ✅ | Cuerpo de la entrada (formato Markdown) |
Valor de retorno:
{
"success": true,
"postId": 19246558,
"postUrl": "https://www.cnblogs.com/你的博客名/p/19246558"
}O en caso de error:
{
"success": false,
"error": "错误描述"
}Desarrollo
Estructura del proyecto
cnblogs-mcp/
├── cnblogs_mcp.py # MCP 服务主文件
├── requirements.txt # Python 依赖
├── .env.example # 环境变量模板(不含真实 Token)
├── .env # 你的本地配置(已在 .gitignore 中)
├── .gitignore
├── README.md
└── LICENSEDependencias
fastmcp>=3.0.0
python-dotenv>=1.0.0
requests>=2.31.0Licencia
MIT — ¡Se agradecen las estrellas, forks y PRs!
This server cannot be deployed
Maintenance
Related MCP Connectors
Publish and share access-controlled Markdown documents from any MCP-enabled AI tool.
Hosted MCP for BlogBat: read, write, generate, and publish blog articles and content.
Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.
Generate PDF, Word (.docx) and PowerPoint (.pptx) documents from Markdown over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables publishing local Markdown files to Velog with idempotent updates. Supports login, post management, and series operations through natural language.10MIT
- AlicenseAqualityCmaintenanceEnables publishing markdown blog posts directly to Dev.to as drafts or live articles through a single MCP tool, with support for tags, series, canonical URL, and cover image.1MIT
- AlicenseAqualityCmaintenanceEnables writing Naver blog posts with rich formatting like images, tables, formulas, and places, converting Markdown to drafts and handling publishing via MCP tools.7MIT
- AlicenseBqualityCmaintenanceAutomates writing and publishing posts to velog.io via MCP, including login and session management.521 npmMIT