Skip to main content
Glama

Microsoft Graph Dev MCP

An MCP server that helps you construct and validate Microsoft Graph REST API calls — no authentication required in the server itself.

Tools are loaded on demand by resource category. Ask about SharePoint and the sites tools appear. Ask about files and the OneDrive tools appear. The server starts lean and grows with your needs, and always knows the required permissions for every operation.

What it does

  • Constructs valid Graph API request URLs, methods, headers, and bodies

  • Validates required and optional parameters

  • Returns required Microsoft Graph permissions (delegated and application) for every operation

  • Returns ready-to-use fetch code examples

  • Links to official Microsoft documentation for every operation

  • Explains cross-cutting concepts: pagination, OData queries, throttling, delta sync, batching, and auth

  • Loads resource categories on demand — only what you need

Related MCP server: graph-mcp

Tools

Always available

These tools are loaded immediately — no setup required.

Tool

Description

list_categories

List all resource categories and which are currently loaded

load_category

Load tools for a category; triggers tools/list_changed

search_graph_api

Search Graph API endpoints by keyword; returns a suggestedCategory to load

graph_build_batch

Build a valid /$batch request body from up to 20 operations

graph_explain_pagination

How @odata.nextLink works; iterate all pages of results

graph_explain_odata

$filter, $select, $expand, $orderby, $count, $search with examples

graph_explain_throttling

429 handling, Retry-After, exponential backoff pattern

graph_explain_delta

Delta tokens, change tracking, initial sync vs incremental sync

graph_explain_batch

JSON batching, dependsOn, response handling

graph_explain_permissions

Delegated vs application permissions, consent flows, token acquisition

Resource categories (loaded on demand)

Category

Tools

What you get

users

8

Get, list, create, update, delete users; manager; direct reports; delta sync

files

11

OneDrive/SharePoint document library: list, get, upload (<4MB and resumable), create folder, delete, move, copy, search, download URL, delta sync

mail

9

List and get messages, send, create draft, reply, delete, move, list folders, delta sync

calendar

8

List, get, create, update, delete events; find meeting times; get free/busy schedule; delta sync

groups

8

List, get, create, delete groups; list and manage members and owners

notes

8

OneNote notebooks, sections, pages; create and read content

tasks

10

Planner plans and tasks (CRUD); Microsoft To Do lists and tasks

sites

12

SharePoint sites; lists; list items (CRUD); columns

subscriptions

5

Create, list, get, delete, and renew webhook change notification subscriptions

Example tool output

Every tool returns a structured object with the full request details and required permissions:

{
  "endpoint": "https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{listId}/items?expand=fields",
  "method": "GET",
  "headers": {
    "Authorization": "Bearer {token}"
  },
  "pathParams": { "siteId": "contoso.sharepoint.com,abc123", "listId": "list456" },
  "queryParams": { "expand": "fields" },
  "body": null,
  "description": "List items in list list456.",
  "docsUrl": "https://learn.microsoft.com/en-us/graph/api/listitem-list",
  "codeExample": "const response = await fetch('...', { method: 'GET', headers: { Authorization: 'Bearer {token}' } });\nconst data = await response.json();",
  "requiredPermissions": {
    "delegated": ["Sites.Read.All"],
    "application": ["Sites.Read.All"]
  },
  "notes": "Column values are returned under the 'fields' property. This request already includes ?expand=fields. Without it the items array would contain only metadata, not column data."
}

Installation

The recommended way to run this server is via npx — no local install needed.

npx -y @stubbedev/ms-graph-dev-mcp

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ms-graph-dev": {
      "command": "npx",
      "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Claude Code (CLI)

claude mcp add ms-graph-dev -- npx -y @stubbedev/ms-graph-dev-mcp

Or add to your project's .mcp.json:

