ms-graph-dev

ms-graph-dev

Helps construct and validate Microsoft Graph REST API calls with on-demand tool loading, providing request details, required permissions, and code examples for categories like users, files, mail, calendar, groups, notes, tasks, sites, and subscriptions.

Category
Visit Server

README

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

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured