ms-graph-dev
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ms-graph-dev build a request to list all users in the tenant"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 all resource categories and which are currently loaded |
| Load tools for a category; triggers |
| Search Graph API endpoints by keyword; returns a |
| Build a valid |
| How |
|
|
| 429 handling, |
| Delta tokens, change tracking, initial sync vs incremental sync |
| JSON batching, |
| 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 |
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-mcpClaude 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-mcpOr 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 startFor live reload during development:
npm run devTest with MCP Inspector
npx @modelcontextprotocol/inspector npx -y @stubbedev/ms-graph-dev-mcpLicense
MIT
Available Tools
11 toolsgraph_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
Scored across 11 tools
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.
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.
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.
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
Related MCP Connectors
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Read email/chat conversations, messages, contacts and teams; draft, send and update threads.
AI-callable tools for API mocking, testing, monitoring, security, and automation.
Related MCP Servers
- AlicenseCqualityDmaintenanceUniversal Microsoft Graph API gateway providing access to 1000+ endpoints for managing Microsoft 365 services including Teams, SharePoint, Exchange, Intune, security, compliance, and Azure AD with dynamic tool generation and advanced features like batch operations and webhooks.55MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Microsoft Teams and Outlook through the Graph API, with available tools determined by the access token's granted scopes.MIT
- AlicenseNot gradedqualityBmaintenanceEnables 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 npmMIT