@pbhamri/quartermaster-mcp
v0.6.1
Published
MCP server that seeds any repo with a customizable PM kit. Any PM, any product — connect YOUR GitHub, ADO, Kusto, IcM. 19 tools: scaffolding, repo-read, onboarding, custom profile creation, self-agent auto-reply. Never ships personal data — profiles are t
Maintainers
Readme
@pbhamri/quartermaster-mcp
MCP server that seeds any repo with the Quartermaster PM kit + provides read-only repo access + first-run onboarding + Teams self-agent auto-reply surface. No folder dependency. No installer script. Callable from any Copilot / Claude / Cursor session against any cwd.
Version: 0.6.0 | Transport: stdio | Tools: 19 | Profiles: 6 (bundled) + custom
Built in response to PM Architect input (2026-05-29):
"It would be great if this can be an MCP server that seeds any repo. Then we are not tied to a folder or repo."
What it does
Exposes 19 tools over MCP stdio, organised by workflow:
Seeding & Scaffolding (v0.1.0+)
| Tool | Purpose |
|---|---|
| qm_list_profiles | List the 6 Purview product profiles (DLM, Billing, CC, Records, eDiscovery, Insider Risk) |
| qm_seed_repo | Seed any repo with AGENTS.md, copilot-instructions.md, .quartermaster/profile.json, /npf + /cxe prompts, command-center seed. Idempotent. Supports dryRun: true. |
| qm_audit_repo | Score any repo /6 against the Quartermaster readiness checklist |
| qm_install_prompts | Install /npf + /cxe to ~/.github/prompts |
| qm_apply_profile | Persist a profile to ~/.copilot/paved-path/profile.json |
| qm_telemetry | Read recent paved-path telemetry events (type filter, limit) |
| qm_emit_pr | Seed + open a labeled PR via gh CLI in one call |
Read-Only Repo Access (v0.3.0+)
| Tool | Purpose |
|---|---|
| repo_overview | Server metadata: repo_root, framework_count, exclusion rules |
| repo_list_dir | List files/folders under repo_root (denies .git, node_modules, secrets) |
| repo_read_file | Read file content (200 KB cap; secrets/eml/browser sessions blocked) |
| repo_search | Case-insensitive regex search across .md/.js/.ts/.json/.yml/.ps1/.html/.txt |
| repo_recent_sessions | Last N entries from knowledge/sessions.jsonl (cross-model memory) |
Onboarding & Customization (v0.4.0+)
| Tool | Purpose |
|---|---|
| qm_welcome | First-run welcome + 3-step guide for new peers |
| qm_personalize | Interactive Q&A → writes a personalised connect-db.json. Never inherits package author's data. |
| qm_skills_for_pm | Curated daily-use catalog: Monday self-assess, midweek PRDs, Friday strategy, sharing |
| qm_init_profile | Create a custom product profile from scratch — any product, any org. Generates a reusable .json profile with ADO/Kusto/IcM/GitHub connections. |
Self-Agent / Teams Auto-Reply (v0.5.0+)
| Tool | Purpose |
|---|---|
| qm_autoreply_compose | Compose a draft Teams auto-reply using second-brain + relationship classifier + failure-mode gates |
| qm_autoreply_set_presence | Set mock presence state (Available/Away/DND/OOO) — P0 skeleton, real Graph swap is P1 |
| qm_autoreply_failure_modes | List named embarrassment-avoidance rules (severity, action, audience) |
| qm_autoreply_drafts | List recent auto-reply drafts under ~/.copilot/autoreply/drafts/ |
Install
From npm (recommended for peers)
npm install -g @pbhamri/quartermaster-mcpFrom source (contributor)
git clone https://github.com/pbhamri_microsoft/Quartermaster.git
cd Quartermaster/source/quartermaster-mcp
npm installRegister with your MCP client
Copilot CLI / VS Code — add to ~/.copilot/mcp.json or .vscode/mcp.json:
{
"servers": {
"quartermaster": {
"type": "stdio",
"command": "npx",
"args": ["@pbhamri/quartermaster-mcp"]
}
}
}Claude Desktop — add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"quartermaster": {
"command": "npx",
"args": ["@pbhamri/quartermaster-mcp"]
}
}
}From source (dev):
{
"servers": {
"quartermaster": {
"type": "stdio",
"command": "node",
"args": ["<path-to-clone>/source/quartermaster-mcp/bin/server.js"]
}
}
}Reload your MCP client. Then: "use quartermaster-mcp to seed this repo with purview-dlm".
Usage examples
# Onboarding (first time)
"Run qm_welcome."
"Personalize my Quartermaster setup."
# Create YOUR product profile (not Purview? no problem)
"Create a new profile for my product area."
"I work on Microsoft Intune — set up a Quartermaster profile."
# Seeding
"List Quartermaster profiles."
"Dry-run seed C:\repos\new-repo with purview-cc."
"Seed this repo with purview-ediscovery."
"Seed this repo and open a draft PR."
# Auditing
"Audit C:\repos\billing-team-repo against Quartermaster readiness."
# Repo exploration
"Show me the repo overview."
"Search for 'retention policy' in this repo."
"Read competitive-intel-agent/agent.js."
# Self-agent
"Compose an auto-reply for this message from my manager."
"Show my failure mode rules."
"List recent auto-reply drafts."
# Telemetry
"Show my last 20 paved-path events."What gets seeded
In the target repo (all idempotent — existing files are never overwritten):
AGENTS.md— repo-specific operating manual.github/copilot-instructions.md— AI assistant conventions + CXE pillars.quartermaster/profile.json— full ADO/Kusto/IcM/directives/KPIs snapshot.quartermaster/command-center-seed.json— KPIs + quick-links for dashboards.github/prompts/npf.prompt.md— NPF self-score (calibrated to IC level).github/prompts/cxe.prompt.md— EVP Security CXE pillar audit
Profiles (6 bundled)
| Profile ID | Product Area |
|---|---|
| purview-dlm | Data Lifecycle Management |
| purview-billing | Purview Billing |
| purview-cc | Communication Compliance |
| purview-records | Records Management |
| purview-ediscovery | eDiscovery |
| purview-insider-risk | Insider Risk Management |
Each profile contains: ADO org/project/area-path, Kusto cluster/database/tables, IcM service, default directives, KPI targets, recommended MCP servers, and quick-links.
Architecture
bin/server.js ← Single-file MCP server (stdio transport)
resources/
profiles/ ← 6 product profile JSONs + _schema.json
prompts/ ← /npf + /cxe prompt templates
connect-db.template.json ← Scaffold for qm_personalize
mcp-servers/ ← Reference MCP configs for peersSecurity & Privacy
- Read-only repo access denies:
.git,node_modules,.env, browser sessions,*.eml,*token*,*secret*,*credentials*,*.pem,*.key - No credentials in package — author's Connect data, ADO tokens, Outlook sessions, and personal NPF history are never bundled
- Telemetry is opt-out — set
QM_METRICS_OPT_OUT=1to disable. Events use anonymous machine hash (12-char SHA-256 of platform:arch:cpus:totalmem), never username or hostname - Self-agent skeleton lives at
~/.copilot/self-agent/(outside this package); tools degrade gracefully if absent
Environment Variables
| Variable | Default | Purpose |
|---|---|---|
| QM_REPO_ROOT | process.cwd() | Override repo root for read-only access |
| QM_CONNECT_DB | ~/.quartermaster/connect-db.json | Connect tracker path for qm_personalize |
| QM_METRICS_FILE | ~/.copilot/metrics/paved-path-events.jsonl | Telemetry output path |
| QM_METRICS_OPT_OUT | (unset) | Set to 1 to disable telemetry |
| QM_SELF_AGENT_DIR | ~/.copilot/self-agent | Self-agent skeleton directory |
Why MCP, not a script
| Old (install-wizard.ps1) | New (quartermaster-mcp) |
|---|---|
| Run from one folder | Callable from any cwd in any agent |
| Windows PowerShell only | Any client speaking MCP (Copilot CLI, Claude Desktop, Cursor, VS Code) |
| Manual re-run per repo | Agent calls it inline mid-conversation |
| Updates require re-share | npm update and peers get the latest |
| No auto-reply | v0.5.0 adds second-brain-powered Teams draft surface |
Source of truth
Profiles are bundled in resources/profiles/. The 6 Purview profiles are pre-built. For any other product, use qm_init_profile to create your own — it generates a new .json in the same directory with your ADO/Kusto/IcM connections.
To refresh bundled profiles from an upstream source:
# Only maintainers do this; peers just use qm_init_profile
Copy-Item <source>/profiles/*.json resources/profiles/ -Force
Copy-Item <source>/prompts/*.prompt.md resources/prompts/ -ForceThen bump the version in package.json.
Version History
| Version | Date | What shipped |
|---|---|---|
| 0.6.0 | 2026-06-18 | qm_init_profile (custom profile creation for any product); stripped all personal data from bundled profiles; customizableFields schema |
| 0.5.0 | 2026-06-10 | Self-agent surface: qm_autoreply_compose, set_presence, failure_modes, drafts |
| 0.4.0 | 2026-06-05 | Onboarding: qm_welcome, qm_personalize, qm_skills_for_pm |
| 0.3.0 | 2026-06-01 | Read-only repo: repo_overview, repo_list_dir, repo_read_file, repo_search, repo_recent_sessions |
| 0.2.0 | 2026-05-30 | qm_telemetry, qm_emit_pr |
| 0.1.0 | 2026-05-29 | Core 5: list_profiles, seed_repo, audit_repo, install_prompts, apply_profile |
Roadmap (post-v0.5)
- v0.6 — Real Graph
/me/presenceintegration (replace mock presence) - v0.7 —
qm_customer_signaltool (ingest signals directly via MCP, feed to CI agent) - v0.8 — Multi-repo seed in one call (batch mode for team onboarding)
- Publish to Agency Marketplace as a registered MCP server plugin
