axomind-mcp
원칙
MCP는 Axomind 서버가 아닌 소비자 측에 있습니다. 비즈니스 로직은 포함하지 않으며, bot_api.php에 HTTP POST 요청을 보내고 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 → AIRelated MCP server: telegram-api-mcp
이 MCP가 하는 일
이 서버는 봇이 할당된 Axomind 리소스와 AI가 상호작용할 수 있게 해주는 26개의 봇 도구를 제공합니다:
마인드맵(10개 도구) — 노드 읽기, 생성, 업데이트, 삭제; 스타일 관리
메신저(4개 도구) — 봇 메시지 보내기, 읽기, 업데이트, 삭제
플래닝(9개 도구) — 활동 목록, 할당 관리, 시간 슬롯 읽기
트리(3개 도구) — 로컬 디렉터리 스캔 및 마인드맵 구조로 주입
설치
uv pip install -e .의존성: mcp(공식 SDK), httpx(HTTP 클라이언트).
구성
.env.example을 .env로 복사하고 봇 자격 증명을 입력하세요:
cp .env.example .env필수 변수
변수 | 설명 |
| Axomind 서버의 |
| 봇 ID(Axomind UI → 봇 관리에서 확인) |
| 봇 액세스 키(UI에서 봇 생성 시 생성됨) |
선택 사항
변수 | 기본값 | 설명 |
|
| HTTP 타임아웃(초) |
| — |
|
봇 자격 증명을 얻는 방법
Axomind 데스크톱 앱을 엽니다
봇 관리로 이동합니다
새 봇을 생성합니다 → 봇 ID와 봇 액세스 키를 받습니다
액세스하려는 리소스(마인드맵, 활동, 대화)에 봇을 할당합니다
자격 증명을
.env파일에 입력합니다
봇은 해당 ID가 bots JSONB 열에 나열된 리소스에만 액세스할 수 있습니다 — 이는 Axomind에서 서버 측으로 강제됩니다.
사용 가능한 도구(26개)
마인드맵(10개) — 봇 API
도구 | 설명 | 파괴적? |
| 봇이 할당된 마인드맵 목록(메타데이터만) | 아니요 |
| 마인드맵 읽기(메타데이터 + 모든 노드). ⚠️ 설명이 있는 60개 이상의 노드가 있으면 응답이 2MB를 초과할 수 있음 | 아니요 |
| 간결한 요약 — 노드 수, 제목, 구조, has_description. 컨텍스트에 안전하며 설명이나 스타일은 포함하지 않음 | 아니요 |
| order_index로 단일 노드의 설명 읽기(약 4KB로 제한). | 아니요 |
| 모든 노드 교체(전체 JSON, 노드당 약 25개 필드). ⚠️ 파괴적 — 노드 1개를 보내면 나머지 98개가 삭제됨 | ⚠️ 예 |
| 기존 마인드맵에 노드 추가(간소화된 형식). 기존 항목을 읽고, 추가하고, 동기화 | 아니요 |
| 모든 노드 교체(간소화된 형식). 전송 전에 계층 구조를 검증 | ⚠️ 예(검증됨) |
| 단일 노드 업데이트 — 모든 필드 지원(제목, 설명, 부모, 스타일, 위치, free_links). 전체 마인드맵을 읽고, 노드 하나를 패치하고, 다시 동기화. 알고리즘이 JSON을 처리하며 AI가 처리하지 않음 | 아니요(안전) |
| 노드 + 하위 트리 삭제. 삭제된 노드를 가리키는 free_links 정리. 루트 노드(parent=0)는 삭제할 수 없음. 알고리즘이 JSON을 처리하며 AI가 처리하지 않음 | 아니요(안전) |
| 여러 노드의 스타일 필드 업데이트(색상, 굵게, size_box 등). 읽고, 패치하고, 다시 동기화 | 아니요(안전) |
안전한 노드 수정 — 알고리즘이 JSON을 처리
update_node와 delete_node는 마인드맵을 수정하는 안전한 방법입니다. 전체 마인드맵을 읽고, 특정 노드에 대상 변경을 적용하고, 모든 것을 다시 동기화합니다. 다른 노드(설명 포함)는 변경 없이 보존됩니다.
AI는 전체 노드 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)알고리즘(AI가 아닌)이 강제하는 검증:
자기 참조:
parent == order_index→ 거부됨순환 감지:
new_parent가order_index의 하위 항목인 경우 → 거부됨부모는 마인드맵에 존재해야 함
루트 노드(parent=0)는 삭제할 수 없음
free_links는 자기 자신을 대상으로 할 수 없으며, 모든 대상이 존재해야 함size_box는 0–11이어야 함
replace_mindmap / add_nodes용 간소화된 형식
AI는 간결한 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(선택) — 16진수 색상(기본값: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(선택) — 아이콘 IDactive_bg_colors(선택) — 활성 배경 색상descriptions(선택) — 설명 텍스트(markdown → Quill Delta)free_links(선택) — 노드 간 자유 링크용 order_index 목록spacing_h,spacing_v(선택) — 간격 배율(0-10)is_write_children(선택) — 하위 항목에 스타일 전파(일회성)
UID와 order_index는 자동으로 할당됩니다. add_nodes는 기존 마인드맵을 읽고 기존 노드 뒤에 추가합니다.
트리 / 디렉터리 스캔(3개) — 로컬 + 봇 API
이 도구들은 로컬 파일 시스템을 스캔하여 디렉터리 트리에서 마인드맵 구조를 구축합니다.
도구 | 설명 | HTTP? |
| 디렉터리의 간결한 원격 측정(제목, 유형, 크기, 계층 구조). 파일 내용을 읽지 않음. 주입 전에 참조 노드 수를 얻기 위해 사용 | 아니요(로컬) |
| 원샷 스캔 + 읽기 + 주입 — 디렉터리를 스캔하고, | 예(sync_nodes) |
| 스캔 → JSON 노드(간소화된 형식, 파일 내용 없음). | 아니요(로컬) |
워크플로: 디렉터리를 마인드맵에 주입
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..md,.markdown,.txt파일만 읽고 Quill Delta로 변환됩니다500KB 초과 파일 및 비텍스트 형식(
.docx,.pdf, 이미지)은 빈 설명이 있는 노드로 처리됩니다숨김 파일 및 VCS 디렉터리(
.git,node_modules,__pycache__)는 자동으로 건너뜁니다주입을 검증하기 위해
get_mindmap을 절대 호출하지 마세요 — 요약 +tree_scope수로 충분합니다
메신저(4개) — 봇 API
도구 | 설명 |
| 메시지 보내기(대상 지정 또는 모든 대화에 브로드캐스트) |
| 대화에서 봇 메시지 읽기 |
| 봇 메시지 업데이트 |
| 봇 메시지 삭제 |
활동 / 플래닝(9개) — 봇 API
모든 플래닝 도구는 봇 API(bot_api.php → api_activity 라우트)를 사용합니다. 봇은 봇 소유자의 user_id로 작동합니다 — add_assignment / update_assignment / delete_assignment와 동일한 인증 체인입니다.
고수준 도구(이것들을 우선 사용)
도구 | 설명 |
| 사람이 읽기 쉬운 매개변수(날짜, 시간, 요일 이름)로 할당(단일 일정 또는 반복)을 생성합니다. JSON은 내부적으로 구성됩니다. |
| 기존 할당 그룹을 수정합니다. 서버는 톰스톤을 표시하고, 이전 슬롯을 제거하고, 새 슬롯을 생성합니다. |
| 활동을 읽고 원격 측정 보고서(그룹, 슬롯, 일관성 검사)를 반환합니다. |
| 봇 API를 통해 특정 연도의 모든 계획 슬롯을 읽습니다. 실제 시간 슬롯 데이터(시작/종료 시간, 연중 일수, 사용자 할당)와 그룹 컨트롤을 반환합니다. 봇 소유자의 user_id로 |
저수준 도구(원시 JSON)
도구 | 설명 |
| 봇이 할당된 활동을 나열합니다. |
| 특정 활동을 읽습니다(전체 메타데이터). |
| 시간 슬롯을 할당합니다(원시 |
| 할당 그룹을 업데이트합니다(원시 JSON). |
| 할당 그룹을 삭제합니다. |
토큰 효율적 읽기 전략
MCP는 AI 컨텍스트를 작게 유지하기 위한 3계층 읽기 전략을 제공합니다:
list_mindmaps()— 메타데이터만 포함(id, 제목, 참가자). 노드는 없음.get_mindmap_summary(id_mindmap)— 간결한 요약: 노드 수, 제목, 구조,has_description플래그. 설명, 위치, 스타일은 없음.get_node_description(id_mindmap, order_index)— 단일 노드의 설명을 읽습니다(최대 ~4 KB).
AI는 수정 전에 개별 노드 필드를 검사해야 하는 경우가 아니면 get_mindmap(전체)을 절대 호출해서는 안 됩니다. 구조를 이해하려면 get_mindmap_summary를 사용하세요. 콘텐츠를 읽으려면 특정 노드에서 get_node_description을 사용하세요.
Hermes와의 통합
Hermes에서 Axomind Bot API를 사용하려면 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는 cwd를 설정하지만 Python import 경로는 설정하지 않습니다.
구성을 편집한 후 Hermes를 다시 시작하거나 /reload-mcp를 실행하세요. 26개의 도구가 mcp_axomind_ 접두사로 자동 검색됩니다(예: mcp_axomind_list_mindmaps, mcp_axomind_send_message, mcp_axomind_read_planning).
기타 MCP 클라이언트(Claude Desktop, Cursor 등)
동일한 env 변수와 명령을 사용하세요. MCP 서버는 표준 stdio 전송을 사용합니다.
테스트
PYTHONPATH=src python -m pytest tests/ -v149개의 테스트 — 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을 통해 설정되며 공개 저장소에서 찾을 수 없습니다.
라이선스
사유 라이선스 — LICENSE를 참조하세요. Copyright © 2025 VEZZANI Sébastien. 모든 권리 보유.
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