# thelobbi/claude-m architecture

> Architecture diagram of the GitHub repository thelobbi/claude-m, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/thelobbi/claude-m
- Repository: https://github.com/thelobbi/claude-m

## Overview

Claude-m is a Claude Code marketplace for Microsoft cloud skill packs, with a TypeScript MCP host exposing selected plugin tools. The main workflow is engineer → Claude Code → marketplace/plugin tools → Microsoft services. The repository also contains a separate Microsoft Graph MCP server with broad M365 tools, authentication, change notifications, and auditing. README capability areas are represented at a high level; plugin skill-pack internals are not present in the supplied tree, so their wiring is not inferred.

Main entry points: [`src/index.ts`](https://github.com/thelobbi/claude-m/blob/main/src/index.ts) (Claude-m marketplace), [`ms-graph-omni/src/server.ts`](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/server.ts) (Graph MCP server), [`ms-graph-omni/src/streaming/webhookReceiver.ts`](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/streaming/webhookReceiver.ts) (Change notifications), [`ms-graph-omni/src/auth/resource-client.ts`](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/auth/resource-client.ts) (Resource API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_marketplace["Marketplace runtime"]
  node_marketplace["Claude-m marketplace<br/>[index.ts]"]
  node_registry["Plugin registry<br/>[registry.ts]"]
  node_base["Plugin base<br/>[base.ts]"]
end

subgraph group_adapters["Plugin adapters"]
  node_azure["Azure adapter<br/>[azure.ts]"]
  node_excel["Excel adapter<br/>[excel.ts]"]
  node_outlook["Outlook adapter<br/>[outlook.ts]"]
  node_sharepoint["SharePoint adapter<br/>[sharepoint.ts]"]
  node_teams["Teams adapter<br/>[teams.ts]"]
end

subgraph group_graphserver["Graph MCP server"]
  node_graphmcp["Graph MCP server<br/>[server.ts]"]
  node_toolregistry["Graph tool registry<br/>[index.ts]"]
end

subgraph group_graphfeatures["Graph capabilities"]
  node_m365tools["M365 productivity tools"]
  node_cloudtools["Cloud and identity tools"]
  node_analytics["Search and analytics<br/>[search.ts]"]
  node_streaming["Change notifications<br/>[webhookReceiver.ts]"]
  node_feedstore[("Change-feed buffer<br/>[changeFeed.ts]")]
end

subgraph group_operations["Auth and observability"]
  node_auth["Authentication clients"]
  node_resourceclient["Resource API client<br/>[resource-client.ts]"]
  node_observability["Audit and latency"]
end

node_engineer(("Engineer or analyst"))
node_claude(("Claude Code"))
node_azureapi["Azure Resource Manager"]
node_graphapi["Microsoft Graph"]

node_engineer -->|"prompts"| node_claude
node_claude -->|"installs plugins"| node_marketplace
node_marketplace -->|"loads"| node_registry
node_marketplace -->|"dispatches tools"| node_azure
node_marketplace -->|"dispatches tools"| node_excel
node_marketplace -->|"dispatches tools"| node_outlook
node_marketplace -->|"dispatches tools"| node_sharepoint
node_marketplace -->|"dispatches tools"| node_teams
node_azure -->|"calls ARM"| node_azureapi
node_excel -->|"returns results"| node_marketplace
node_sharepoint -->|"returns results"| node_marketplace
node_graphmcp -->|"registers tools"| node_toolregistry
node_graphmcp -->|"wraps calls"| node_observability
node_graphmcp -->|"reads notifications"| node_feedstore
node_graphmcp -->|"serves MCP"| node_claude
node_streaming -->|"records events"| node_feedstore
node_streaming -.->|"receives notifications"| node_graphapi
node_analytics -->|"queries search"| node_graphapi
node_resourceclient -->|"gets resource token"| node_auth
node_resourceclient -->|"sends resource requests"| node_graphapi
node_m365tools -->|"uses Graph"| node_graphapi
node_cloudtools -->|"uses Graph"| node_graphapi

click node_marketplace "https://github.com/thelobbi/claude-m/blob/main/src/index.ts"
click node_registry "https://github.com/thelobbi/claude-m/blob/main/src/registry.ts"
click node_base "https://github.com/thelobbi/claude-m/blob/main/src/plugins/base.ts"
click node_azure "https://github.com/thelobbi/claude-m/blob/main/src/plugins/azure.ts"
click node_excel "https://github.com/thelobbi/claude-m/blob/main/src/plugins/excel.ts"
click node_outlook "https://github.com/thelobbi/claude-m/blob/main/src/plugins/outlook.ts"
click node_sharepoint "https://github.com/thelobbi/claude-m/blob/main/src/plugins/sharepoint.ts"
click node_teams "https://github.com/thelobbi/claude-m/blob/main/src/plugins/teams.ts"
click node_graphmcp "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/server.ts"
click node_toolregistry "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/tools/index.ts"
click node_m365tools "https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/tools"
click node_cloudtools "https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/tools"
click node_analytics "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/tools/search.ts"
click node_streaming "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/streaming/webhookReceiver.ts"
click node_feedstore "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/streaming/changeFeed.ts"
click node_auth "https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/auth"
click node_resourceclient "https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/auth/resource-client.ts"
click node_observability "https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/observability"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_marketplace,node_registry,node_base toneBlue
class node_azure,node_excel,node_outlook,node_sharepoint,node_teams toneAmber
class node_graphmcp,node_toolregistry toneMint
class node_m365tools,node_cloudtools,node_analytics,node_streaming,node_feedstore toneRose
class node_auth,node_resourceclient,node_observability,node_engineer,node_claude,node_azureapi,node_graphapi toneIndigo
```

## Components

### Marketplace runtime

- [Claude-m marketplace](https://github.com/thelobbi/claude-m/blob/main/src/index.ts): `src/index.ts`
- [Plugin registry](https://github.com/thelobbi/claude-m/blob/main/src/registry.ts): `src/registry.ts`
- [Plugin base](https://github.com/thelobbi/claude-m/blob/main/src/plugins/base.ts): `src/plugins/base.ts`

### Plugin adapters

- [Azure adapter](https://github.com/thelobbi/claude-m/blob/main/src/plugins/azure.ts): `src/plugins/azure.ts`
- [Excel adapter](https://github.com/thelobbi/claude-m/blob/main/src/plugins/excel.ts): `src/plugins/excel.ts`
- [Outlook adapter](https://github.com/thelobbi/claude-m/blob/main/src/plugins/outlook.ts): `src/plugins/outlook.ts`
- [SharePoint adapter](https://github.com/thelobbi/claude-m/blob/main/src/plugins/sharepoint.ts): `src/plugins/sharepoint.ts`
- [Teams adapter](https://github.com/thelobbi/claude-m/blob/main/src/plugins/teams.ts): `src/plugins/teams.ts`

### Graph MCP server

- [Graph MCP server](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/server.ts): `ms-graph-omni/src/server.ts`
- [Graph tool registry](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/tools/index.ts): `ms-graph-omni/src/tools/index.ts`

### Graph capabilities

- [M365 productivity tools](https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/tools): `ms-graph-omni/src/tools`
- [Cloud and identity tools](https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/tools): `ms-graph-omni/src/tools`
- [Search and analytics](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/tools/search.ts): `ms-graph-omni/src/tools/search.ts`
- [Change notifications](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/streaming/webhookReceiver.ts): `ms-graph-omni/src/streaming/webhookReceiver.ts`
- [Change-feed buffer](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/streaming/changeFeed.ts): `ms-graph-omni/src/streaming/changeFeed.ts`

### Auth and observability

- [Authentication clients](https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/auth): `ms-graph-omni/src/auth`
- [Resource API client](https://github.com/thelobbi/claude-m/blob/main/ms-graph-omni/src/auth/resource-client.ts): `ms-graph-omni/src/auth/resource-client.ts`
- [Audit and latency](https://github.com/thelobbi/claude-m/tree/main/ms-graph-omni/src/observability): `ms-graph-omni/src/observability`

### Other components

- **Engineer or analyst**
- **Claude Code**
- **Azure Resource Manager**
- **Microsoft Graph**

## Connections

- Engineer or analyst → Claude Code: prompts
- Claude Code → Claude-m marketplace: installs plugins
- Claude-m marketplace → Plugin registry: loads
- Claude-m marketplace → Azure adapter: dispatches tools
- Claude-m marketplace → Excel adapter: dispatches tools
- Claude-m marketplace → Outlook adapter: dispatches tools
- Claude-m marketplace → SharePoint adapter: dispatches tools
- Claude-m marketplace → Teams adapter: dispatches tools
- Azure adapter → Azure Resource Manager: calls ARM
- Excel adapter → Claude-m marketplace: returns results
- SharePoint adapter → Claude-m marketplace: returns results
- Graph MCP server → Graph tool registry: registers tools
- Graph MCP server → Audit and latency: wraps calls
- Graph MCP server → Change-feed buffer: reads notifications
- Graph MCP server → Claude Code: serves MCP
- Change notifications → Change-feed buffer: records events
- Change notifications → Microsoft Graph: receives notifications
- Search and analytics → Microsoft Graph: queries search
- Resource API client → Authentication clients: gets resource token
- Resource API client → Microsoft Graph: sends resource requests
- M365 productivity tools → Microsoft Graph: uses Graph
- Cloud and identity tools → Microsoft Graph: uses Graph
