Skip to main content
Glama
garland3

atlas-introspect-mcp

by garland3

atlas-introspect-mcp

An MCP server that lets ATLAS look at — and edit — itself:

surface

what you get

how

conversations

list, search, read full chat history

ATLAS REST API (read-only)

config/mcp.json

read, add/replace/delete a server, replace the file

on disk, atomic + backed up

workspaces

list, create, update, delete

ATLAS REST API

custom prompts

the per-user prompt library

ATLAS REST API

prompt files

the on-disk prompts/*.md defaults

on disk, backed up

Why it goes through the HTTP API

Chat history, workspaces, and prompts all live in one DuckDB file (data/chat_history.db). DuckDB is single-writer and the ATLAS process holds that write lock for its entire lifetime — a second process opening the file, even read-only, fails with a lock conflict. So this server asks ATLAS over loopback HTTP instead. That also means per-user scoping is enforced by ATLAS rather than reimplemented here.

Only mcp.json and prompts/*.md are touched directly; ATLAS has no API for either.

Being a separate process is what makes calling back into ATLAS safe: ATLAS awaits this server's stdio reply while its own event loop stays free to serve the request. An in-process tool doing the same thing would deadlock.

Related MCP server: Atlas MCP Server

Identity

Every query is scoped to one user, sent as X-User-Email. With DEBUG_MODE=true ATLAS honours that header; with it off, the header is what the auth proxy would have supplied, so the same flag works either way. The default is test@test.com — the test user ATLAS falls back to in debug mode, and therefore the owner of the conversations created through the UI on this host.

Install

git clone https://github.com/garland3/atlas-introspect-mcp
cd atlas-introspect-mcp
uv venv .venv
uv pip install -e ".[dev]" --python .venv/bin/python

Standalone check (with ATLAS running):

.venv/bin/atlas-introspect-mcp --list-tools
.venv/bin/python -c "
import asyncio; from fastmcp import Client
from fastmcp.client.transports import StdioTransport
async def m():
    async with Client(StdioTransport(command='.venv/bin/atlas-introspect-mcp', args=['--stdio'])) as c:
        print(await c.call_tool('atlas_status', {}))
asyncio.run(m())"

Register with ATLAS

Add to your ATLAS config/mcp.json (absolute paths — the command is looked up on the service manager's PATH, not your shell's), then restart ATLAS:

"atlas_introspect": {
  "command": [
    "/abs/path/to/atlas-introspect-mcp/.venv/bin/atlas-introspect-mcp",
    "--stdio",
    "--atlas-url", "http://127.0.0.1:8090",
    "--user", "test@test.com"
  ],
  "cwd": "/abs/path/to/atlas-introspect-mcp",
  "transport": "stdio",
  "groups": ["users"],
  "description": "Introspect and configure this ATLAS instance: browse chat history, read/edit config/mcp.json, manage workspaces and custom prompts.",
  "short_description": "ATLAS self-introspection",
  "compliance_level": "Public"
}

Add "--read-only" to the command for a view-only build; every mutating tool then refuses instead of writing.

Ports: stdio needs none. --transport http defaults to 8101. It refuses port 8080 outright — on a host running k3s, klipper-lb DNATs 8080 to Traefik including on 127.0.0.1, so a server bound there receives nothing and every request comes back as an empty 500 with no line in your log.

Configuration

Every flag has an environment-variable equivalent.

flag

env var

default

--atlas-url

ATLAS_URL

http://127.0.0.1:8090

--user

ATLAS_USER

test@test.com

--auth-header

ATLAS_AUTH_HEADER

X-User-Email

--atlas-home

ATLAS_HOME

~/ATLAS-GROUP/atlas-ui-3

--config-dir

ATLAS_CONFIG_DIR

<atlas-home>/config

--prompts-dir

ATLAS_PROMPTS_DIR

<atlas-home>/prompts

--timeout

ATLAS_TIMEOUT

30 seconds

--max-output-chars

ATLAS_MAX_OUTPUT

100000

--read-only

ATLAS_INTROSPECT_READ_ONLY

off

--transport

ATLAS_INTROSPECT_TRANSPORT

stdio

--port

ATLAS_INTROSPECT_PORT

8101 (http transport only)

Tools

Conversations (read-only)list_conversations, search_conversations, get_conversation, list_conversation_tags

config/mcp.jsonget_mcp_config, upsert_mcp_server, delete_mcp_server, replace_mcp_config

Workspaceslist_workspaces, create_workspace, update_workspace, delete_workspace

Custom promptslist_custom_prompts, get_custom_prompt, create_custom_prompt, update_custom_prompt, delete_custom_prompt

On-disk prompt fileslist_prompt_files, read_prompt_file, write_prompt_file

Healthatlas_status

Things that will bite

  • mcp.json edits are not live. ATLAS spawns stdio servers at startup. Every write tool says so in its result; apply with systemctl --user restart atlas or ./redeploy.sh --no-pull.

  • Editing your own entry works, but only takes effect on restart — at which point a broken entry means this server is gone and you cannot fix it from inside ATLAS. Backups land next to the file as mcp.json.bak-<stamp>.

  • upsert_mcp_server replaces an entry wholesale, it does not merge. Read it first, change it, send the whole thing back. Same for a workspace config and a prompt's content.

  • Conversation tools are read-only by design. There are delete endpoints in ATLAS; they are deliberately not exposed here.

  • write_prompt_file changes every chat in the instance. It backs up first and, like mcp.json, applies on the next restart.

Tests

.venv/bin/pytest

They cover the file-editing and validation logic (atomic write, backup, traversal refusal, lint warnings, read-only mode) against a temp directory — no running ATLAS needed.

Install Server
A
license - permissive license
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
    A
    quality
    B
    maintenance
    Enables MCP-based interaction with a local Hermes Agent installation, providing file read/search, skill management, and optional sandboxed write, terminal, and memory tools.
    9
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents and users to manage workspace files, monitor system metrics, take persistent notes, and retrieve weather data via MCP tools and resources.
  • A
    license
    A
    quality
    C
    maintenance
    Enables MCP-compatible clients to interact with AnythingLLM, providing tools for workspace management, chat and thread operations, document operations, vector search, and system inspection.
    34
    5
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    MCP sidecar for Hermes Agent exposing operator tools (cron, skills, config, workspace) with tiered read-only/operator/owner modes and dry-run by default for safe local development.
    43
    MIT

View all related MCP servers

Related MCP Connectors

  • Self-hostable team wiki; agents read & write it via MCP; Atlas turns your repo into a cited wiki.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only

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/garland3/atlas-introspect-mcp'

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