graph-atlas-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GRAPH_ATLAS_DB | No | Path to the SQLite database file. If not provided, the server looks for ~/.graph-atlas-mcp/graph-atlas.db (auto-downloaded from the latest GitHub Release once one exists), then falls back to ./graph-atlas.db in the current working directory. | |
| OPENAI_API_KEY | No | Optional OpenAI API key. Used for semantic search in hybrid mode (keyword + semantic). If not set, search_changes degrades to keyword-only. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_changesA | Search Microsoft Graph API change history using natural-language or keyword queries across all sources (seed-entra-ms, backfill-graph-changelog, self). Hybrid BM25-style keyword + semantic search, fused via Reciprocal Rank Fusion; degrades to keyword-only without OPENAI_API_KEY configured. |
| get_recent_changesC | Structured, filterable query over the change history — filter by date, endpoint, object type/name, change kind, and source. |
| get_object_historyA | Full change history for a specific Graph object type, oldest to newest — "what has happened to X over time?" |
| get_change_detailA | Full detail for a single change record, including related changes from the same snapshot/object, and permission context (required permissions, admin consent, grantable-by roles — see get_permission_context for the heuristic caveat). |
| get_snapshot_summaryA | Snapshot metadata — entity/property/enum counts, CSDL size, change count. "How big is Graph API now?" and trend analysis. |
| get_permission_contextA | Two modes. (1) Pass object_name: which permissions touch a Graph object, what each unlocks, who can grant them, and its recent changes. (2) Pass permission_name alone (e.g. when comparing "is there a less-privileged alternative to Synchronization.ReadWrite.All"): that permission's detail plus other permissions with overlapping resource scope, annotated with resource_count and is_ownership_scoped (OwnedBy-suffixed permissions restrict to owned objects only) so you can reason about the tradeoff yourself — this does NOT rank or claim to compute "least privilege" automatically, since resource-type count and instance-level ownership scoping are different privilege axes. Role<->permission cross-referencing is a heuristic correlation (no official Microsoft crosswalk exists) — treat "grantable_by" as a strong signal to verify, not ground truth. |
| get_server_infoA | About this server — running version, its changelog entry, data freshness (latest snapshots and newest detected changes), and how releases work: the snapshot DATABASE is re-released daily as calendar-tagged GitHub releases (e.g. v2026.08.07) when changes are detected, while the SERVER code ships on npm with semver versions (e.g. v0.1.0). Call for "what version is this?", "what's new in the latest Graph Atlas release?", or to check whether the local data is current. |
| schema_change_reportA | Structured JSON of a schema/permission/role graph (nodes + edges) with change-activity counts, for reasoning over — no UI. view="entity": Graph entity types (focus_object = an entity like "group"). view="permission": permission scopes and the entities they touch (focus_object = a permission like "User.Invite.All"). view="role": Entra roles, the permissions they grant, and the entities those touch (focus_object = a role like "User Administrator") — use this to compare what different roles can actually do. Omit focus_object for an overview of the most consequential entities/permissions/roles. Same data as visualize_schema_graph, without rendering it. |
| visualize_schema_graphA | Open the interactive Graph Atlas visualizer — a force-directed schema graph the user can search, expand node-by-node, and pivot across views. Pick the view that puts the pivot object in the right place for the question: "entity" for the Graph schema (nodes = entity types, colored by distance from the focus, with recent-change activity badges; edges = navigation properties/inheritance) — focus_object = an entity like "group". "permission" for a permission scope and the entities it touches plus the roles granting it — focus_object = a permission like "User.Invite.All". "role" for an Entra role, the permissions it grants, and the entities those touch — focus_object = a role like "User Administrator". Omit focus_object for an overview of the most consequential nodes. The user can continue exploring in the UI (expand_schema_node powers that); use schema_change_report for the same data without rendering. |
| expand_schema_nodeA | Expand one node of the schema graph and return a {nodes, edges, message} delta to merge into the canvas — the interactive companion to visualize_schema_graph. kind="EntityType" with view="entity" returns the schema neighborhood (navigation targets, base type, referrers); with view="permission" the permissions that touch the entity; with view="role" those permissions plus the roles granting them (heuristic role map). kind="Permission" returns touched entities plus the roles granting it. kind="Role" returns granted permissions and their entities. |
| search_schema_objectsA | Name search across Graph entity types, permission scopes, and Entra roles — resolves fuzzy names to canonical node ids for visualize_schema_graph / expand_schema_node. Returns ranked candidates {id, kind, label, sub}; prefix matches rank first. |
| get_node_timelineA | Compact newest-first change timeline for one schema object, sized for the visualizer detail panel. App-facing companion to get_object_history. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Graph Atlas | Interactive Microsoft Graph schema visualizer |
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/darrenjrobinson/graph-atlas-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server