MCP-сервер для трёхуровневого управления проектами (Проекты → Задачи → База знаний) на Neo4j. Граф зависимостей задач, Deep Research режим, semantic search по накопленным знаниям — для AI-агентов.
Требуется: Neo4j (локально или cloud). Рекомендуется Docker.
# Docker (рекомендуется):
git clone https://github.com/cyanheads/atlas-mcp-server.git
cd atlas-mcp-server && docker compose up -d
# Claude Desktop — claude_desktop_config.json:
{ "mcpServers": { "atlas": { "command": "npx", "args": ["-y", "@cyanheads/atlas-mcp-server"], "env": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USERNAME": "neo4j", "NEO4J_PASSWORD": "password" } } } }
# Claude Code (CLI):
claude mcp add atlas --env NEO4J_URI=bolt://localhost:7687 --env NEO4J_PASSWORD=password -- npx -y @cyanheads/atlas-mcp-server
# OpenCode — ~/.config/opencode/opencode.json:
{ "mcp": { "atlas": { "type": "local", "command": ["npx", "-y", "@cyanheads/atlas-mcp-server"], "environment": { "NEO4J_URI": "bolt://localhost:7687", "NEO4J_PASSWORD": "password" } } } }
ATLAS (Адаптивная система автоматизации задач и логики) — это система управления проектами, знаниями и задачами для агентов LLM.
Построена на 3-узловой архитектуре:
+-------------------------------------------+
| PROJECT |
|-------------------------------------------|
| id: string |
| name: string |
| description: string |
| status: string |
| urls?: Array<{title: string, url: string}>|
| completionRequirements: string |
| outputFormat: string |
| taskType: string |
| createdAt: string |
| updatedAt: string |
+----------------+--------------------------+
| |
| |
v v
+----------------------------------+ +----------------------------------+
| TASK | | KNOWLEDGE |
|----------------------------------| |----------------------------------|
| id: string | | id: string |
| projectId: string | | projectId: string |
| title: string | | text: string |
| description: string | | tags?: string[] |
| priority: string | | domain: string |
| status: string | | citations?: string[] |
| assignedTo?: string | | createdAt: string |
| urls?: Array<{title: string, | | |
| url: string}> | | updatedAt: string |
| tags?: string[] | | |
| completionRequirements: string | | |
| outputFormat: string | | |
| taskType: string | | |
| createdAt: string | | |
| updatedAt: string | | |
+----------------------------------+ +----------------------------------+
Реализован как сервер Протокола Контекста Моделей (MCP), ATLAS позволяет агентам LLM взаимодействовать с базой данных управления проектами, давая им возможность управлять проектами, задачами и элементами знаний.
Важное примечание о версии: Версия 1.5.4 — последняя версия, использующая SQLite в качестве базы данных. Версия 2.0 и выше полностью переписана для использования Neo4j, что требует либо:
- Самостоятельного развертывания с использованием Docker (файл docker-compose включен в репозиторий)
- Использования облачного сервиса Neo4j AuraDB: https://neo4j.com/product/auradb/
Версия 2.5.0 вводит новую 3-узловую систему (Проекты, Задачи, Знания), которая заменяет предыдущую структуру.
ATLAS реализует Протокол Контекста Моделей (MCP), обеспечивая стандартизированную коммуникацию между LLM и внешними системами через:
Платформа Atlas интегрирует эти компоненты в единую систему:
| Область возможностей | Ключевые функции |
|---|---|
| Управление проектами | - Комплексное отслеживание: Управление метаданными, статусами и насыщенным содержанием (заметки, ссылки и т.д.) с встроенной поддержкой пакетных операций. - Обработка зависимостей и связей: Автоматическая валидация и отслеживание межпроектных зависимостей. |
| Управление задачами | - Управление жизненным циклом задач: Создание, отслеживание и обновление задач на протяжении всего их жизненного цикла. - Приоритизация и категоризация: Назначение уровней приоритета и категоризация задач с помощью тегов для лучшей организации. - Отслеживание зависимостей: Установление зависимостей задач для создания структурированных рабочих процессов. |
| Управление знаниями | - Структурированный репозиторий знаний: Поддержка поиска по репозиторию информации, связанной с проектами. - Доменная категоризация: Организация знаний по доменам и тегам для удобного извлечения. - Поддержка цитирования: Отслеживание источников и ссылок для элементов знаний. |
| Интеграция графовой базы данных | - Нативное управление связями: Использование ACID-совместимых транзакций и оптимизированных запросов Neo4j для надежной целостности данных. - Продвинутый поиск и масштабируемость: Выполнение поиска по свойствам с нечетким сопоставлением и подстановочными знаками при сохранении высокой производительности. |
| Единый поиск | - Поиск по сущностям: Поиск соответствующих проектов, задач или знаний на основе содержания, метаданных или связей. - Гибкие параметры запроса: Поддержка поиска без учета регистра, нечеткого поиска и расширенных параметров фильтрации. |
Клонируйте репозиторий:
bash
git clone https://github.com/cyanheads/atlas-mcp-server.git
cd atlas-mcp-server
Установите зависимости:
bash
npm install
Настройте Neo4j: Убедитесь, что экземпляр Neo4j запущен и доступен. Вы можете запустить его, используя предоставленную конфигурацию Docker:
bash
docker-compose up -d
Обновите ваш файл .env с данными для подключения к Neo4j (см. Конфигурация).
Соберите проект:
bash
npm run build
Большинство MCP-клиентов запускают сервер автоматически, но вы также можете запустить его вручную для тестирования или целей разработки, используя следующие команды.
ATLAS MCP Server поддерживает несколько транспортных механизмов для коммуникации:
bash
npm run start:stdio
Используется настройка MCP_TRANSPORT_TYPE=stdio.
bash
npm run start:http
Используется настройка MCP_TRANSPORT_TYPE=http. Сервер будет слушать на хосте и порту, определенных в вашем файле .env (например, MCP_HTTP_HOST и MCP_HTTP_PORT, по умолчанию 127.0.0.1:3010). Убедитесь, что ваш межсетевой экран разрешает подключения при удаленном доступе.
Доступен базовый веб-интерфейс для просмотра деталей Проектов, Задач и Знаний.
Открытие интерфейса:
Чтобы открыть интерфейс прямо в вашем браузере, выполните следующую команду в вашем терминале:
bash
npm run webui
Функциональность:
Переменные окружения должны быть установлены в конфигурации клиента в вашем MCP-клиенте или в файле .env в корне проекта для локальной разработки.
# Neo4j Configuration
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=password2
# Application Configuration
MCP_LOG_LEVEL=debug # Minimum logging level. Options: emerg, alert, crit, error, warning, notice, info, debug. Default: "debug".
LOGS_DIR=./logs # Directory for log files. Default: "./logs" in project root.
NODE_ENV=development # 'development' or 'production'. Default: "development".
# MCP Transport Configuration
MCP_TRANSPORT_TYPE=stdio # 'stdio' or 'http'. Default: "stdio".
MCP_HTTP_HOST=127.0.0.1 # Host for HTTP transport. Default: "127.0.0.1".
MCP_HTTP_PORT=3010 # Port for HTTP transport. Default: 3010.
# MCP_ALLOWED_ORIGINS=http://localhost:someport,https://your-client.com # Optional: Comma-separated list of allowed origins for HTTP CORS.
# MCP Security Configuration
# MCP_AUTH_SECRET_KEY=your_very_long_and_secure_secret_key_min_32_chars # Optional: Secret key (min 32 chars) for JWT authentication if HTTP transport is used. CRITICAL for production. *Note: Production environment use has not been tested yet.*
MCP_RATE_LIMIT_WINDOW_MS=60000 # Rate limit window in milliseconds. Default: 60000 (1 minute).
MCP_RATE_LIMIT_MAX_REQUESTS=100 # Max requests per window per IP for HTTP transport. Default: 100.
# Database Backup Configuration
BACKUP_MAX_COUNT=10 # Maximum number of backup sets to keep. Default: 10.
BACKUP_FILE_DIR=./atlas-backups # Directory where backup files will be stored (relative to project root). Default: "./atlas-backups".
Ссылка на src/config/index.ts для получения информации обо всех доступных переменных окружения, их описаниях и значениях по умолчанию.
Способ настройки вашего MCP-клиента зависит от самого клиента и выбранного типа транспорта. Файл mcp.json в корне проекта может использоваться некоторыми клиентами (например, mcp-inspector) для определения конфигураций сервера; обновите его при необходимости.
Для Stdio-транспорта (пример конфигурации):
{
"mcpServers": {
"atlas-mcp-server-stdio": {
"command": "node",
"args": ["/full/path/to/atlas-mcp-server/dist/index.js"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "password2",
"MCP_LOG_LEVEL": "info",
"NODE_ENV": "development",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
Для потокового HTTP (пример конфигурации):
Если ваш клиент поддерживает подключение к MCP-серверу через потоковый HTTP, вы указываете конечную точку сервера (например, http://localhost:3010/mcp) в конфигурации вашего клиента.
{
"mcpServers": {
"atlas-mcp-server-http": {
"command": "node",
"args": ["/full/path/to/atlas-mcp-server/dist/index.js"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "password2",
"MCP_LOG_LEVEL": "info",
"NODE_ENV": "development",
"MCP_TRANSPORT_TYPE": "http",
"MCP_HTTP_PORT": "3010",
"MCP_HTTP_HOST": "127.0.0.1"
// "MCP_AUTH_SECRET_KEY": "your-secure-token" // If authentication is enabled on the server
}
}
}
}
Примечание: Всегда используйте абсолютные пути для args при настройке команд клиента, если сервер не находится в непосредственной рабочей директории клиента. MCP_AUTH_SECRET_KEY в блоке env клиента является иллюстративным; фактическая обработка токенов для коммуникации от клиента к серверу будет зависеть от возможностей клиента и механизма аутентификации сервера (например, отправка JWT в заголовке Authorization).
Базовая структура кода следует модульному подходу:
src/
├── config/ # Configuration management (index.ts)
├── index.ts # Main server entry point
├── mcp/ # MCP server implementation (server.ts)
│ ├── resources/ # MCP resource handlers (index.ts, types.ts, knowledge/, projects/, tasks/)
│ └── tools/ # MCP tool handlers (individual tool directories)
├── services/ # Core application services
│ └── neo4j/ # Neo4j database services (index.ts, driver.ts, backupRestoreService.ts, etc.)
├── types/ # Shared TypeScript type definitions (errors.ts, mcp.ts, tool.ts)
└── utils/ # Utility functions and internal services (e.g., logger, errorHandler, sanitization)
ATLAS предоставляет комплексный набор инструментов для управления проектами, задачами и знаниями, доступных для вызова через протокол Model Context Protocol.
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_project_create |
Создает новые проекты (единичный/массовый режим). | mode ('single'/'bulk'), id (необязательный клиентский ID для единичного режима), данные проекта (name, description, status, urls, completionRequirements, dependencies, outputFormat, taskType). Для массового режима используйте projects (массив объектов проектов). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_project_list |
Список проектов (все/с деталями). | mode ('all'/'details', по умолчанию: 'all'), id (для режима с деталями), фильтры (status, taskType), пагинация (page, limit), включения (includeKnowledge, includeTasks), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_project_update |
Обновляет существующие проекты (единичный/массовый режим). | mode ('single'/'bulk'), id (для единичного режима), объект updates. Для массового режима используйте projects (массив объектов, каждый с id и updates). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_project_delete |
Удаляет проекты (единичный/массовый режим). | mode ('single'/'bulk'), id (для единичного режима) или projectIds (массив для массового режима). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_task_create |
Создает новые задачи (единичный/массовый режим). | mode ('single'/'bulk'), id (необязательный клиентский ID), projectId, данные задачи (title, description, priority, status, assignedTo, urls, tags, completionRequirements, dependencies, outputFormat, taskType). Для массового режима используйте tasks (массив объектов задач). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_task_update |
Обновляет существующие задачи (единичный/массовый режим). | mode ('single'/'bulk'), id (для единичного режима), объект updates. Для массового режима используйте tasks (массив объектов, каждый с id и updates). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_task_delete |
Удаляет задачи (единичный/массовый режим). | mode ('single'/'bulk'), id (для единичного режима) или taskIds (массив для массового режима). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_task_list |
Список задач для конкретного проекта. | projectId (обязательный), фильтры (status, assignedTo, priority, tags, taskType), сортировка (sortBy, sortDirection), пагинация (page, limit), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_knowledge_add |
Добавляет новые элементы знаний (единичный/массовый режим). | mode ('single'/'bulk'), id (необязательный клиентский ID), projectId, данные знаний (text, tags, domain, citations). Для массового режима используйте knowledge (массив объектов знаний). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_knowledge_delete |
Удаляет элементы знаний (единичный/массовый режим). | mode ('single'/'bulk'), id (для единичного режима) или knowledgeIds (массив для массового режима). responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
atlas_knowledge_list |
Список элементов знаний для конкретного проекта. | projectId (обязательный), фильтры (tags, domain, search), пагинация (page, limit), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_unified_search |
Выполняет объединенный поиск по сущностям. | value (поисковый запрос, обязательный), property (необязательный: если указан, выполняется поиск по регулярному выражению для этого свойства; если опущен, выполняется полнотекстовый поиск), фильтры (entityTypes, taskType, assignedToUserId), опции (caseInsensitive (по умолчанию: true, для регулярных выражений), fuzzy (по умолчанию: false, для регулярных выражений 'contains' или полнотекстового нечеткого поиска Lucene)), пагинация (page, limit), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_deep_research |
Запускает структурированный процесс глубокого исследования, создавая иерархический план в базе знаний Atlas. | projectId (обязательный), researchTopic (обязательный), researchGoal (обязательный), scopeDefinition (необязательный), subTopics (обязательный массив объектов, каждый с полями question (обязательный), initialSearchQueries (необязательный массив), nodeId (необязательный), priority (необязательный), assignedTo (необязательный), initialStatus (необязательный, по умолчанию: 'todo')), researchDomain (необязательный), initialTags (необязательный), planNodeId (необязательный), createTasks (необязательный, по умолчанию: true), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
| Название инструмента | Описание | Ключевые аргументы |
|---|---|---|
atlas_database_clean |
Деструктивная операция: Полностью сбрасывает базу данных, удаляя все проекты, задачи и знания. | acknowledgement (должен быть установлен в true для подтверждения, обязательный), responseFormat ('formatted'/'json', необязательный, по умолчанию: 'formatted'). |
ATLAS предоставляет доступ к данным о проектах, задачах и знаниях через стандартные конечные точки ресурсов MCP.
| Название ресурса | Описание |
|---|---|
atlas://projects |
Список всех проектов в платформе Atlas с поддержкой постраничной навигации. |
atlas://tasks |
Список всех задач в платформе Atlas с поддержкой постраничной навигации и фильтрации. |
atlas://knowledge |
Список всех элементов знаний в платформе Atlas с поддержкой постраничной навигации и фильтрации. |
| Название ресурса | Описание |
|---|---|
atlas://projects/{projectId} |
Извлекает один проект по его уникальному идентификатору (projectId). |
atlas://tasks/{taskId} |
Извлекает одну задачу по её уникальному идентификатору (taskId). |
atlas://projects/{projectId}/tasks |
Извлекает все задачи, принадлежащие указанному проекту (projectId). |
atlas://knowledge/{knowledgeId} |
Извлекает один элемент знаний по его уникальному идентификатору (knowledgeId). |
atlas://projects/{projectId}/knowledge |
Извлекает все элементы знаний, принадлежащие указанному проекту (projectId). |
ATLAS предоставляет функциональность резервного копирования и восстановления содержимого базы данных Neo4j. Основная логика находится в src/services/neo4j/backupRestoreService.ts.
Project, Task и Knowledge вместе со связями в отдельные JSON-файлы. Также создаётся файл full-export.json, содержащий все данные.atlas-backup-YYYYMMDDHHMMSS) в настроенном пути для резервных копий (по умолчанию: ./atlas-backups/). Этот каталог содержит файлы projects.json, tasks.json, knowledge.json, relationships.json и full-export.json.bash
npm run db:backup
Эта команда выполняет src/services/neo4j/backupRestoreService/scripts/db-backup.ts, который вызывает функцию exportDatabase.full-export.json, если он доступен.bash
npm run db:import <путь_к_каталогу_резервной_копии>
Замените <путь_к_каталогу_резервной_копии> на фактический путь к папке резервной копии (например, ./atlas-backups/atlas-backup-20250326120000). Эта команда выполняет src/services/neo4j/backupRestoreService/scripts/db-import.ts, который вызывает функцию importDatabase.id, сохранённых в узлах при экспорте. Убедитесь, что ваши узлы имеют согласованные свойства id для корректного восстановления связей.Каталог examples/ содержит практические примеры, демонстрирующие различные функции ATLAS MCP Server.
examples/backup-example/, показывает структуру и формат JSON-файлов, генерируемых командой npm run db:backup. Подробности смотрите в README примеров.examples/deep-research-example/, демонстрирует вывод и структуру, генерируемые инструментом atlas_deep_research. Включает markdown-файл (covington_community_grant_research.md) с описанием плана исследования и JSON-файл (full-export.json) с сырыми данными, экспортированными из базы данных после создания плана исследования. Подробности смотрите в README примеров.Лицензия Apache 2.0
Создано с использованием Model Context Protocol