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: ForIT Microsoft Graph

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestsYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It states 'Build a Microsoft Graph JSON batch request body' but does not clarify whether the tool only builds the body or also sends the request. It lacks information about side effects, required permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the core purpose without extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's simplicity (1 parameter), the description lacks details about the return value (e.g., does it return a string or object?), does not explain output format, and provides no usage context. Without an output schema, more description is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-level information, and schema description coverage is 0%. Although the input schema includes property descriptions, the tool's text does not compensate, missing an opportunity to clarify parameter usage or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Build a Microsoft Graph JSON batch request body — combine up to 20 API calls into a single POST to /$batch' uses a specific verb (Build), identifies the resource (JSON batch request body), and distinguishes it from sibling tools like graph_explain_batch by indicating it constructs the actual request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you need to batch multiple Graph API calls, but it does not explicitly state when to use this tool versus alternatives like graph_explain_batch, nor does it provide exclusion criteria or prerequisites (e.g., authentication).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_batchA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

As an explanatory tool with no annotations, the description minimally implies no side effects but doesn't explicitly state it's read-only or provide behavioral details. Acceptable for a non-action tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence conveying key information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity and lack of output schema, the description fully covers its purpose and functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, per instructions baseline is 4. Description adds no parameter info but schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool explains Microsoft Graph JSON batching and its benefit of reducing round trips. It clearly distinguishes from sibling tools like graph_explain_pagination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like graph_explain_throttling or graph_explain_permissions. While purpose is clear, no context for usage decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_deltaA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It correctly indicates the tool is explanatory (non-destructive) but lacks details on any specific behavioral traits, such as whether it fetches data or just returns text.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear action ('Explain') and specific resource ('Microsoft Graph delta queries'). Front-loaded with the key benefit: 'get only changed items since last sync'. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless explanation tool with no output schema, the description fully covers what the tool does. It is complete given the tool's simplicity and context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has no parameters, so schema coverage is 100%. With 0 parameters, baseline is 4. Description does not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool explains Microsoft Graph delta queries for efficient change tracking. It distinguishes itself from sibling tools like graph_explain_pagination and graph_explain_odata by focusing on delta queries specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies the tool is for understanding delta queries but does not explicitly state when to use it versus alternatives like graph_explain_pagination or graph_explain_batch. No when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It states the action (explain and fix) and scope (specific error codes). Could mention that it returns textual guidance, but behavior is clear for a read-only explanation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys purpose and scope. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless explanation tool, description covers key purpose and examples. Lacks explicit mention of output format (e.g., returns text), but overall sufficient given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Baseline score applies. Description adds value by listing error codes, but there is no parameter elaboration needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool explains common Graph API error codes and fixes, listing specific codes. This distinguishes it from sibling explanation tools focusing on other topics (pagination, throttling, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when encountering listed error codes, but no explicit guidance on when to use alternatives like graph_explain_throttling or graph_explain_pagination. Lacks 'when not to use' comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_odataA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description accurately characterizes the tool as a read-only explainer. It does not disclose details like network usage or side effects, which are minimal for an informational tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that effectively communicates the tool's purpose. It is front-loaded with the action verb and includes specific details without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple informational tool with no parameters and no output schema, the description is nearly complete. It could mention the return format (e.g., text explanation), but that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter meaning. Baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it explains OData query parameters supported by Microsoft Graph and lists the specific parameters. This distinguishes it from sibling tools like graph_explain_pagination or graph_explain_throttling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide explicit guidance on when to use this tool versus alternatives. It implies usage for understanding OData parameters but lacks when/not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_paginationA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, but the description accurately conveys the tool's informational nature and lack of side effects. It transparently describes the content (pagination explanation) without misleading the agent. However, it could mention the return format or that it does not trigger API calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is clear, direct, and contains no extraneous words. It is front-loaded with the main purpose and is appropriately concise for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters or output schema, the description is sufficient to convey its purpose. However, it does not mention what the explanation looks like (e.g., text, format), which could be helpful but is not critical. The presence of multiple sibling explain tools suggests a bit more context could be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the schema coverage is trivially 100%. The description correctly omits parameter details since none exist. It adds no extra semantic information beyond the schema, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explains Microsoft Graph API pagination with specific detail about @odata.nextLink and iterating results. The verb 'explain' and resource are explicit, and it distinguishes from sibling explain tools by focusing on pagination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only states what the tool does, with no guidance on when to use it versus sibling tools like graph_explain_odata. It does not provide context for choosing this tool over alternatives, limiting its helpfulness for an AI agent deciding which tool to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_permissionsA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits beyond its explanatory purpose. It is a stateless knowledge tool, so side effects are not expected, but the description lacks details like whether it makes network calls or returns cached data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the key topic (permissions) and enumerates subtopics. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is sufficiently complete. It covers the main topics (delegated vs application, app registration, least-privilege) and is consistent with sibling explanation tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, and the description covers the purpose fully. Baseline of 4 applies as no parameters require additional semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it explains Microsoft Graph permission types, including delegated vs application, app registration, and least-privilege best practices. It distinguishes itself from siblings like graph_explain_pagination and graph_explain_throttling by focusing specifically on permissions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for understanding permission concepts, but does not explicitly state when to use this over other explanation tools like graph_explain_odata. However, the topic is sufficiently distinct from siblings, making the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

