Skip to main content
Glama

Принцип работы

MCP работает на стороне потребителя, а не на сервере Axomind. Он не содержит бизнес-логики — он отправляет HTTP POST-запросы к bot_api.php и возвращает JSON. Вся безопасность (аутентификация, ограничение частоты запросов, бан по IP, проверки bots @>) остаётся на стороне PHP.

AI (any MCP client — Hermes, Claude, Cursor, etc.)
  → MCP server Python (FastMCP)
    → HTTP POST → bot_api.php
      → PHP does the work (auth, DB, WS notify)
    ← JSON response
  ← MCP tool result → AI

Related MCP server: telegram-api-mcp

Что делает этот MCP

Этот сервер предоставляет 26 бот-инструментов, которые позволяют ИИ взаимодействовать с ресурсами Axomind, к которым привязан бот:

  • Mindmap (10 инструментов) — чтение, создание, обновление, удаление узлов; управление стилями

  • Messenger (4 инструмента) — отправка, чтение, обновление, удаление сообщений бота

  • Планирование (9 инструментов) — список активностей, управление назначениями, чтение временны́х слотов

  • Дерево (3 инструмента) — сканирование локальных каталогов и внедрение их в виде структур mindmap

Установка

uv pip install -e .

Зависимости: mcp (официальный SDK), httpx (HTTP-клиент).

Конфигурация

Скопируйте .env.example в .env и заполните учётные данные бота:

cp .env.example .env

Обязательные переменные

Переменная

Описание

AXOMIND_BASE_URL

