Skip to main content
Glama

Servicio MCP de cnblogs

MCP Server Python License

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-mcp

2. Crear entorno virtual

python -m venv .venv
source .venv/bin/activate      # macOS / Linux
# .venv\Scripts\activate       # Windows

3. Instalar dependencias

pip install -r requirements.txt

4. Configurar Token

cp .env.example .env

Edita .env e introduce tu Personal Access Token de cnblogs:

CNBLOGS_TOKEN=your_token_here

5. 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

  1. Inicia sesión en cnblogs

  2. Ve a Configuración personal → Configuración de seguridad → Personal Access Token

  3. Haz clic en "Crear Token", introduce el nombre y los permisos (se requiere el permiso "Publicar entradas")

  4. 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 restart

2. 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

command

.venv/bin/python (Python del entorno virtual del proyecto)

args

["./cnblogs_mcp.py"]

env.DOTENV_PATH

Ruta absoluta del archivo .env

💡 Si el cliente MCP no admite DOTENV_PATH, también puedes pasar el token directamente usando env.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/null

Respuesta normal:

{"success": true, "postId": 12345678, "postUrl": "https://www.cnblogs.com/你的博客名/p/12345678"}

Manejo de errores

Mensaje de error

Causa

Solución

未配置 CNBLOGS_TOKEN

.env no configurado o ruta incorrecta

Verifica si el archivo .env existe y si DOTENV_PATH es correcto

API 错误: 401

Token inválido o expirado

Crea un nuevo token en cnblogs

API 错误: 403

Permisos de token insuficientes

Asegúrate de marcar "Publicar entradas" al crear el token

API 错误: 400

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 show_banner

Asegúrate de usar mcp.run(show_banner=False)


Referencia de API

Herramienta: create_post

Parámetros:

Parámetro

Tipo

Obligatorio

Descripción

title

string

✅

Título de la entrada

body

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
└── LICENSE

Dependencias

fastmcp>=3.0.0
python-dotenv>=1.0.0
requests>=2.31.0

Licencia

MIT — ¡Se agradecen las estrellas, forks y PRs!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables publishing local Markdown files to Velog with idempotent updates. Supports login, post management, and series operations through natural language.
    10
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Automates writing and publishing posts to velog.io via MCP, including login and session management.
    5
    21 npm
    MIT