{
  "mcpServers": {
    "ms-graph-dev": {
      "command": "npx",
      "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Cursor

Open Settings → MCP and add a new server, or edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "ms-graph-dev": {
      "command": "npx",
      "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ms-graph-dev": {
      "command": "npx",
      "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Zed

Edit your settings.json (open via Zed → Settings → Open Settings):

{
  "context_servers": {
    "ms-graph-dev": {
      "command": {
        "path": "npx",
        "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
      }
    }
  }
}

OpenCode

Edit ~/.config/opencode/config.json:

{
  "mcp": {
    "ms-graph-dev": {
      "type": "local",
      "command": ["npx", "-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Codex (OpenAI)

Edit ~/.codex/config.json:

{
  "mcpServers": {
    "ms-graph-dev": {
      "command": "npx",
      "args": ["-y", "@stubbedev/ms-graph-dev-mcp"]
    }
  }
}

Development

git clone https://github.com/stubbedev/ms-graph-dev-mcp.git
cd ms-graph-dev-mcp
npm install
npm run build
npm start

For live reload during development:

npm run dev

Test with MCP Inspector

npx @modelcontextprotocol/inspector npx -y @stubbedev/ms-graph-dev-mcp

License

MIT

Available Tools

11 tools
graph_build_batchB

Build a Microsoft Graph JSON batch request body — combine up to 20 API calls into a single POST to /$batch.

Inputs: requests (required).

graph_explain_batchA

Explain Microsoft Graph JSON batching — combine up to 20 API requests into a single HTTP call to reduce round trips.

Inputs: no named parameters.

graph_explain_deltaA

Explain Microsoft Graph delta queries for efficient change tracking — get only changed items since last sync rather than fetching everything.

Inputs: no named parameters.

graph_explain_errorsA

Explain common Microsoft Graph API error codes and how to fix them — 401, 403, 404, 429, 503, and Graph-specific error codes like InvalidAuthenticationToken, Forbidden, and ItemNotFound.

Inputs: no named parameters.

graph_explain_odataA

Explain OData query parameters supported by Microsoft Graph: $filter, $select, $expand, $orderby, $top, $count, $search.

Inputs: no named parameters.

graph_explain_paginationA

Explain how Microsoft Graph API pagination works with @odata.nextLink, and how to iterate all pages of results.

Inputs: no named parameters.

graph_explain_permissionsA

Explain Microsoft Graph permission types — delegated vs application, how to register an app, and least-privilege best practices.

Inputs: no named parameters.

graph_explain_throttlingA

Explain Microsoft Graph throttling: what causes 429 errors, how to handle Retry-After, and service-specific limits.

Inputs: no named parameters.

list_categoriesA

List all available Microsoft Graph API resource categories with descriptions and load status. Categories: users (Azure AD/Entra ID), files (OneDrive/SharePoint drives), mail (Exchange Online), calendar (Outlook), groups (M365/security groups), notes (OneNote), tasks (Planner/To Do), sites (SharePoint sites and lists), subscriptions (webhooks/change notifications).

Inputs: no named parameters.

load_categoryA

Activate Graph API tools for a resource category. Call this as soon as the user's intent is clear — do not wait for confirmation. Categories: 'users' (Azure AD/Entra ID user management), 'mail' (Exchange Online messages/folders), 'calendar' (Outlook events/scheduling), 'files' (OneDrive uploads/downloads/folders), 'sites' (SharePoint sites/lists/items), 'groups' (M365 and security groups), 'notes' (OneNote notebooks/pages), 'tasks' (Planner plans/tasks and To Do), 'subscriptions' (webhooks/change notifications). Multiple categories can be loaded — load all relevant ones when the task spans areas.

Inputs: category (required).

search_graph_apiA

Search Microsoft Graph REST API endpoints by keyword. Covers SharePoint sites and lists, OneDrive files, Exchange Online mail, Outlook calendar, Azure AD users, Microsoft 365 groups, Teams, Planner, OneNote, To Do, and webhook subscriptions.

Inputs: query (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: listing categories, loading them, searching API, and various explanatory tools cover different aspects (pagination, OData, throttling, delta, batch, permissions, errors). No two tools overlap in functionality.

    Naming Consistency5/5

    Tool names follow a consistent verb_prefix pattern: list_, load_, search_, graph_explain_, graph_build_. The convention is uniform and predictable across all 11 tools.

    Tool Count5/5

    11 tools is well-scoped for a developer assistant covering Microsoft Graph. It provides both utility (category management, search) and educational content (explanations) without being overwhelming.

    Completeness2/5

    The tool set lacks actual API execution tools like 'list_users' or 'send_mail'. While explanations are helpful, the server cannot perform real Graph operations, leaving significant gaps for an agent trying to interact with Microsoft Graph.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables a model to call the Microsoft Graph API directly through nine verb-shaped tools with per-user on-behalf-of authentication, so users can read, create, update, delete, search, batch, upload, download, and resolve attachments without server-side business logic or allow-lists.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables interacting with Microsoft 365 and Office services through the Microsoft Graph API, covering email, calendar, files, Teams, SharePoint, contacts, tasks, and related organizational resources with authentication, read-only, and tool-filtering options.
      88,164 npm
      MIT