jacklatrobe/GRAPH_API_MCP
If you are the rightful owner of GRAPH_API_MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A FastMCP server providing access to Microsoft Graph API documentation via the Model Context Protocol (MCP).
Graph API MCP Server
A FastMCP server that provides access to Microsoft Graph API documentation via the Model Context Protocol (MCP). The server runs in Docker and exposes Graph API documentation through a Streamable-HTTP MCP interface.
Features
- FastMCP Server: Implements MCP protocol using FastMCP with Streamable-HTTP transport
- Offline Documentation: Reads from local
graph_docs.jsonl
file for fast, offline access - Search Tools: Provides multiple tools for querying Graph API documentation
- Docker Support: Containerized deployment for easy setup and portability
- Documentation Importer: Script to parse and extract metadata from Microsoft Graph docs
MCP Tools
The server exposes the following tools via MCP:
1. searchDocs
Search documentation by keyword across titles, paths, and content.
Parameters:
query
(string): Search query stringmax_results
(int, optional): Maximum number of results (default: 10)
Example:
{
"query": "user",
"max_results": 5
}
2. getDocByPath
Get complete documentation for a specific file path.
Parameters:
path
(string): File path of the documentation
Example:
{
"path": "api-reference/v1.0/api/user-get.md"
}
3. getApiSchema
Get JSON schema for a specific API endpoint.
Parameters:
endpoint
(string): API endpoint path (e.g., "/users" or "users")
Example:
{
"endpoint": "/users"
}
4. getExamples
Get code examples for a specific topic or API.
Parameters:
topic
(string): Topic or API to get examples forlanguage
(string, optional): Filter by programming language
Example:
{
"topic": "users",
"language": "javascript"
}
Setup
Prerequisites
- Docker and Docker Compose
- Python 3.11+ (for running locally without Docker)
Quick Start with Docker
-
Clone the repository:
git clone https://github.com/jacklatrobe/GRAPH_API_MCP.git cd GRAPH_API_MCP
-
Build and run with Docker Compose:
docker-compose up --build
-
The server will be available at:
http://localhost:8000
Local Development
-
Install dependencies:
pip install -r requirements.txt
-
Run the server:
python server.py
Importing Documentation
To import documentation from the Microsoft Graph docs repository:
-
Clone the Microsoft Graph documentation:
git clone https://github.com/microsoftgraph/microsoft-graph-docs-contrib.git
-
Run the importer script:
python import_graph_docs.py microsoft-graph-docs-contrib graph_docs.jsonl
-
The script will:
- Parse all markdown files in the repository
- Extract metadata (title, version, HTTP methods, examples, permissions, schema)
- Output a normalized JSONL file
Data Format
The graph_docs.jsonl
file contains one JSON object per line with the following structure:
{
"path": "api-reference/v1.0/api/user-get.md",
"title": "Get user",
"version": "v1.0",
"http_methods": [
{"method": "GET", "path": "/users/{id}"}
],
"examples": [
{"language": "http", "code": "GET https://graph.microsoft.com/v1.0/users/{id}"}
],
"permissions": ["User.Read", "User.ReadBasic.All"],
"schema": {"@odata.type": "microsoft.graph.user", "id": "string"},
"content": "First 5000 characters of markdown content..."
}
Architecture
āāāāāāāāāāāāāāāāāāāāāāā
ā MCP Client ā
ā (LLM Agent) ā
āāāāāāāāāāāā¬āāāāāāāāāāā
ā MCP Protocol
ā (Streamable-HTTP)
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā FastMCP Server ā
ā (server.py) ā
āāāāāāāāāāāāāāāāāāāāāāā¤
ā - searchDocs ā
ā - getDocByPath ā
ā - getApiSchema ā
ā - getExamples ā
āāāāāāāāāāāā¬āāāāāāāāāāā
ā Read
ā¼
āāāāāāāāāāāāāāāāāāāāāāā
ā graph_docs.jsonl ā
ā (Documentation DB) ā
āāāāāāāāāāāāāāāāāāāāāāā
Development
Project Structure
GRAPH_API_MCP/
āāā server.py # FastMCP server implementation
āāā import_graph_docs.py # Documentation importer script
āāā graph_docs.jsonl # Sample documentation data
āāā requirements.txt # Python dependencies
āāā Dockerfile # Docker image definition
āāā docker-compose.yml # Docker Compose configuration
āāā README.md # This file
Running Tests
The server includes sample data in graph_docs.jsonl
. You can test the tools by:
- Starting the server
- Connecting with an MCP client
- Calling the available tools
License
MIT License - See file for details
Acknowledgments
- Built with FastMCP
- Documentation from Microsoft Graph API