Version: 0.1.2
Microsoft Graph MCP Server + A2A Supervisor Agent
It includes a Model Context Protocol (MCP) server that wraps the Microsoft Graph API and an out-of-the-box Agent2Agent (A2A) Supervisor Agent.
Manage your Microsoft 365 tenant (Users, Groups, Calendars, Drive, etc.) through natural language!
This repository is actively maintained - Contributions are welcome!
- Comprehensive Graph API Coverage: Access thousands of Microsoft Graph endpoints via MCP tools.
- Supervisor-Worker Agent Architecture: A smart supervisor delegates tasks to specialized agents (e.g., Calendar Agent, User Agent).
- Secure Authentication: Supports OAuth, OIDC, and other authentication methods.
This server provides tools for a vast array of Microsoft Graph resources. Due to the large number of tools, they are organized by resource type.
Supported Resources (Partial List):
- Users:
get_user,update_user,list_user, etc. - Groups:
get_group,post_groups_group,list_members_group, etc. - Calendar:
get_calendar,post_events,list_calendarview, etc. - Drive/DriveItems:
get_drive,search_driveitem,upload_driveitem, etc. - Mail:
send_mail,list_messages, etc. - Directory Objects:
get_directoryobject,check_member_objects, etc. - Planner, OneNote, Teams, and more.
All tools generally follow the naming convention: action_resource (e.g., list_user, delete_group).
The MCP Server can be run in two modes: stdio (for local testing) or http (for networked access).
microsoft-agent --transport "stdio"microsoft-agent --transport "http" --host "0.0.0.0" --port "8000"AI Prompt:
Find who manages the 'Engineering' group and list its members.
AI Response:
I've found the 'Engineering' group.
Owners:
- Jane Doe (Head of Engineering)
Members:
- John Smith
- Alice Johnson
- Bob Williams
...
This package includes a powerful A2A Supervisor Agent that orchestrates interaction with the Microsoft MCP tools.
The system uses a Supervisor Agent that analyzes user requests and delegates them to domain-specific Child Agents.
---
config:
layout: dagre
---
flowchart TB
subgraph subGraph0["Agent System"]
S["Supervisor Agent"]
subGraph1["Specialized Agents"]
CA["Calendar Agent"]
GA["Group Agent"]
UA["User Agent"]
DA["Drive Agent"]
OA["...Other Agents"]
end
B["A2A Server"]
M["MCP Tools"]
end
U["User Query"] --> B
B --> S
S --Delegates--> CA & GA & UA & DA & OA
CA & GA & UA & DA & OA --> M
M --> api["Microsoft Graph API"]
S:::agent
B:::server
U:::server
CA:::worker
GA:::worker
UA:::worker
DA:::worker
OA:::worker
classDef server fill:#f9f,stroke:#333
classDef agent fill:#bbf,stroke:#333,stroke-width:2px
classDef worker fill:#dcedc8,stroke:#333
style B stroke:#000000,fill:#FFD600
style M stroke:#000000,fill:#BBDEFB
style U fill:#C8E6C9
style subGraph0 fill:#FFF9C4
- User sends a request (e.g., "Schedule a meeting with the Engineering team").
- Supervisor Agent identifies this as a calendar and group task.
- Supervisor delegates finding the group members to the Group Agent.
- Group Agent calls
list_members_grouptool and returns emails. - Supervisor delegates scheduling to the Calendar Agent with the retrieved emails.
- Calendar Agent calls
post_eventstool. - Supervisor confirms completion to the User.
| Short Flag | Long Flag | Description |
|---|---|---|
| -h | --help | Display help information |
| -t | --transport | Transport method: 'stdio', 'http', or 'sse' [legacy] (default: stdio) |
| -s | --host | Host address for HTTP transport (default: 0.0.0.0) |
| -p | --port | Port number for HTTP transport (default: 8000) |
| --auth-type | Auth type: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy' (default: none) | |
| ... | (See standard FastMCP auth flags) |
- Web UI:
http://localhost:9000/(if enabled) - A2A:
http://localhost:9000/a2a(Discovery:/a2a/.well-known/agent.json) - AG-UI:
http://localhost:9000/ag-ui(POST)
| Argument | Description | Default |
|---|---|---|
--host |
Host to bind the server to | 0.0.0.0 |
--port |
Port to bind the server to | 9000 |
--provider |
LLM Provider (openai, anthropic, google, huggingface) | openai |
--model-id |
LLM Model ID | qwen/qwen3-4b-2507 |
--mcp-url |
MCP Server URL | http://microsoft-agent:8000/mcp |
microsoft-agent-server --provider openai --model-id gpt-4o --api-key sk-... --mcp-url http://localhost:8000/mcpdocker build -t microsoft-agent .docker run -p 8000:8000 microsoft-agentdocker run -e CMD=agent-server -p 9000:9000 microsoft-agentdocker pull knucklessg1/microsoft-agent:latest
docker run -d \
--name microsoft-agent \
-p 8000:8000 \
-e HOST=0.0.0.0 \
-e PORT=8000 \
-e TRANSPORT=http \
knucklessg1/microsoft-agent:latestpython -m pip install microsoft-agentuv pip install microsoft-agent