🏛️ Moscow History MCP Server
Сервер для генерации исторического контента о Москве с использованием AI технологий.
🎯 Описание
Moscow History MCP Server - это полнофункциональный сервер для создания информативных и визуально привлекательных постов об истории Москвы. Сервер следует детальной инструкции по созданию контента и включает все этапы от сбора фактов до контроля качества.
🏗️ Архитектура
Компоненты:
- MCP Server - основной сервер для генерации контента
- API интеграции - Perplexity AI + OpenAI GPT
- Модели данных - районы, улицы, здания Москвы
- Сервисы - генерация фактов, постов, изображений
- Контроль качества - проверка соответствия требованиям
📋 Этапы работы согласно инструкции
Этап 1: Подготовка и планирование
- ✅ База объектов (районы, улицы, дома)
- ✅ Критерии отбора (минимум 3 факта)
- ✅ Приоритеты (уникальные истории, легенды, факты с датами)
Этап 2: Сбор информации
- ✅ Perplexity AI для сбора фактов
- ✅ Фильтрация данных (конкретные факты с датами)
- ✅ Проверка минимального количества фактов
Этап 3: Создание текста
- ✅ GPT для генерации финального текста
- ✅ Соблюдение лимитов (900-1000 символов)
- ✅ Структура: крючок → факты → финал
Этап 4: Подготовка изображения
- ✅ Гербы для районов
- ✅ Архитектурные иллюстрации для улиц/домов
- ✅ Стили: Sempé + pastel illustration
Этап 5: Контроль качества
- ✅ Проверка длины текста
- ✅ Проверка количества фактов
- ✅ Проверка уникальности
- ✅ Отсутствие эмодзи и ссылок
🚀 Быстрый старт
1. Клонирование проекта:
git clone https://github.com/semen243/MoscowHistoryMCP.git
cd MoscowHistoryMCP2. Настройка API ключей:
Создайте файл .env:
OPENAI_API_KEY=your_openai_api_key_here
PERPLEXITY_API_KEY=your_perplexity_api_key_here
IMAGE_PROCESSING_API_KEY=5fb1c9714b1e8d89852629d86765cd50
MIN_FACTS_REQUIRED=3
MAX_POSTS_PER_DAY=30
MCP_SERVER_HOST=0.0.0.0
MCP_SERVER_PORT=80003. Запуск через Docker:
docker-compose up -d --build4. Проверка работы:
curl http://localhost:8000/info📡 API Эндпоинты
Базовый URL: http://localhost:8000
1. GET /info - Информация о сервере
curl http://localhost:8000/info2. GET /objects - Список объектов
curl http://localhost:8000/objects3. POST /facts - Сбор фактов для объекта
curl -X POST http://localhost:8000/facts \
-H "Content-Type: application/json" \
-d '{"object_type": "street", "object_name": "Арбат"}'4. POST /generate - Полная генерация поста
curl -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"object_type": "street", "object_id": "arbat_street"}'5. GET /workflow - Ежедневный рабочий процесс
curl http://localhost:8000/workflow6. POST /image/process - Обработка изображения
curl -X POST http://localhost:8000/image/process \
-H "Content-Type: application/json" \
-d '{"image_url": "https://example.com/image.jpg", "object_name": "Арбат", "object_type": "street"}'7. GET /image/status - Статус задачи обработки изображения
curl "http://localhost:8000/image/status?task_id=task_12345678"8. GET /image/test - Тест API обработки изображений
curl http://localhost:8000/image/test🧪 Примеры использования
Генерация поста о районе:
curl -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"object_type": "district", "object_id": "district_1"}'Генерация поста об улице:
curl -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"object_type": "street", "object_id": "arbat_street"}'Генерация поста о здании:
curl -X POST http://localhost:8000/generate \
-H "Content-Type: application/json" \
-d '{"object_type": "building", "object_id": "building_1"}'📊 Структура ответа
Успешная генерация поста:
{
"success": true,
"object": {
"type": "street",
"id": "arbat_street",
"name": "Улица Арбат"
},
"post": {
"text": "Улица Арбат - одна из самых известных улиц Москвы...",
"character_count": 950,
"ready_for_publication": true
},
"facts": {
"used": 5,
"source": "perplexity",
"list": ["Факт 1", "Факт 2", "..."]
},
"image": {
"success": true,
"image_type": "architectural_illustration",
"style": "архитектурная акварель в духе Jean-Jacques Sempé",
"nano_banano_prompt": "Сделай фото рисованным..."
},
"quality_control": {
"passed": true,
"checks": {
"text_length": true,
"facts_count": true,
"uniqueness": true,
"no_emojis": true,
"no_links": true
},
"ready_for_publication": true
},
"generated_at": "2024-01-15T10:30:00"
}🗓️ Ежедневный рабочий процесс
Сервер автоматически:
- Выбирает район дня
- Генерирует пост о районе
- Выбирает улицы из этого района
- Генерирует посты об улицах
- Переходит к домам при необходимости
Получение плана на день:
curl http://localhost:8000/workflow🖼️ Обработка изображений
Тестирование API:
curl http://localhost:8000/image/testОбработка изображения:
curl -X POST http://localhost:8000/image/process \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/photo.jpg",
"object_name": "Улица Арбат",
"object_type": "street"
}'Проверка статуса обработки:
curl "http://localhost:8000/image/status?task_id=your_task_id"Особенности обработки:
- Размер изображения: 1:1 (квадратное)
- Формат: PNG
- Стили:
- "архитектурная акварель в духе Jean-Jacques Sempé" - "Sempé + pastel illustration"
- Для районов: Официальные гербы
- Для улиц/домов: Архитектурные иллюстрации
🔧 Конфигурация
config/mcp_config.yaml:
server:
name: "moscow-history-pipeline"
version: "1.0.0"
description: "MCP сервер для генерации исторического контента о Москве"
port: 8000
content:
daily_posts: 30
min_facts_required: 3
text_limits:
min_chars: 900
max_chars: 1000
priorities:
- "Уникальные и малоизвестные истории"
- "Интересные истории, легенды, байки"
- "Исторические факты с датами"
- "Связь с известными личностями"
- "Архитектурные особенности"
image_styles:
- "архитектурная акварель в духе Jean-Jacques Sempé"
- "Sempé + pastel illustration"🛠️ Развертывание на сервере
1. Подготовка сервера:
apt update && apt upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
apt install docker-compose -y2. Развертывание:
mkdir -p /opt/moscow-history-mcp
cd /opt/moscow-history-mcp
git clone https://github.com/semen243/MoscowHistoryMCP.git .
# Создание .env файла
cat > .env << 'EOF'
MIN_FACTS_REQUIRED=3
MAX_POSTS_PER_DAY=30
MCP_SERVER_HOST=0.0.0.0
MCP_SERVER_PORT=8000
OPENAI_API_KEY=your_openai_api_key_here
PERPLEXITY_API_KEY=your_perplexity_api_key_here
EOF
# Запуск
docker-compose up -d --build3. Проверка:
curl http://localhost:8000/info🔧 Управление сервисом
Проверка статуса:
docker-compose ps
docker-compose logs --tail=50Перезапуск:
docker-compose restartОбновление:
git pull
docker-compose up -d --build🚨 Устранение неполадок
Сервер не запускается:
- Проверьте логи:
docker-compose logs - Проверьте .env файл
- Проверьте API ключи
API не отвечает:
- Проверьте статус:
docker-compose ps - Проверьте порт:
netstat -tlnp | grep 8000
Ошибки генерации:
- Проверьте API ключи Perplexity и OpenAI
- Проверьте доступность интернета
- Проверьте логи сервера
📊 Мониторинг
Логи:
docker-compose logs -fСтатистика:
curl http://localhost:8000/info🔐 Безопасность
Рекомендации:
- Используйте HTTPS для внешних подключений
- Ограничьте доступ через файрвол
- Регулярно обновляйте зависимости
- Мониторьте логи
Файрвол:
ufw allow 8000
ufw allow 22
ufw enable📞 Поддержка
- GitHub: https://github.com/semen243/MoscowHistoryMCP
- Документация: См. README.md
🎯 Заключение
Moscow History MCP Server - это полнофункциональный сервер, который следует детальной инструкции по созданию качественного контента об истории Москвы. Сервер автоматизирует весь процесс от сбора фактов до контроля качества, обеспечивая высокое качество генерируемых постов.
