aion-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aion-mcp check fleet status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aion-mcp (mcpbuilder)
A Model Context Protocol server that gives an MCP client (Claude Desktop, Codex, etc.) a single set of tools for driving the AION assistant stack and the surrounding home fleet. It speaks MCP over stdio and is spawned on demand by the client — there is no long-running daemon to manage.
It is the client half of the aion-suite integration: aion-mcp calls
aion-core (Flask, 127.0.0.1:5000), which in turn talks to Ollama and Postgres.
MCP client (Claude Desktop / Codex)
│ stdio
▼
aion-mcp ──HTTP──▶ aion-core (Flask :5000) ──▶ Ollama (GPU) + Postgres
│
└──SSH──▶ fleet machines (draydev / ec2) + Kali containerTool groups
Tools are organized into modules under src/, exposing ~45 tools total:
Module | Tools | What it does |
|
| AION Core HTTP API: service chat, channels/presence, activity feed, fact-memory browse, admin, and Vast.ai GPU orchestration |
| memory + conversation/profile tools | Read/write AION's SQLite-backed memory and conversation history |
| chat/image/model tools | Direct chat, image generation, and model endpoints |
|
| Bridge to the sonchat service |
|
| Portal service endpoints |
|
| Fan out agent runs across |
|
| Run security tooling inside a Kali Docker container over SSH |
|
| Local host/service status |
Related MCP server: mcp-ssh-multi
Build & run
npm install
npm run build # tsc → dist/
npm start # node dist/index.js (stdio server)
npm run dev # tsx src/index.ts (no build step)
npm run gateway # node dist/fleet-gateway.js (read-only fleet status over HTTP :5100)Fleet gateway
fleet-gateway.ts is a tiny read-only HTTP service (localhost :5100) that exposes the same
fleet_status probe used by the MCP fleet_status tool, so a web page can read machine/agent
health even though the MCP server itself is stdio-only. It backs AION's /fleet topology page and chat control hook.
GET /health,GET /fleet/status— read-only, background-refreshed cache (fast page loads).POST /fleet/run,POST /fleet/review— guarded writes wrappingfleet_run/fleet_review.
Writes are gated: if FLEET_GATEWAY_TOKEN is set they require a matching x-fleet-token
header (the status probe stays open); set FLEET_GATEWAY_WRITE=off to disable writes
entirely. AION stages a confirmation before calling the write endpoints. Config:
FLEET_GATEWAY_PORT (5100), FLEET_GATEWAY_HOST (127.0.0.1), FLEET_GATEWAY_TTL_MS (120000),
FLEET_GATEWAY_TOKEN, FLEET_GATEWAY_WRITE.
The compiled dist/ is committed so the server runs via npx/node dist/index.js
without a build step on the client machine.
Configuration
All host-specific values and secrets come from the environment — nothing sensitive is
committed. .env and claude_desktop_config.json are git-ignored; there are no hardcoded
credential fallbacks (an unset secret disables the affected tool with a clear error rather
than falling back to a real password).
Variable | Used by | Default | Notes |
| aion-api |
| AION Core Flask API |
|
| — |
|
| session-scoped aion tools | — | Value of the |
| kali |
|
|
| fleet | derived / | draydev SSH; if no password/SSH string is configured the machine is skipped with a clear error |
| fleet | — / | ec2 SSH string; per-run timeout; recursion guard on delegated fleet runs |
Claude Desktop
Register the server in claude_desktop_config.json (kept local, not committed):
{
"mcpServers": {
"aion": {
"command": "node",
"args": ["/mnt/c/projects/mcpbuilder/dist/index.js"],
"env": {
"AION_SERVICE_TOKEN": "…",
"AION_SESSION_TOKEN": "…"
}
}
}
}To get AION_SESSION_TOKEN: log in to AION at http://127.0.0.1:5000, open
DevTools → Application → Cookies, and copy the aion_token value.
Security notes
No secrets in the repo:
.envandclaude_desktop_config.jsonare ignored and were scrubbed from history; committed source has no credential fallbacks.aion_memory_browseand all session-scoped tools requireAION_SESSION_TOKEN— they do not silently run unauthenticated.kali_*andfleet_*run commands on remote hosts over SSH and are intended for the author's own lab/home fleet only.
Status
Built and tested working end-to-end against a live AION stack — see
aion-suite/QA_MCP_AION_FLEET_REPORT.md
(45 tools registered, service + session endpoints passing, fleet fan-out verified).
Available Tools
45 toolsaion_activityA
Get recent audit/activity events from Aion (joins, messages, logins, etc.). Requires AION_SESSION_TOKEN.
Inputs: limit.
aion_admin_network_runB
Run a network intelligence command (nmap, nikto, etc.) via Aion's admin panel. Requires AION_SESSION_TOKEN with admin access.
Inputs: command (required), target.
aion_admin_profile_rebuildA
Trigger a rebuild of Aion's cached system prompt profile (re-summarises facts with GPT-4o). Requires an admin session (AION_SESSION_TOKEN).
Inputs: no named parameters.
aion_admin_usersA
List all users registered in Aion. Requires an admin session (AION_SESSION_TOKEN).
Inputs: no named parameters.
aion_api_chatA
Send a message to Aion via the internal service chat endpoint (/api/service/chat). Uses the AION_SERVICE_TOKEN for auth — no user session required. Aion responds with full memory context injected.
Inputs: message (required), channel.
aion_channel_historyA
Fetch message history for a specific Aion channel. Requires AION_SESSION_TOKEN.
Inputs: channel (required), limit.
aion_channel_presenceA
Get active users in a specific Aion channel. Requires AION_SESSION_TOKEN.
Inputs: channel (required).
aion_channelsA
List all Aion chat channels. Requires AION_SESSION_TOKEN to be set.
Inputs: no named parameters.
aion_memory_browseA
Browse Aion's fact memory, optionally filtered by category. Requires AION_SESSION_TOKEN. Categories: preferences, family, work, hobbies, technical, goals, personal.
Inputs: category.
aion_queryA
Send a message to AION via its public REST API (port 3003). AION will respond with full memory context (facts + summaries) injected. Automatically falls back to a direct Ollama query (without memory) if the API is offline.
Inputs: message (required).
aion_vast_deployB
Deploy a new Vast.ai GPU instance via Aion. Requires AION_SESSION_TOKEN with vast/admin access.
Inputs: offer_id (required), image.
aion_vast_instancesA
List current Vast.ai GPU instances managed by Aion. Requires AION_SESSION_TOKEN with vast/admin access.
Inputs: no named parameters.
aion_vast_offersA
Browse available Vast.ai GPU offers. Requires AION_SESSION_TOKEN with vast/admin access.
Inputs: max_price.
aion_vast_stopA
Stop a running Vast.ai GPU instance. Requires AION_SESSION_TOKEN with vast/admin access.
Inputs: instance_id (required).
conversation_getA
Get the full message history of a specific AION conversation including all user and assistant turns.
Inputs: conversation_id (required).
conversation_listA
List recent AION conversations with titles, tool types, and auto-generated summaries.
Inputs: tool, limit.
conversation_searchA
Search through AION conversation titles and summaries for a keyword.
Inputs: query (required), limit.
fleet_reviewA
Fan out the same prompt (e.g. a diff to review, a design question) to multiple agents in parallel and return all responses side by side. Use for consensus code review or to get diverse model perspectives before deciding. Defaults to codex + agy (the reliable delegates).
Inputs: prompt (required), agents, machine, timeout_ms.
fleet_runA
Delegate a single prompt to another agent CLI (claude, codex, or agy) running headless on a fleet machine (wsl=local, draydev=dev VM, ec2=prod). Returns the agent's response. Use to farm a subtask to a different model, or to run work on a remote box. codex/agy can edit files and run commands in their sandbox; scope prompts accordingly.
Inputs: agent (required), prompt (required), cwd, model, +2 more.
fleet_statusA
Health-check the fleet: confirm each agent CLI (claude/codex/agy) runs headless & authenticated on each machine (wsl/draydev/ec2). Optionally narrow with machine/agent.
Inputs: agent, machine.
image_generateA
Generate an image using Fooocus (Stable Diffusion XL) running locally. Submits the job, polls until complete (up to 5 min), and returns the image URL/path.
Inputs: prompt (required), ratio, style, performance, +1 more.
jenn_get_memoriesA
Get memories about Jenn from AION's Jenn memory database. Optionally filter by category: biography, relationship, family, interests, life_events.
Inputs: category.
jenn_get_profileA
Get profile data about Jenn (Brian's wife) from AION's Jenn memory database.
Inputs: no named parameters.
kali_dir_enumA
Enumerate directories/files on a web server using gobuster with the common wordlist.
Inputs: url (required), wordlist.
kali_execA
Run an arbitrary shell command inside the Kali Docker container on Draydev. Use for tools not covered by other kali_* tools.
Inputs: command (required).
kali_nmapB
Run an nmap scan inside the Kali Docker container on Draydev. Returns port/service info.
Inputs: target (required), flags.
kali_statusA
Check that the Kali Docker container can be reached and return the Kali version / tool inventory.
Inputs: no named parameters.
kali_web_scanB
Run a Nikto web vulnerability scan against a URL using the Kali container.
Inputs: url (required).
kali_whoisB
Run a whois lookup for a domain or IP address via Kali.
Inputs: target (required).
memory_add_factA
Add a new fact to AION's long-term memory. This fact will be injected into every future AION conversation.
Inputs: fact (required), category (required).
memory_delete_factA
Delete a fact from AION's long-term memory by its ID. Use memory_get_facts first to find the ID.
Inputs: id (required).
memory_get_contextA
Get the full memory context that AION injects into its system prompt — the last 10 conversation summaries plus all user facts, formatted exactly as AION sees them. Useful for auditing what AION knows.
Inputs: no named parameters.
memory_get_factsA
Get user facts from AION's long-term memory. Facts are personal details learned from conversations: preferences, family, work, hobbies, technical skills, goals. Optionally filter by category.
Inputs: limit, category.
memory_searchA
Search AION's memory for a keyword. Searches across both user facts and conversation summaries. Returns matching facts and conversation metadata.
Inputs: query (required).
ollama_queryA
Send a raw prompt directly to Ollama, bypassing AION's persona and memory. Useful for model testing, one-off queries, or comparing model outputs.
Inputs: prompt (required), model, system, temperature.
openai_queryA
Send a raw prompt directly to OpenAI (GPT-4o by default), bypassing AION's persona and memory. Useful for one-off queries, comparing model outputs, or when Ollama is unavailable.
Inputs: prompt (required), model, system, temperature.
portal_healthA
Check the health of the SyncForge (MFT) portal — the Spring Boot service fronted by Nginx on port 8888. Returns status, version, and any reported subsystem health.
Inputs: no named parameters.
portal_nginx_checkA
Check if Nginx is responding on port 8888 (the public gateway for all Drayhub services). A quick connectivity probe to the root URL.
Inputs: no named parameters.
sonchat_activityA
Get SonChat activity log — join/leave/message events. Requires SONCHAT_ADMIN_KEY.
Inputs: limit.
sonchat_create_inviteB
Create a new SonChat invite token/link. Requires SONCHAT_ADMIN_KEY.
Inputs: label, max_uses, expires_in_days.
sonchat_healthA
Check if SonChat is online. Returns status and basic service info.
Inputs: no named parameters.
sonchat_invitesA
List all active invite tokens for SonChat. Requires SONCHAT_ADMIN_KEY.
Inputs: no named parameters.
sonchat_revoke_inviteA
Revoke/delete a SonChat invite token. Requires SONCHAT_ADMIN_KEY.
Inputs: token (required).
system_ollama_modelsA
List all locally available Ollama models with their sizes. Shows which models can be used with AION (AION_MODEL) and Nebula (NEBULA_MODEL).
Inputs: no named parameters.
system_statusA
Check the health of all Drayhub services: Ollama (LLM backend), Aion Flask API (port 5000), SonChat (port 3000), SyncForge/Portal via Nginx (port 8888), and Fooocus image generation. Returns online/offline status and latency for each.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 45 tools
Several tools have overlapping purposes, notably memory_get_facts and aion_memory_browse both retrieve facts with category filters, and multiple query tools (aion_query, aion_api_chat, ollama_query, openai_query) send prompts to different backends but could confuse an agent. Most other tools are distinct, but this ambiguity is significant.
Tool names generally follow a [domain]_[action] pattern with snake_case, but there are inconsistencies: memory_get_facts vs aion_memory_browse, aion_admin_profile_rebuild vs aion_admin_users, and some names are nouns (system_status) while others are verbs (fleet_run). The prefixes help but the pattern isn't uniform.
45 tools is far above the typical 3-15 range, making the server unwieldy. While it covers many subdomains, the tool count is excessive and would benefit from splitting into focused servers.
The server covers a broad range of operations for AION memory, conversations, system health, and various services, but there are notable gaps such as no memory update, no conversation delete, and limited SonChat operations beyond invites. Core workflows are present, but the surface is uneven.
Maintenance
Related MCP Connectors
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants full SSH/SFTP remote operations — session management, command execution, interactive shells, file transfers, port forwarding, and system diagnostics.2MIT
- AlicenseAqualityCmaintenanceMCP server for managing multiple SSH servers via AI assistants, offering tools for remote command execution, file operations, and system monitoring.1125 PyPI2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server enabling AI assistants to securely operate remote servers via persistent SSH sessions, with tools for command execution, file transfer, directory listing, and system monitoring.4MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for managing remote SSH servers, enabling AI agents to execute commands, transfer files, and perform deployment operations securely.MIT