graph_explain_throttlingA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully conveys the tool's purpose as an informational explainer. It explicitly lists what it covers (causes, handling, limits), and while it doesn't state it has no side effects, its nature as a read-only explanation is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that immediately conveys the tool's purpose. No redundant information or filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is fully complete. It covers what the tool does and what topics it explains, providing all necessary context for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema coverage is 100% (empty). The description adds significant value by explaining the tool's purpose without needing to describe parameters. Baseline is 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explains Microsoft Graph throttling, including causes of 429 errors, handling Retry-After, and service-specific limits. It uses a specific verb-resource pair and is easily distinguishable from sibling tools like graph_explain_errors or graph_explain_pagination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for understanding throttling issues but does not explicitly state when to use this tool versus alternatives. It lacks guidance on exclusions or specific scenarios where other explain tools would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly states what the tool returns (categories, descriptions, load status). No annotations are provided, but the description sufficiently discloses the read-only nature of this tool. No hidden behaviors are implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence plus a concise list. It front-loads the main purpose and adds value with example categories. Every element earns its place without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, no output schema), the description fully explains what the tool returns and its purpose. No annotations are needed as the description provides sufficient behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema coverage is 100%. Per guidelines, baseline is 4 for 0-parameter tools. The description does not need to add parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available Microsoft Graph API resource categories with descriptions and load status, and enumerates examples. It distinguishes itself from sibling tools that focus on loading a specific category or other Graph API operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for discovering categories before using tools like load_category, but does not explicitly state when to use this tool instead of alternatives or provide exclusions. No guidance on prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory to load: users, files, mail, calendar, groups, notes, tasks, sites, or subscriptions

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral transparency. It reveals that the tool activates tools, can be called early, and supports multiple categories. However, it does not disclose whether the operation is idempotent, what side effects occur (e.g., resetting previous loads), or expected return behavior (e.g., success confirmation).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at 3 sentences. It front-loads the primary action, then usage timing, then category list, and ends with multi-load capability. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description covers core purpose, usage, and categories but omits expected return value or permission requirements. For a simple 1-parameter tool, this is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (parameter described). The description adds semantic context by listing each category and its associated Microsoft services (e.g., 'users' for Azure AD/Entra ID). This enriches the bare schema description beyond the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Activate Graph API tools for a resource category.' This specific verb+resource combination is distinct from sibling tools like list_categories or graph_explain_*, making it easy for an AI agent to select correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Call this as soon as the user's intent is clear — do not wait for confirmation.' It also notes that multiple categories can be loaded for tasks spanning areas. However, it does not explicitly contrast with list_categories, though the purpose is distinct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch terms, e.g. 'sharepoint list items', 'upload file onedrive', 'send email', 'find meeting times'

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It fails to state whether the operation is read-only, what authentication is required, or the format of results. This is a significant gap for an API search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with one sentence for the main purpose followed by a clear list of covered areas. It is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (searching many Graph APIs) and lack of output schema, the description omits details about the output format (e.g., list of endpoints, documentation snippets) and pagination. It covers scope well but lacks output context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'query' parameter. The description adds example terms but no extra syntax or constraints beyond what the schema provides, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Search Microsoft Graph REST API endpoints by keyword.' It enumerates covered services (SharePoint, OneDrive, Exchange, etc.), distinguishing it from sibling tools that explain concepts like pagination or throttling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by listing covered domains and example queries, implying the tool is used to discover API endpoints for a given task. However, it lacks explicit guidance on when not to use this tool or prerequisites (e.g., authentication).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updatesv0.1.11
    • First observedgraph_build_batch
    • First observedgraph_explain_batch
    • First observedgraph_explain_delta
    • First observedgraph_explain_errors
    • First observedgraph_explain_odata
    • First observedgraph_explain_pagination
    • First observedgraph_explain_permissions
    • First observedgraph_explain_throttling
    • First observedlist_categories
    • First observedload_category
    • First observedsearch_graph_api

TDQS

A3.8/5.0
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

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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/stubbedev/ms-graph-dev-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server