Labsco
MCP SERVER

Lokka

by merill

Ask questions about your Microsoft 365 and Azure tenant in plain language — and put a policy in front of the model before it starts writing to it.

Office Suites & Cloud File StorageVerified
Summary
One tool covers all of Graph, so the limits have to come from somewhere else — and here they do.

Because the surface is a path and a method rather than a fixed tool list, coverage is never the problem and blast radius is: guardrails answer that directly by restricting which methods, which API paths and even which resource ids a model may touch, and lokka-get-guardrails lets you read the policy in force before trusting a session. Two practical notes: Graph calls default to the beta version, which is worth pinning with USE_GRAPH_BETA=false on a production tenant, and permission errors are recoverable in place — get-auth-status shows the scopes you hold and add-graph-permission asks for more.

What it is

A single call onto the Microsoft Graph and Azure Resource Management APIs, wrapped in tenant connection management and a guardrails policy. Anything Graph can reach — Entra, Intune, Teams, SharePoint — is reachable by path, and Azure resources come through the same tool.

What you get
  • Lokka-Microsoft takes apiType (graph or azure), a path such as /users or /subscriptions, an HTTP method and a body — so any endpoint is one call, not a missing feature
  • fetchAll pages through a collection, queryParams carries $filter, $select and friends, and consistencyLevel covers the advanced Graph queries that need it
  • graphApiVersion selects beta or v1.0 per request, and USE_GRAPH_BETA=false pins every call to v1.0 regardless
  • Azure calls take subscriptionId and the apiVersion that Resource Management requires
  • Guardrails are a real policy: which HTTP methods are allowed, allow and deny rules on API paths, and per-resource id allowlists — readable at any time with lokka-get-guardrails
  • Several tenants signed in at once — list the connections, see which is active, and switch by naming any identifying fragment
  • get-auth-status reports the authentication mode and the Graph scopes the current session actually holds, and add-graph-permission requests more through a fresh interactive sign-in
  • set-access-token hands the server a token the client obtained itself, for setups where sign-in belongs to the client
  • Companion UIs open on request: the Graph explorer, the connections manager, the permissions manager, guardrails, settings and a help tour
Requirements

A Microsoft Entra tenant and an account with the Graph or Azure permissions for whatever you ask it to do — Lokka can only do what those permissions allow. Node v22.10 or higher, started as npx -y @merill/lokka. Interactive sign-in with the default Lokka app needs no variables; a custom app takes TENANT_ID, CLIENT_ID and USE_INTERACTIVE=true, with REDIRECT_URI defaulting to http://localhost:3000. App-only runs either on CLIENT_SECRET, or on USE_CERTIFICATE=true with CERTIFICATE_PATH pointing at a PEM file and CERTIFICATE_PASSWORD if it is encrypted. USE_CLIENT_TOKEN=true switches to tokens supplied by the client instead.

Setup effort

One command — npx -y @merill/lokka