Skip to main content
Glama
OpenDocs MCP Server

OpenDocs MCP Server

Official
by opendocs-dev

OpenDocs

An AI agent documents every feature of your app, so nothing stays a hidden gem.

OpenDocs turns an agent's browser session into a structured, re-runnable App Flow: screenshots plus steps, compiled into a guide your support team can share.

Status: alpha. Published to npm under the alpha tag.

What's here

This repo is the open-source client (MIT):

Package

What it is

packages/cli

One binary per OS: the opendocs CLI and a local stdio MCP server

packages/core

The public API contract, limits, and redaction patterns shared with the OpenDocs service

The service (API and web) lives in apps/api and apps/web and can be self-hosted (see below). The client only sends screenshots your agent picks. Sensitive fields are covered in the page before capture, on by default.

Related MCP server: FlowLens MCP

Install (alpha)

npx -y opendocs-cli@alpha login --key <your-key>

Claude Code:

claude mcp add opendocs -- npx -y opendocs-cli@alpha mcp

Cursor:

{
  "mcpServers": {
    "opendocs": {
      "command": "npx",
      "args": ["-y", "opendocs-cli@alpha", "mcp"]
    }
  }
}

The alpha talks to https://opendocs.tunnel.juniyadi.id by default; set OPENDOCS_API_URL to override it.

Recording on staging

If you record on a staging host but the app is public under a different domain, set OPENDOCS_URL_MAP so the doc shows the public host instead:

OPENDOCS_URL_MAP=pfnapp.my.id=pfnapp.id

Format is comma-separated from=to pairs. Only the host (and port) is swapped; path, query and hash are kept. Screenshots are not edited, so keep the host out of the captured viewport (e.g. no visible URL bar).

Self-host

One docker compose stack: Postgres, S3 storage (bundled MinIO by default), the api and the web app. Everything is served from one port (docs at /, dashboard at /admin, api at /api).

Requirements: Docker with Compose v2, and a GitHub account to create an OAuth app. Sign-in is GitHub only; without GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET nobody can log in.

  1. Copy the config and edit it. .env.example documents every variable.

    git clone https://github.com/opendocs-dev/opendocs && cd opendocs
    cp .env.example .env

    Required: PUBLIC_URL (the URL users open, no path), BETTER_AUTH_SECRET (32+ characters, openssl rand -hex 32), ADMIN_EMAILS (comma list), POSTGRES_PASSWORD, the S3_* keys (S3_SECRET_ACCESS_KEY is also the MinIO password), and the GitHub pair below. Images are pulled from ghcr.io/opendocs-dev/opendocs-{api,web} at the tag in OPENDOCS_VERSION (.env.example sets edge, the latest main; pin a release such as 1.0.0 for production). PUBLIC_URL and the other settings are read at runtime: edit .env and docker compose up -d to apply.

  2. Create a GitHub OAuth app (GitHub, Settings, Developer settings, OAuth Apps). Set the callback URL to ${PUBLIC_URL}/api/auth/callback/github and put the client id and secret in GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET.

  3. Start it.

    docker compose up -d

    The api validates its config on start and exits with a list of every bad variable (docker compose logs api), then applies database migrations.

  4. Open PUBLIC_URL and sign in with GitHub. The first user to sign in becomes the owner; put your email in ADMIN_EMAILS so it is an admin. Create an API key under /admin/keys.

  5. Point the CLI at your instance:

    export OPENDOCS_API_URL=<PUBLIC_URL>/api/v1
    npx -y opendocs-cli@alpha login --key <your-key>

TLS: the stack publishes plain HTTP on WEB_PORT (default 3000). Put a reverse proxy with TLS in front and set PUBLIC_URL to its https URL.

External S3 (Cloudflare R2, Backblaze B2, AWS S3): set COMPOSE_PROFILES= (empty) in .env so MinIO is not started, and set S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION (R2 uses auto) and S3_FORCE_PATH_STYLE (false for AWS and R2). Create the bucket yourself. Set ASSET_BASE_URL to serve images from a CDN or public bucket instead of through the api.

Upgrade: set the new OPENDOCS_VERSION in .env (not needed for edge), then docker compose pull && docker compose up -d. Migrations run on api start; data lives in the pgdata and miniodata volumes. The dev-only Postgres for tests is docker-compose.dev.yml.

To build the images from this checkout instead of pulling them:

docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build

Build from source

git clone https://github.com/opendocs-dev/opendocs && cd opendocs
bun install
bun run --cwd packages/cli build        # → packages/cli/dist/opendocs
OPENDOCS_API_URL=<site>/api/v1 ./packages/cli/dist/opendocs login --key <your-key>

Security

See SECURITY.md.

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Gives coding agents full browser context — user actions, network, console, storage, DOM events, and screen recordings — from captured browser flows. This lets agents debug reported issues and generate or run regression tests without spending time and tokens reproducing them.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables coding agents to access recorded browser flows with user actions, network, console, storage, DOM events, and screen recording so they can debug, report bugs, perform regression testing, and generate Playwright tests without reproducing the issue.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Gives coding agents full browser context from recorded user flows, including actions, network, console, storage, DOM events, and screen recordings. Enables in-depth debugging, bug reporting, regression testing, and Playwright test generation without reproducing issues.
    -