cnblogs-mcp
MCP-сервер для Cnblogs
Используя протокол 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-mcp2. Создание виртуального окружения
python -m venv .venv
source .venv/bin/activate # macOS / Linux
# .venv\Scripts\activate # Windows3. Установка зависимостей
pip install -r requirements.txt4. Настройка токена
cp .env.example .envОтредактируйте .env, вставив ваш Personal Access Token от Cnblogs:
CNBLOGS_TOKEN=your_token_here5. Запуск теста
# 验证 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",...}]}}Получение токена
Войдите в Cnblogs
Перейдите в Настройки пользователя → Настройки безопасности → Personal Access Token
Нажмите «Создать токен», укажите имя и права доступа (необходимо право «发表随笔» — публикация эссе)
Скопируйте созданный токен и вставьте его в файл
.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 restart2. 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-клиенты
Шаблон общей конфигурации:
Параметр | Значение |
|
|
|
|
| Абсолютный путь к файлу |
💡 Если 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 |
| Недостаточно прав у токена | Убедитесь, что при создании токена выбрано «发表随笔» |
| Ошибка формата запроса | Проверьте, не пусты ли |
| Сетевая проблема | Проверьте сеть и повторите попытку |
Список инструментов пуст после подключения MCP | Проблема с | Убедитесь, что используется |
Справочник API
Инструмент: create_post
Параметры:
Параметр | Тип | Обязательно | Описание |
| string | ✅ | Заголовок поста |
| 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!
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