intune-mcp
Provides read-only access to Microsoft Intune through the Microsoft Graph API, enabling MCP clients to query managed devices, apps, compliance policies, and configuration profiles.
README
intune-mcp
MCP server providing read-only access to Microsoft Intune via the Microsoft Graph API. Allows Claude (or any MCP client) to query managed devices, apps, compliance policies, and configuration profiles.
Prerequisites
- Node.js >= 18
- An Azure AD (Entra ID) app registration with delegated permissions
- Azure CLI (
az) for automated app registration (optional)
Quick Start
1. Register the Azure AD App
# Automated (requires Azure CLI + admin consent permissions)
.\scripts\register-app.ps1 -WriteEnv
# Or manually: create a public client app in Entra ID with these delegated permissions:
# - DeviceManagementManagedDevices.Read.All
# - DeviceManagementApps.Read.All
# - DeviceManagementConfiguration.Read.All
# Then create .env:
# AZURE_CLIENT_ID=<your-app-client-id>
# AZURE_TENANT_ID=<your-tenant-id>
2. Install and Build
npm install
npm run build
3. Authenticate
npm run auth
Follow the device code prompt to sign in with your Microsoft account.
4. Run
# Stdio mode (for local MCP clients like Claude Code)
npm start
# HTTP mode (for shared/remote deployment)
npm run start:http
Transport Modes
| Mode | Flag | Use Case |
|---|---|---|
| Stdio | (default) | Local, single-user, pre-authenticated |
| HTTP | --http or TRANSPORT=http |
Shared deployment, multi-session, per-session auth |
HTTP mode starts an Express server on port 3000 (configurable via --port or PORT env var) with endpoints:
| Path | Method | Purpose |
|---|---|---|
/mcp |
POST | MCP JSON-RPC (Streamable HTTP) |
/mcp |
GET | SSE stream for server notifications |
/mcp |
DELETE | Session termination |
/health |
GET | Health check (status, version, session count) |
Available Tools
| Category | Tool | Description |
|---|---|---|
| Auth | authenticate |
Device code sign-in (HTTP mode only) |
| Devices | list_devices |
List managed devices with OData filter |
| Devices | get_device |
Get device details by ID |
| Devices | search_devices |
Search by name, UPN, or serial number |
| Apps | get_device_installed_apps |
Detected apps on a device (beta API) |
| Apps | list_managed_apps |
LOB/store/web apps in Intune |
| Compliance | list_compliance_policies |
All compliance policies |
| Compliance | get_device_compliance_status |
Per-device compliance state |
| Compliance | get_noncompliant_devices |
Devices with noncompliant state |
| Compliance | get_policy_device_statuses |
Per-device status for a policy |
| Config Profiles | list_configuration_profiles |
Device configuration profiles |
| Config Profiles | get_profile_device_statuses |
Per-device status for a profile |
| Config Profiles | get_device_configuration_status |
Profile states on a device |
Required Permissions (Delegated)
DeviceManagementManagedDevices.Read.AllDeviceManagementApps.Read.AllDeviceManagementConfiguration.Read.All
Development
npm run dev # TypeScript watch mode
npm test # Run unit tests
npm run build # Compile to dist/
Live Validation
Test all 12 endpoints against a real Intune tenant (requires prior authentication):
node scripts/validate-tools.mjs
Architecture
MCP Client -> Transport (stdio | HTTP) -> McpServer -> Tool Handlers -> GraphClient -> Microsoft Graph API
- Auth: MSAL device code flow, file-based token cache at
~/.intune-mcp/token-cache.json - Logging: Structured JSON-lines at
~/.intune-mcp/logs/intune-mcp.log(10 MB rotation, 5 files) - Graph client: Automatic retry with exponential backoff (429, 401, 5xx),
Retry-Aftersupport, 30s request timeout, auto-pagination up to 10 pages - HTTP mode: Per-session auth, 30-minute session TTL, 100-session cap
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.