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: feishu-markdown-mcp
Í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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityFmaintenanceEnables AI agents to publish articles to WeChat Official Account (微信公众号). Supports image upload, draft creation, and publishing via standardized MCP protocol.51
- AlicenseNot gradedqualityFmaintenanceConverts Markdown to Feishu/Lark document format and provides an MCP service for integration with the Model Context Protocol.29MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for managing Blogger posts: create, update, retrieve posts, and upload images to GCS via natural language.2MIT
- AlicenseAqualityAmaintenanceEnables publishing local Markdown files to Velog with idempotent updates. Supports login, post management, and series operations through natural language.10MIT
Related MCP Connectors
Create, update, and publish changelog entries on your Patchlog changelog from any MCP client.
MCP-native collaborative markdown editor with real-time AI document editing
Publish AI-generated HTML & Markdown to a hosted, shareable URL via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mintonzhang/cnblogs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server