Skip to main content
Glama

MCP-сервер для Cnblogs

MCP Server Python License

Используя протокол MCP (Model Context Protocol), мы инкапсулируем Open API Cnblogs в инструменты, доступные для ИИ. Это позволяет вам публиковать статьи в блоге Cnblogs, используя естественный язык, прямо из любого MCP-клиента (QwenPaw, Claude Desktop, Cline и т.д.).


Функции

  • ✅ create_post — публикация Markdown-постов в блог Cnblogs

  • ✅ Управление токенами через .env, без жестко закодированных данных

  • ✅ Поддержка подключения любого MCP-клиента


Related MCP server: Dev.to Blog Publisher MCP Server

Содержание


Быстрый старт

1. Клонирование / Загрузка проекта

git clone https://github.com/你的用户名/cnblogs-mcp.git
cd cnblogs-mcp

2. Создание виртуального окружения

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

3. Установка зависимостей

pip install -r requirements.txt

4. Настройка токена

cp .env.example .env

Отредактируйте .env, вставив ваш Personal Access Token от Cnblogs:

CNBLOGS_TOKEN=your_token_here

5. Запуск теста

# 验证 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"'

Ожидаемый вывод:

{"jsonrpc":"2.0","id":2,"result":{"tools":[{"name":"create_post",...}]}}

Получение токена

  1. Войдите в Cnblogs

  2. Перейдите в Настройки пользователя → Настройки безопасности → Personal Access Token

  3. Нажмите «Создать токен», укажите имя и права доступа (необходимо право «发表随笔» — публикация эссе)

  4. Скопируйте созданный токен и вставьте его в файл .env

⚠️ Токен отображается только один раз, пожалуйста, сохраните его в надежном месте.


Подключение клиента

1. QwenPaw

Найдите agent.json в рабочем каталоге QwenPaw и добавьте 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"
        }
      }
    }
  }
}

Перезапустите QwenPaw:

qwenpaw daemon restart

2. Claude Desktop

Добавьте в ~/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"
      }
    }
  }
}

Перезапустите Claude Desktop.

3. Cline / Roo Code

В настройках VS Code найдите «MCP», перейдите в MCP Servers и добавьте:

{
  "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. Другие MCP-клиенты

Шаблон общей конфигурации:

Параметр

Значение

command

.venv/bin/python (Python внутри виртуального окружения проекта)

args

["./cnblogs_mcp.py"]

env.DOTENV_PATH

Абсолютный путь к файлу .env

💡 Если MCP-клиент не поддерживает DOTENV_PATH, можно передать токен напрямую через env.CNBLOGS_TOKEN.


Ручное тестирование

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

Ожидаемый ответ:

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

Обработка ошибок

Сообщение об ошибке

Причина

Решение

未配置 CNBLOGS_TOKEN

.env не настроен или путь неверен

Проверьте наличие файла .env и правильность DOTENV_PATH

API 错误: 401

Токен недействителен или истек

Создайте новый токен на Cnblogs

API 错误: 403

Недостаточно прав у токена

Убедитесь, что при создании токена выбрано «发表随笔»

API 错误: 400

Ошибка формата запроса

Проверьте, не пусты ли title и body

请求超时

Сетевая проблема

Проверьте сеть и повторите попытку

Список инструментов пуст после подключения MCP

Проблема с show_banner

Убедитесь, что используется mcp.run(show_banner=False)


Справочник API

Инструмент: create_post

Параметры:

Параметр

Тип

Обязательно

Описание

title

string

✅

Заголовок поста

body

string

✅

Тело поста (в формате Markdown)

Возвращаемое значение:

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

Или в случае ошибки:

{
  "success": false,
  "error": "错误描述"
}

Разработка

Структура проекта

cnblogs-mcp/
├── cnblogs_mcp.py     # MCP 服务主文件
├── requirements.txt   # Python 依赖
├── .env.example       # 环境变量模板(不含真实 Token)
├── .env               # 你的本地配置(已在 .gitignore 中)
├── .gitignore
├── README.md
└── LICENSE

Зависимости

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

Лицензия

MIT — Ставьте Star, делайте Fork и присылайте PR!

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