Customer tenants
Explicit tenant allowlists and customer-scoped authorization. The starter lists locally authorized tenant IDs.
Local prototypeAn independently developed MCP server designed to connect ChatGPT and compatible AI clients with Microsoft 365 administration and Cloud Solution Provider workflows—securely, transparently and tenant by tenant.
These are the product areas in development—not a claim that Microsoft or distributor APIs are already connected. The starter registers eight read-only tools, with simulated connector-unavailable responses for seven.
Explicit tenant allowlists and customer-scoped authorization. The starter lists locally authorized tenant IDs.
Local prototypeSeat capacity, assigned products and SKU visibility through authorized Microsoft Graph access.
Integration plannedSubscription visibility, renewal oversight and commercial context where upstream APIs permit.
Integration plannedCorrelate distributor charges, subscriptions and customer invoicing without commingling tenants.
Integration plannedPermission-aware operations with customer consent and role checks separated from reseller status.
Integration plannedPlan safe user, application and policy reads; stage changes behind explicit approvals and audits.
Integration plannedStart with the repository source and a development environment. The scaffold requires a real token issuer configuration; its example values are nonfunctional placeholders. It never queries a Microsoft tenant.
Install Git and Node.js 24 or later, then clone the public repository. Alternatively download the source archive.
git clone https://github.com/skunkworks-africa/skunkworks-365-mcp.git cd skunkworks-365-mcp npm install --ignore-scripts
Copy the example environment and registry, then replace placeholder issuer, audience, JWKS URL and verified subject. Keep real values outside version control.
cp .env.example .env cp access-registry.example.json access-registry.json
Use set -a; . ./.env; set +a in a Unix shell to load settings, or your OS equivalent. Do not expose the server publicly.
Compile the TypeScript project, run the included tests and start the locally bound service after populating valid authentication settings.
npm run build npm test npm start
The local endpoint is http://127.0.0.1:3000/mcp. It requires a signed bearer token from your configured issuer.
All seven Microsoft/provider reads currently return connector_unavailable. Remote OAuth discovery, Graph adapters, distributor billing and production hardening are still on the roadmap.
Do not paste tenant credentials, access tokens or customer billing data into public GitHub issues.
The source targets MCP interoperability. ChatGPT cannot connect directly to a local-only HTTP service, and this documentation domain is not the MCP endpoint. Follow these steps only after the project has a separately hosted, authenticated HTTPS runtime.
/mcp), not this documentation website.Compatible clients will need an accessible MCP transport, appropriate bearer token or OAuth flow, and per-tenant authorization. Client configuration varies; a URL alone does not grant access to Microsoft 365.
transport: streamable HTTP endpoint: https://YOUR-DEPLOYMENT.example/mcp authorization: OAuth / valid bearer token status: not yet hosted
The URL above is an illustrative placeholder, not a working endpoint or a service hosted by Skunkworks.
MCP specification ↗The included tools are registered with the local MCP SDK. Only authorized tenant IDs come from the local registry. No live Microsoft, CSP or billing data is returned.
| MCP tool | Current behavior | State |
|---|---|---|
| tenants_list_authorized | Lists IDs in the local server-side access registry | Local implementation |
| users_list | Microsoft user connector unavailable | Planned |
| licenses_capacity | Microsoft license connector unavailable | Planned |
| subscriptions_list | Commercial subscription connector unavailable | Planned |
| billing_records | Distributor or billing connector unavailable | Planned |
| gdap_relationships | Delegated relationship connector unavailable | Planned |
| policies_list | Policy connector unavailable | Planned |
| applications_list | Application connector unavailable | Planned |
The repository contains the public prototype and documentation. Source downloads are snapshots of the latest main branch, not binary installers or a hosted service.
Clone or download the entire TypeScript prototype, security guidance, workflow and website source.
Read before using in any production tenant. Security and authorization controls are prerequisites, not optional enhancements.
No. This site hosts public documentation. The present prototype binds to localhost and has no live upstream adapters. A secured remote service must be deployed separately before ChatGPT can connect.
Not yet. Billing, distributor reconciliation and Microsoft Graph integrations are planned. The local billing tool intentionally returns a connector-unavailable response.
The project is designed to accommodate reseller-specific data paths, but Microsoft does not offer Partner Center API access to indirect resellers. Authorized distributor APIs or exports are needed for that commercial data.
No. The repository and docs are public, but production tenant identifiers, access tokens, customer records and billing data must stay private and server-side.