Documentation Workflow MCP
Stores encrypted documentation in the user's own Firebase/Firestore project, writes ciphertext using a Firebase service-account key, and uses Firestore teams and access data to authorize readers before releasing decryption keys.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Documentation Workflow MCP (self-hosted)
An MCP server that lets your AI assistant (Claude, GitHub Copilot, Cursor and others) write, check, publish, promote and roll back documentation for your product. The documentation is stored in your own Firebase, encrypted, and shown to readers on the Documentation Workflow reader website.
This is the open-source, self-hosted edition. You run everything yourself: no account with us, and nothing is sent to us.
New to this? Follow Getting started for beginners. It explains every step, including creating the Firebase project.
What you get
Feature | Self-hosted (this repo) | Hosted service |
AI tools: write, validate, publish, promote, roll back, migrate | ✅ | ✅ |
Encrypted (v3) documentation in your Firebase | ✅ your own key | ✅ managed key |
Reader website with Google sign-in, teams and environments | ✅ | ✅ |
Orbit: readers ask questions about the docs | ✅ your Gemini/Groq key | ✅ |
Issues and FAQ raised from the website | ✅ | ✅ |
Reader access (teams, admins) | CLI, or Firebase console | Dashboard screens |
Dashboard, workspaces, invitations, personal tokens per person | ❌ | ✅ |
Analytics screens, release manager, one-click site deploy | ❌ | ✅ |
Server, backups, updates | You | Us |
Want the dashboard instead? Use the hosted service at https://documentation-workflow.withwilco.com. You can move projects between the two in either direction at any time.
Related MCP server: vnsh-mcp
How it works
Your AI ──(MCP + bearer token)──▶ this server ──(service-account key)──▶ your Firebase (Firestore)
│ holds MCP_DOCUMENTATION_ENCRYPTION_KEY ▲
│ encrypts before writing │ ciphertext only
Readers ──(Google sign-in)──▶ reader website ──(asks for the key)──▶ this server ───┘
/api/documentation-v3Publishing: your AI calls the tools here; this server encrypts the documentation and writes it to your Firestore with the project's service-account key.
Reading: the reader website signs people in with Google, then asks this server for the decryption key. The server checks the reader against your Firestore (
teams,feedbackAccess,adminAccess) before handing out the key. Browsers decrypt locally.Your projects are listed in
projects.json. Whoever holdsMCP_BEARER_TOKENis the owner of all of them.
Quick start (5 minutes, on your computer)
You need Node.js 20 or newer and a Firebase project with Firestore (see Getting started if you don't have one).
git clone https://github.com/ranamasad/documentation-workflow-mcp.git
cd documentation-workflow-mcp
npm ci
npm run build
npm run cli -- init --owner you@example.cominit creates projects.json and a .env with a fresh bearer token, signing key and encryption key. Back up MCP_DOCUMENTATION_ENCRYPTION_KEY now (a password manager is fine). Without it, encrypted documentation cannot be read.
Download your Firebase service-account key (Firebase console → ⚙ Project settings → Service accounts → Generate new private key), save it as secrets/my-docs-sa.json, then add the project:
npm run cli -- project add --name "My Docs" --firebase my-firebase-project-id --key ./secrets/my-docs-sa.json --site https://my-firebase-project-id.web.appStart the server:
npm startOpen http://127.0.0.1:4318/health. You should see "projects":1 and "encryption":true.
Now connect your AI and ask it: "Write the documentation for this repository."
Connect your AI
The server address is http://127.0.0.1:4318/mcp on your computer, or https://<your-server>/mcp once deployed. The token is MCP_BEARER_TOKEN from .env.
Claude Code
claude mcp add --transport http documentation-workflow https://your-server.example.com/mcp --header "Authorization: Bearer YOUR_TOKEN"VS Code (GitHub Copilot): save examples/vscode.mcp.json as .vscode/mcp.json, replace YOUR-MCP-DOMAIN, and VS Code asks for the token once.
Claude Desktop, Cursor and other MCP apps: use examples/claude.mcp.json and set DOCUMENTATION_WORKFLOW_MCP_TOKEN in your environment.
Only on your own computer, no server at all (stdio): point your AI at the command npm run start:stdio in this folder. It reads the same projects.json and .env. Readers of encrypted documentation still need a reachable server, so use this for writing and publishing only.
projects.json
{
"owner": "you@example.com",
"projects": [
{
"id": "6f1c2a4e-1b2c-4d3e-8f90-123456789abc",
"name": "My Docs",
"firebaseProject": "my-firebase-project-id",
"environments": ["development", "beta", "production"],
"serviceAccountKeyFile": "./secrets/my-docs-sa.json",
"settings": {},
"site": { "token": "dsite_…", "origins": ["https://my-firebase-project-id.web.app"] },
"importedKeys": {}
}
]
}Field | Meaning |
| Your email. Recorded as the author of releases. |
| Created for you. It is part of every encryption scope: never change it after publishing. |
| What you and your AI call the project. |
| The Firebase project ID that stores this documentation. |
| Which of |
| The service-account key: a file path (relative to |
| Saved answers (repositories, readers…). Your AI fills this in with your permission. |
| The reader website: |
| Content keys brought from another server when a project moved here. Leave empty otherwise. |
projects.json, secrets/, .env and .mcp-data/ are in .gitignore. Never commit them.
Give people access to the reader website
Readers sign in with Google. Access lives in the project's own Firestore, managed with the CLI:
npm run cli -- team add Support --project "My Docs" --envs production --reader support
npm run cli -- access add alice@example.com --project "My Docs" --team Support
npm run cli -- access admin bob@example.com --project "My Docs"
npm run cli -- access list --project "My Docs"
npm run cli -- access remove alice@example.com --project "My Docs"Full details, including doing the same in the Firebase console: docs/READER-ACCESS.md.
Deploy it for your team
Your laptop is fine for one person. For a team (and for readers of encrypted docs) run it on a server with HTTPS. Step-by-step guides for Docker, a VPS and Vercel: docs/DEPLOY.md.
Orbit and issue write-ups (optional)
Set GEMINI_API_KEY (and optionally GROQ_API_KEY as a fallback) in .env. Readers can then ask Orbit questions on the website, and issues they raise get a clear write-up. Without keys everything else still works.
Move a project between the hosted service and your server
Hosted → here: dashboard → Self-hosting → Export for self-hosting, then
npm run cli -- import <file> --key <service-account.json>.Here → hosted:
npm run cli -- export --project "My Docs", then dashboard → Self-hosting → Import a project.
Your documentation never moves: it stays in your Firebase. Only the project's settings and its content keys travel, never a server's master key. Full guide: docs/MOVING-PROJECTS.md.
Command reference
Command | What it does |
| Compile (run after every update). |
| Run the HTTP server ( |
| Run as a local stdio MCP for one AI app. |
| List every CLI command. |
| Build and run the tests. |
Security
The bearer token gives full owner access to every project. Share it only with people who should publish.
The service-account key can read and write your Firestore. Keep it in
secrets/(git-ignored) or in your host's secret store.MCP_DOCUMENTATION_ENCRYPTION_KEYnever leaves this server. Back it up. If you lose it, encrypted docs must be republished from source.Encryption is server-managed (the server and the AI host can read content), not end-to-end.
Report vulnerabilities privately: see SECURITY.md.
License
GNU Affero General Public License v3.0 (AGPL-3.0-only).
In short: use it, change it and self-host it freely. If you change it and let other people use your changed version over a network, you must offer those users your changed source code under the same license. Commercial licenses without this obligation are available: contact the maintainers.
"Documentation Workflow" and its logo are trademarks of the maintainers; see TRADEMARKS.md. Contributions are welcome: see CONTRIBUTING.md.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Versioned documentation registry and semantic search for AI tools and coding assistants.
Publish your API docs so AI assistants can look up endpoints and call your API correctly.
Governed, auditable knowledge your team curates for its AI assistants, self-hostable
Tenant-separated encrypted context and model routing for your AI work; OAuth 2.1 sign-in.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to crawl, index, and retrieve information from technical documentation using semantic search, with optional knowledge graph validation for code hallucination detection.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create, read, update, list, restore, and share encrypted workspaces and artifacts with version-aware writes, view-only links, and optional public documents.19 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create, read, update, and restore encrypted shared workspaces and artifacts addressed by a single link, so multiple agents and people can collaborate on the same living document. Writes are version-conditional to prevent clobbering, and content is encrypted client-side so the server only ever holds ciphertext.19 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create, read, update, list, restore and renew encrypted shared workspaces and one-shot links, so multiple agents and people can collaborate on the same versioned document through one URL. Content is encrypted client-side before upload, supports view-only sharing, and is deleted 24 hours after the last edit.19 npmMIT