Obo
FreeNot checkedImplements the on-behalf-of flow with Entra ID to enable authorized calls to Microsoft Graph API via MCP tools.
About
Implements the on-behalf-of flow with Entra ID to enable authorized calls to Microsoft Graph API via MCP tools.
README
Blog post: https://baeke.info/2025/07/29/end-to-end-authorization-with-entra-id-and-mcp/
Instructions
1. Create and activate a Python virtual environment
python3 -m venv .venv
source .venv/bin/activate
2. Install dependencies
pip install -r requirements.txt
3. Set up environment variables
Create a .env file in the project root with the required Azure and API credentials (see example files for required variables).
4. Start the MCP server
python -m mcp.main
5. Run the MCP client
In a new terminal (with the virtual environment activated):
python mcp_client.py
Diagrams
sequenceDiagram
autonumber
participant User
participant Client
participant AzureAD as "Azure Entra ID"
participant MCP
participant MSGraph
User->>Client: Initiate Device Flow
Client->>AzureAD: Start Device Code Flow
AzureAD-->>Client: Device Code + Verification URL
Client->>User: Show Code + URL
User->>AzureAD: Authenticates via browser
AzureAD-->>Client: Returns Access Token (for MCP)
Client->>MCP: Call tool with Bearer Access Token
MCP->>AzureAD: OBO request for token to call MS Graph\n(include access token as assertion)
AzureAD-->>MCP: Returns new Access Token (for MS Graph)
MCP->>MSGraph: Call Graph API with new token
MSGraph-->>MCP: Graph data
MCP-->>Client: Return tool result
Installing Obo
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/gbaeke/mcp-oboFAQ
Is Obo MCP free?
Yes, Obo MCP is free — one-click install via Unyly at no cost.
Does Obo need an API key?
No, Obo runs without API keys or environment variables.
Is Obo hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Obo in Claude Desktop, Claude Code or Cursor?
Open Obo on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Obo with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
