# scribe

Turns source files into markdown documentation without leaving the agent chat. Handles a single file or a batch of up to 20.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: writulos
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/writulos/writulos-mcp
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/mcp/scribe

## What it does

scribe is an MCP server from writulos that writes markdown descriptions of your code. Two tools ship with it: `generate_docs` takes one file, `generate_docs_batch` accepts an array of up to 20 files per request. You pass the code, an optional filename and optional context; the result comes back in the chat.

There is nothing to build. The server runs through `npx writulos-mcp`. In Cursor you add it to `.cursor/mcp.json`; Claude, Codex and Gemini CLI take it via `claude mcp add`, `codex mcp add` or `gemini mcp add`. You need a `WRITULOS_API_KEY`. Without one the server still starts, but every tool call replies with instructions on getting a key. Node.js 18+ is required.

Every documented file spends one generation from your Writulos plan's monthly allowance, shared with the dashboard and the GitHub Action. Once it runs out, the tools tell you and give the reset date. The server itself only writes a run log to `docs/writulos.log`; point `WRITULOS_OUTPUT_DIR` elsewhere to move it.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `WRITULOS_API_KEY`, `WRITULOS_OUTPUT_DIR`, `WRITULOS_PROJECT_ROOT`, `WRITULOS_API_URL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env WRITULOS_API_KEY=<WRITULOS_API_KEY> --env WRITULOS_OUTPUT_DIR=<WRITULOS_OUTPUT_DIR> --env WRITULOS_PROJECT_ROOT=<WRITULOS_PROJECT_ROOT> --env WRITULOS_API_URL=<WRITULOS_API_URL> --transport stdio scribe -- npx -y writulos-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add scribe --env WRITULOS_API_KEY=<WRITULOS_API_KEY> --env WRITULOS_OUTPUT_DIR=<WRITULOS_OUTPUT_DIR> --env WRITULOS_PROJECT_ROOT=<WRITULOS_PROJECT_ROOT> --env WRITULOS_API_URL=<WRITULOS_API_URL> -- npx -y writulos-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "scribe": {
            "command": "npx",
            "args": [
                "-y",
                "writulos-mcp"
            ],
            "env": {
                "WRITULOS_API_KEY": "<WRITULOS_API_KEY>",
                "WRITULOS_OUTPUT_DIR": "<WRITULOS_OUTPUT_DIR>",
                "WRITULOS_PROJECT_ROOT": "<WRITULOS_PROJECT_ROOT>",
                "WRITULOS_API_URL": "<WRITULOS_API_URL>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "scribe": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "writulos-mcp"
            ],
            "env": {
                "WRITULOS_API_KEY": "<WRITULOS_API_KEY>",
                "WRITULOS_OUTPUT_DIR": "<WRITULOS_OUTPUT_DIR>",
                "WRITULOS_PROJECT_ROOT": "<WRITULOS_PROJECT_ROOT>",
                "WRITULOS_API_URL": "<WRITULOS_API_URL>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e WRITULOS_API_KEY=<WRITULOS_API_KEY> -e WRITULOS_OUTPUT_DIR=<WRITULOS_OUTPUT_DIR> -e WRITULOS_PROJECT_ROOT=<WRITULOS_PROJECT_ROOT> -e WRITULOS_API_URL=<WRITULOS_API_URL> scribe npx -y writulos-mcp
```
Replace <…> with your own values

## When to use it
- document an unfamiliar module before editing it
- produce markdown reference for a batch of files in one pass
- rebuild docs in a project that never had them
- write an API description for a new teammate
- draft a README from existing source

## Example prompts
- Document `auth.js` with scribe
- Run `generate_docs_batch` over every file in `src/api`
- Generate markdown for `parser.py`, context: it parses log files

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44908
- [Sui Knowledge Base (kapa.ai)](https://affpapa.org/en/nevibecode/mcp/sui-knowledge-base-kapaai.md) — MCP server · ★ 7785
- [Claude Code Ultimate Guide](https://affpapa.org/en/nevibecode/mcp/claude-code-ultimate-guide.md) — MCP server · ★ 6258
- [Zotero MCP](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — MCP server · ★ 5585
- [RevoGrid DataGrid MCP Pro](https://affpapa.org/en/nevibecode/mcp/revogrid-datagrid-mcp-pro.md) — MCP server · ★ 3451
- [Claude Code Explorer MCP](https://affpapa.org/en/nevibecode/mcp/codeaashu-claude-code-explorer-mcp.md) — MCP server · ★ 3412

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