URL к bot_api.php на сервере Axomind (например, https://quantive-studio.fr/app/bot_api.php)

AXOMIND_BOT_ID

ID бота (из интерфейса Axomind → управление ботами)

AXOMIND_BOT_KEY

Ключ доступа бота (генерируется при создании бота в интерфейсе)

Необязательные

Переменная

По умолчанию

Описание

AXOMIND_TIMEOUT

30

Тайм-аут HTTP в секундах

AXOMIND_ENV_FILE

Явный путь к файлу .env (рекомендуется для продакшена)

Как получить учётные данные бота

  1. Откройте настольное приложение Axomind

  2. Перейдите в управление ботами

  3. Создайте нового бота → вы получите ID бота и ключ доступа бота

  4. Назначьте бота на ресурсы, к которым нужен доступ (mindmap, активности, беседы)

  5. Внесите учётные данные в файл .env

Бот может получить доступ только к тем ресурсам, где его ID указан в JSONB-колонке bots — это обеспечивается на стороне сервера Axomind.

Доступные инструменты (26)

Mindmap (10) — Bot API

Инструмент

Описание

Деструктивный?

list_mindmaps

Список mindmap, к которым привязан бот (только метаданные)

Нет

get_mindmap

Чтение mindmap (метаданные + все узлы). ⚠️ Ответ может превышать 2 МБ при 60+ узлах с описаниями

Нет

get_mindmap_summary

Компактная сводка — количество узлов, заголовки, структура, has_description. Безопасно для контекста, без описаний и стилей

Нет

get_node_description

Чтение описания одного узла по order_index (не более ~4 КБ). Используйте после get_mindmap_summary

Нет

sync_nodes

Заменяет ВСЕ узлы (полный JSON, ~25 полей на узел). ⚠️ ОПАСНО — при отправке 1 узла удаляются остальные 98

⚠️ Да

add_nodes

Добавление узлов к существующей mindmap (упрощённый формат). Читает существующие, добавляет, синхронизирует

Нет

replace_mindmap

Замена всех узлов (упрощённый формат). Проверяет иерархию перед отправкой

⚠️ Да (с проверкой)

update_node

Обновление одного узла — поддерживаются все поля (заголовок, описания, родитель, стиль, позиции, free_links). Читает полную mindmap, изменяет один узел, синхронизирует обратно. JSON обрабатывает алгоритм, а не ИИ

Нет (безопасно)

delete_node

Удаление узла и его поддерева. Очищает free_links, указывающие на удалённые узлы. Корневой узел (parent=0) удалить нельзя. JSON обрабатывает алгоритм, а не ИИ

Нет (безопасно)

update_nodes_style

Обновление полей стиля нескольких узлов (цвет, жирность, size_box и т. д.). Читает, изменяет, синхронизирует обратно

Нет (безопасно)

Безопасное изменение узлов — JSON обрабатывает алгоритм

update_node и delete_node — это безопасный способ изменения mindmap. Они читают полную mindmap, вносят точечные изменения в конкретные узлы и синхронизируют всё обратно. Остальные узлы (включая их описания) сохраняются без изменений.

ИИ никогда не формирует полный JSON узла — он передаёт только изменяемые поля, а всё остальное делает алгоритм:

// update_node: rename node 33
{"title": "messenger.md test"}

// update_node: change description (markdown → Quill Delta conversion is automatic)
{"descriptions": "# Module Messenger\n\nThis module handles..."}

// update_node: re-parent with cycle detection
{"parent": 2}

// update_node: change style + propagate to children
{"color": "0xFFFF6F91", "bold": true, "is_write_children": true}

// delete_node: just the order_index, no JSON at all
// delete_node(id_mindmap=100, order_index=33)

Проверки, выполняемые алгоритмом (а не ИИ):

  • Самоссылка: parent == order_index → отклоняется

  • Обнаружение циклов: new_parent является потомком order_index → отклоняется

  • Родитель должен существовать в mindmap

  • Корневой узел (parent=0) удалить нельзя

  • free_links не может ссылаться на самого себя, все цели должны существовать

  • size_box должен быть в диапазоне 0–11

Упрощённый формат для replace_mindmap / add_nodes

ИИ предоставляет компактный JSON — MCP автоматически разворачивает ~25 полей по умолчанию:

[
  {"title": "Root", "parent": 0, "color": "0xFFF0BA6D", "size_box": 2, "bold": true},
  {"title": "Category A", "parent": 1, "color": "0xFF7A8FF5", "size_box": 1, "line_style": 1},
  {"title": "Item 1", "parent": 2},
  {"title": "Item 2", "parent": 2, "color": "0xFFFF6F91", "free_links": [3]}
]

Поля:

  • title (обязательное) — заголовок узла

  • parent (обязательное) — order_index родительского узла (0 = корень, 1 = первый узел)

  • color (необязательное) — цвет в HEX (по умолчанию: 0xFF7A8FF5)

  • pos_x, pos_y (необязательные) — позиция на холсте (по умолчанию: 0)

  • size_box (необязательное) — 0=обычный, 1=категория, 2=корень (по умолчанию: 0)

  • bold, italic, underline (необязательные) — стиль текста

  • line_type (необязательное) — 0=кривая, 1=скруглённая, 2=прямая

  • line_style (необязательное) — 0=сплошная, 1=пунктирная

  • stroke_width, dot_radius, radius, border_size, label_size (необязательные)

  • icon_id (необязательное) — ID иконки

  • active_bg_colors (необязательное) — активные цвета фона

  • descriptions (необязательное) — описательный текст (markdown → Quill Delta)

  • free_links (необязательное) — список order_index для свободных связей между узлами

  • spacing_h, spacing_v (необязательные) — множители отступов (0–10)

  • is_write_children (необязательное) — применить стиль к дочерним узлам (одноразово)

UID и order_index назначаются автоматически. add_nodes читает существующую mindmap и добавляет узлы после существующих.

Дерево / сканирование каталогов (3) — локально + Bot API

Эти инструменты сканируют локальную файловую систему для построения структур mindmap из деревьев каталогов.

Инструмент

Описание

HTTP?

tree_scope

Компактная телеметрия каталога (заголовок, тип, размер, иерархия). Не читает содержимое файлов. Используйте перед внедрением, чтобы получить эталонное количество узлов

Нет (локально)

inject_directory_to_mindmap

Одноэтапное сканирование + чтение + внедрение — сканирует каталог, читает файлы .md/.markdown/.txt, преобразует в Quill Delta и синхронизирует всё в mindmap. Возвращает компактную сводку для проверки

Да (sync_nodes)

tree_to_mindmap

Сканирование → JSON-узлы (упрощённый формат, без содержимого файлов). Готово для replace_mindmap или add_nodes

Нет (локально)

Рабочий процесс: внедрение каталога в mindmap

1. tree_scope(root_path, root_title) → reference count (1 root + N dirs + M files)
2. inject_directory_to_mindmap(root_path, root_title, id_mindmap) → scan + read + Quill Delta + sync
3. Compare the returned summary (total_nodes, descriptions_filled, errors) with tree_scope count
4. If they match and errors is empty → injection validated. DONE.
  • Читаются и преобразуются в Quill Delta только файлы .md, .markdown, .txt

  • Файлы > 500 КБ и нетекстовые форматы (.docx, .pdf, изображения) получают узлы с пустыми описаниями

  • Скрытые файлы и каталоги VCS (.git, node_modules, __pycache__) автоматически пропускаются

  • Никогда не вызывайте get_mindmap для проверки внедрения — достаточно сводки + счётчика tree_scope

Messenger (4) — Bot API

Инструмент

Описание

send_message

Отправка сообщения (адресно или рассылка по всем беседам)

get_messages

Чтение сообщений бота в беседе

update_message

Обновление сообщения бота

delete_message

Удаление сообщения бота

Активности / Планирование (9) — Bot API

Все инструменты планирования используют Bot API (bot_api.php → маршрут api_activity). Бот действует от имени user_id владельца бота — та же цепочка аутентификации, что и у add_assignment / update_assignment / delete_assignment.

Высокоуровневые инструменты (предпочтительны они)

Инструмент

Описание

create_assignment

Создать назначение (на один день или рекурсивное) с человеко-понятными параметрами (даты, часы, названия дней недели). JSON строится внутри

modify_assignment

Изменить существующую группу назначений. Сервер помечает tombstone, удаляет старые слоты и создаёт новые

verify_assignment

Прочитать активность и вернуть телеметрический отчёт (группы, слоты, проверки согласованности)

read_planning

Прочитать все слоты планирования за указанный год через bot API. Возвращает фактические данные временных слотов (время начала/окончания, день года, назначения пользователей) и элементы управления группами. Использует PlanningsUsers::getList() + GstGroupControlPlanning::getList() с user_id владельца бота

Низкоуровневые инструменты (сырой JSON)

Инструмент

Описание

list_activities

Список активностей, где назначен бот

get_activity

Прочитать конкретную активность (полные метаданные)

add_assignment

Назначить временные слоты (сырой JSON planning_list + recursive_group)

update_assignment

Обновить группу назначений (сырой JSON)

delete_assignment

Удалить группу назначений

Стратегия токен-эффективного чтения

MCP предоставляет трёхуровневую стратегию чтения, чтобы контекст ИИ оставался небольшим:

  1. list_mindmaps() — только метаданные (id, название, участники). Без узлов.

  2. get_mindmap_summary(id_mindmap) — компактная сводка: количество узлов, названия, структура, флаг has_description. Без описаний, позиций и стилей.

  3. get_node_description(id_mindmap, order_index) — чтение описания одного узла (ограничено ~4 КБ).

ИИ не должен вызывать get_mindmap (полную версию), если ему не нужно просматривать отдельные поля узла перед изменением. Для понимания структуры используйте get_mindmap_summary. Для чтения содержимого используйте get_node_description на конкретных узлах.

Интеграция с Hermes

Чтобы использовать Axomind Bot API из Hermes, добавьте MCP-сервер в ~/.hermes/config.yaml:

mcp_servers:
  axomind:
    command: "python3"
    args: ["-m", "axomind_mcp.serveur.server"]
    env:
      # Bot API — URL to bot_api.php on the Axomind server
      AXOMIND_BASE_URL: "https://quantive-studio.fr/app/bot_api.php"
      # Bot credentials (from Axomind UI → bot management)
      AXOMIND_BOT_ID: "<your_bot_id>"
      AXOMIND_BOT_KEY: "<your_key_access>"
      # Python import path (required — workdir sets cwd but not the import path)
      PYTHONPATH: "/path/to/axomind-mcp/src"
    workdir: "/path/to/axomind-mcp"

⚠️ Все значения env должны быть строками (YAML интерпретирует 72 как int → pydantic отклоняет его).
⚠️ PYTHONPATH обязателен — workdir задаёт рабочую директорию, но не путь импорта Python.

После редактирования конфигурации перезапустите Hermes или выполните /reload-mcp — 26 инструментов будут обнаружены автоматически с префиксом mcp_axomind_ (например, mcp_axomind_list_mindmaps, mcp_axomind_send_message, mcp_axomind_read_planning).

Другие MCP-клиенты (Claude Desktop, Cursor и т. д.)

Используйте те же переменные окружения и команду. MCP-сервер работает через стандартный stdio-транспорт.

Тесты

PYTHONPATH=src python -m pytest tests/ -v

149 тестов — mock httpx, никаких сетевых вызовов к серверу Axomind.

Архитектура

src/axomind_mcp/
├── __init__.py
├── _common.py              — FastMCP instance, env config, _post() helper, node defaults
├── _planning.py            — 9 tools planning/activity (bot API)
├── imports.py              — Single import hub (registers all @mcp.tool() decorators)
├── messaging/              — Messaging tools
│   ├── __init__.py
│   └── _messenger.py       — 4 tools messenger (bot API)
├── serveur/
│   ├── __init__.py
│   └── server.py           — Entry point stdio, mcp.run()
├── mindmap/
│   ├── __init__.py
│   ├── _mindmap.py         — 10 tools mindmap (bot API)
│   ├── node_operations.py  — Shared algo: update/delete/patch nodes, cycle detection, style propagation
│   └── config_layout_mindmap.py — Node expansion, validation, auto-positioning
└── tools/
    ├── __init__.py
    ├── _file_reader.py     — File reading by extension → Quill Delta
    ├── md_to_quill_delta.py — Markdown → Quill Delta converter
    └── _tree.py            — 3 tools tree (local + bot API)

Безопасность

  • MCP не обращается к базе данных и не содержит бизнес-логики

  • Учётные данные берутся из переменных окружения (никогда не захардкожены)

  • Сервер Axomind не может определить, что это MCP — он видит обычные bot_api-запросы

  • Дерево инструментов (локальное сканирование файловой системы) сканирует только ту локальную машину, где запущен MCP

  • Путь к файлу .env задаётся через AXOMIND_ENV_FILE — он не доступен из публичного репозитория

Лицензия

Proprietary — см. LICENSE. Copyright © 2025 VEZZANI Sébastien. Все права защищены.


Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that connects AI assistants to your real Telegram account via User API (MTProto). Features default-deny ACL with per-chat permissions, message search, file sending, forwarding, media downloads, and rate limiting.
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Ultimate MCP server for Telegram Bot API — 169 methods, full v9.6 coverage, meta-mode, rate limiting, and circuit breaker, enabling AI to control Telegram bots with natural language.
    100
    27
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for Gainium — manage trading bots, deals, and balances via AI assistants

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

  • Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sebastien-VZN/axomind-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server