Minimal Python MCP server for authenticated Microsoft Graph API calls
graph-mcp
Minimal Python MCP server that exposes one tool, graphapi, for authenticated Microsoft Graph API calls through a RequestRocket proxy.
Setup
pip install -r requirements.txt
Copy .env.example to config.env or .env in this directory (same folder as server.py) and set:
GRAPH_API_REQUESTROCKET_URL— proxy base URL (no trailing slash required; it is stripped)GRAPH_API_REQUESTROCKET_KEY— authorization value sent as theAuthorizationheader
Alternatively, set those variables in your environment. To load credentials from another file (for example Cowork’s config.env), set:
export DOTENV_PATH=/path/to/config.env
Run
python server.py
The server uses stdio transport (FastMCP default). On startup it logs the proxy URL and tool signature to stdout.
Tool: `graphapi`
| Argument | Description |
|---|---|
method |
GET, POST, PATCH, PUT, or DELETE |
path |
Graph path such as /me/messages. A leading https://graph.microsoft.com/v1.0 prefix is stripped. |
params |
Optional query parameters (e.g. {"$top": 10}) |
body |
Optional JSON body for POST / PATCH / PUT |
Successful responses return {"status": <code>, "data": ...} where data is parsed JSON or plain text if the body is not JSON. HTTP errors return {"status": <code>, "error": "<body>"}. Connection failures return {"error": "<message>"}.
Cowork (local MCP)
Add a local MCP connector:
python /path/to/graph-mcp/server.py
If credentials live elsewhere, set DOTENV_PATH to that file, for example:
DOTENV_PATH=/Users/you/project/config.env
Requirements
See requirements.txt: mcp[cli], httpx, python-dotenv, pydantic.
Tools (1)
graphapiExecutes authenticated Microsoft Graph API calls using standard HTTP methods.Environment Variables
GRAPH_API_REQUESTROCKET_URLrequiredProxy base URL for Microsoft Graph API requestsGRAPH_API_REQUESTROCKET_KEYrequiredAuthorization value for the proxy headerDOTENV_PATHOptional path to a custom environment fileConfiguration
{"mcpServers": {"graphapi": {"command": "python", "args": ["/path/to/graph-mcp/server.py"], "env": {"GRAPH_API_REQUESTROCKET_URL": "your-proxy-url", "GRAPH_API_REQUESTROCKET_KEY": "your-key"}}}}