axomind-mcp
Prinzip
Der MCP lebt auf der Verbraucherseite, nicht auf dem Axomind-Server. Er enthält keine Geschäftslogik — er sendet HTTP-POST-Anfragen an bot_api.php und gibt das JSON zurück. Die gesamte Sicherheit (Authentifizierung, Ratenbegrenzung, IP-Sperren, bots @>-Prüfungen) bleibt auf der PHP-Seite.
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 → AIRelated MCP server: telegram-api-mcp
Was dieser MCP tut
Dieser Server stellt 26 Bot-Tools bereit, die es einer KI ermöglichen, mit Axomind-Ressourcen zu interagieren, denen ein Bot zugewiesen ist:
Mindmap (10 Tools) — Knoten lesen, erstellen, aktualisieren, löschen; Stile verwalten
Messenger (4 Tools) — Bot-Nachrichten senden, lesen, aktualisieren, löschen
Planung (9 Tools) — Aktivitäten auflisten, Zuweisungen verwalten, Zeitfenster lesen
Baum (3 Tools) — lokale Verzeichnisse scannen und als Mindmap-Strukturen einfügen
Installation
uv pip install -e .Abhängigkeiten: mcp (offizielles SDK), httpx (HTTP-Client).
Konfiguration
Kopieren Sie .env.example in .env und füllen Sie Ihre Bot-Anmeldedaten aus:
cp .env.example .envErforderliche Variablen
Variable | Beschreibung |
| URL zu |
| Bot-ID (aus der Axomind-Benutzeroberfläche → Bot-Verwaltung) |
| Bot-Zugriffsschlüssel (wird beim Erstellen des Bots in der Benutzeroberfläche generiert) |
Optional
Variable | Standard | Beschreibung |
|
| HTTP-Timeout in Sekunden |
| — | Expliziter Pfad zur |
So erhalten Sie Bot-Anmeldedaten
Öffnen Sie die Axomind-Desktop-App
Gehen Sie zur Bot-Verwaltung
Erstellen Sie einen neuen Bot → Sie erhalten eine Bot-ID und einen Bot-Zugriffsschlüssel
Weisen Sie den Bot den Ressourcen zu, auf die er zugreifen soll (Mindmaps, Aktivitäten, Konversationen)
Tragen Sie die Anmeldedaten in Ihre
.env-Datei ein
Der Bot kann nur auf Ressourcen zugreifen, in denen seine ID in der bots-JSONB-Spalte aufgeführt ist — dies wird serverseitig von Axomind erzwungen.
Verfügbare Tools (26)
Mindmap (10) — Bot-API
Tool | Beschreibung | Destruktiv? |
| Mindmaps auflisten, denen der Bot zugewiesen ist (nur Metadaten) | Nein |
| Eine Mindmap lesen (Metadaten + alle Knoten). ⚠️ Die Antwort kann bei 60+ Knoten mit Beschreibungen 2 MB überschreiten | Nein |
| Kompakte Zusammenfassung — Knotenanzahl, Titel, Struktur, has_description. Kontextsicher, keine Beschreibungen oder Stile | Nein |
| Die Beschreibung eines einzelnen Knotens per order_index lesen (auf ~4 KB begrenzt). Nach | Nein |
| ALLE Knoten ersetzen (vollständiges JSON, ~25 Felder pro Knoten). ⚠️ DESTRUKTIV — 1 Knoten senden → die anderen 98 werden gelöscht | ⚠️ Ja |
| Knoten an eine bestehende Mindmap anhängen (vereinfachtes Format). Liest Bestehendes, hängt an, synchronisiert | Nein |
| Alle Knoten ersetzen (vereinfachtes Format). Validiert die Hierarchie vor dem Senden | ⚠️ Ja (validiert) |
| Einen einzelnen Knoten aktualisieren — alle Felder werden unterstützt (Titel, Beschreibungen, parent, Stil, Positionen, free_links). Liest die vollständige Mindmap, patcht einen Knoten, synchronisiert zurück. Der Algorithmus verarbeitet das JSON, nicht die KI | Nein (sicher) |
| Einen Knoten + seinen Unterbaum löschen. Bereinigt free_links, die auf gelöschte Knoten zeigen. Der Wurzelknoten (parent=0) kann nicht gelöscht werden. Der Algorithmus verarbeitet das JSON, nicht die KI | Nein (sicher) |
| Stilfelder mehrerer Knoten aktualisieren (Farbe, fett, size_box usw.). Liest, patcht, synchronisiert zurück | Nein (sicher) |
Sichere Knotenänderung — der Algorithmus verarbeitet das JSON
update_node und delete_node sind der sichere Weg, eine Mindmap zu ändern. Sie lesen die vollständige Mindmap, wenden gezielte Änderungen auf bestimmte Knoten an und synchronisieren alles zurück. Andere Knoten (einschließlich ihrer Beschreibungen) bleiben unverändert erhalten.
Die KI erstellt nie das vollständige Knoten-JSON — sie übergibt nur die zu ändernden Felder, und der Algorithmus erledigt den Rest:
// 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)Vom Algorithmus erzwungene Validierungen (nicht von der KI):
Selbstreferenz:
parent == order_index→ abgelehntZykluserkennung:
new_parentist ein Nachkomme vonorder_index→ abgelehntparent muss in der Mindmap vorhanden sein
Der Wurzelknoten (parent=0) kann nicht gelöscht werden
free_linkskönnen nicht auf sich selbst zeigen, alle Ziele müssen vorhanden seinsize_boxmuss 0–11 sein
Vereinfachtes Format für replace_mindmap / add_nodes
Die KI liefert ein kompaktes JSON — der MCP erweitert automatisch ~25 Standardfelder:
[
{"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]}
]Felder:
title(erforderlich) — Knotentitelparent(erforderlich) — order_index des übergeordneten Knotens (0 = Wurzel, 1 = erster Knoten)color(optional) — Hex-Farbe (Standard:0xFF7A8FF5)pos_x,pos_y(optional) — Canvas-Position (Standard: 0)size_box(optional) — 0=normal, 1=Kategorie, 2=Wurzel (Standard: 0)bold,italic,underline(optional) — Textstilline_type(optional) — 0=Kurve, 1=abgerundet, 2=eckigline_style(optional) — 0=durchgezogen, 1=gestricheltstroke_width,dot_radius,radius,border_size,label_size(optional)icon_id(optional) — Symbol-IDactive_bg_colors(optional) — aktive Hintergrundfarbendescriptions(optional) — beschreibender Text (Markdown → Quill Delta)free_links(optional) — Liste von order_index für freie Verknüpfungen zwischen Knotenspacing_h,spacing_v(optional) — Abstands-Multiplikatoren (0-10)is_write_children(optional) — Stil an untergeordnete Knoten weitergeben (einmalig)
UID und order_index werden automatisch zugewiesen. add_nodes liest die bestehende Mindmap und hängt nach den vorhandenen Knoten an.
Baum / Verzeichnisscan (3) — lokal + Bot-API
Diese Tools scannen das lokale Dateisystem, um Mindmap-Strukturen aus Verzeichnisbäumen zu erstellen.
Tool | Beschreibung | HTTP? |
| Kompakte Telemetrie eines Verzeichnisses (Titel, Typ, Größe, Hierarchie). Liest KEINE Dateiinhalte. Vor der Injektion verwenden, um eine Referenz-Knotenanzahl zu erhalten | Nein (lokal) |
| Einmaliger Scan + Lesen + Injizieren — scannt das Verzeichnis, liest | Ja (sync_nodes) |
| Scan → JSON-Knoten (vereinfachtes Format, keine Dateiinhalte). Bereit für | Nein (lokal) |
Arbeitsablauf: Ein Verzeichnis in eine Mindmap injizieren
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.Nur
.md,.markdown,.txt-Dateien werden gelesen und in Quill Delta konvertiertDateien > 500 KB und Nicht-Text-Formate (
.docx,.pdf, Bilder) erhalten Knoten mit leeren BeschreibungenVersteckte Dateien und VCS-Verzeichnisse (
.git,node_modules,__pycache__) werden automatisch übersprungenNie
get_mindmapaufrufen, um eine Injektion zu überprüfen — die Zusammenfassung + dietree_scope-Anzahl sind ausreichend
Messenger (4) — Bot-API
Tool | Beschreibung |
| Eine Nachricht senden (gezielt oder als Rundsendung an alle Konversationen) |
| Bot-Nachrichten in einer Konversation lesen |
| Eine Bot-Nachricht aktualisieren |
| Eine Bot-Nachricht löschen |
Aktivität / Planung (9) — Bot-API
Alle Planungstools verwenden die Bot-API (bot_api.php → api_activity-Route). Der Bot arbeitet mit der user_id des Bot-Besitzers — dieselbe Authentifizierungskette wie bei add_assignment / update_assignment / delete_assignment.
Hochrangige Tools (diese bevorzugen)
Tool | Beschreibung |
| Erstellt eine Zuordnung (einmalig oder wiederkehrend) mit benutzerfreundlichen Parametern (Daten, Stunden, Wochentagsnamen). Das JSON wird intern erstellt |
| Ändert eine bestehende Zuordnungsgruppe. Der Server markiert den alten Datensatz als Tombstone, entfernt alte Slots und erstellt neue |
| Liest eine Aktivität und gibt einen Telemetriebericht zurück (Gruppen, Slots, Konsistenzprüfungen) |
| Liest alle Planungs-Slots für ein bestimmtes Jahr über die Bot-API. Liefert tatsächliche Zeitslot-Daten (Start/Endzeiten, Tag des Jahres, Benutzer zuweisungen) sowie Gruppensteuerung. Verwendet |
Low-Level-Tools (Roh-JSON)
Tool | Beschreibung |
| Listet Aktivitäten auf, bei denen der Bot zugewiesen ist |
| Liest eine bestimmte Aktivität (vollständige Metadaten) |
| Weist Zeitfenster zu (rohes |
| Aktualisiert eine Zuordnungsgruppe (Roh-JSON) |
| Löscht eine Zuordnungsgruppe |
Token-effiziente Lesestrategie
Das MCP bietet eine dreistufige Lesestrategie, um den KI-Kontext klein zu halten:
list_mindmaps()— nur Metadaten (id, Titel, Teilnehmer). Keine Knoten.get_mindmap_summary(id_mindmap)— kompakte Zusammenfassung: Knotenanzahl, Titel, Struktur,has_description-Flag. Keine Beschreibungen, keine Positionen, keine Stile.get_node_description(id_mindmap, order_index)— liest die Beschreibung eines einzelnen Knotens (begrenzt auf ~4 KB).
Die KI sollte get_mindmap (vollständig) nie aufrufen, außer sie muss vor einer Änderung einzelne Knotenfelder prüfen. Für das Verständnis der Struktur verwende get_mindmap_summary. Zum Lesen von Inhalten verwende get_node_description für bestimmte Knoten.
Integration mit Hermes
Um die Axomind Bot API aus Hermes zu nutzen, füge den MCP-Server zur ~/.hermes/config.yaml hinzu:
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"⚠️ Alle env-Werte müssen Strings sein (YAML parst 72 as int → pydantic lehnt es ab).
⚠️ PYTHONPATH ist erforderlich — workdir setzt das Arbeitsverzeichnis (cwd), aber nicht den Python-Importpfad.
Nach dem Bearbeiten der Konfiguration starte Hermes neu oder führe /reload-mcp aus — die 26 Werkzeuge werden automatisch mit dem Präfix mcp_axomind_ erkannt (z. B. mcp_axomind_list_mindmaps, mcp_axomind_send_message, mcp_axomind_read_planning).
Andere MCP-Clients (Claude Desktop, Cursor, usw.)
Verwende dieselben Umgebungsvariablen und denselben Befehl. Der MCP-Server verwendet den Standard-Stdio-Transport.
Tests
PYTHONPATH=src python -m pytest tests/ -v149 Tests — gemocktes httpx, keine Netzwerkaufrufe an den Axomind-Server.
Architektur
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)Sicherheit
Das MCP greift nicht auf die Datenbank zu und enthält keine Geschäftslogik
Anmeldedaten stammen aus Umgebungsvariablen (niemals hartkodiert)
Der Axomind-Server kann nicht erkennen, dass es ein MCP ist — er sieht normale bot_api-Anfragen
Die Tree-Werkzeuge (lokaler Dateisystemscan) scannen nur den lokalen Rechner, auf dem das MCP läuft
Der Pfad zur
.env-Datei wird überAXOMIND_ENV_FILEfestgelegt — nicht aus dem öffentlichen Repository erkennbar
Lizenz
Proprietär — siehe LICENSE. Copyright © 2025 VEZZANI Sébastien. Alle Rechte vorbehalten.
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceMCP 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.2MIT
- AlicenseBqualityCmaintenanceUltimate 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.10027MIT
- FlicenseNot gradedqualityBmaintenanceModel Context Protocol server for Telegram. Let AI read, search, send, and forward your Telegram messages.17
- FlicenseBqualityDmaintenanceMCP server integrating Nextcloud services (tasks, calendar, notes, email, files, Deck) for AI assistant interaction.201
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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