{
  "markdown": "# reMarkable MCP Server\n\nUnlock the full potential of your reMarkable tablet as a **second brain** for AI assistants. This MCP server lets Claude, VS Code Copilot, and other AI tools read, search, and traverse your entire reMarkable library — including handwritten notes via OCR.\n\n<!-- mcp-name: io.github.wavyrai/rm-mcp -->\n\n## Why rm-mcp?\n\nYour reMarkable tablet is a powerful tool for thinking, note-taking, and research. But that knowledge stays trapped on the device. This MCP server changes that:\n\n- **Full library access** — Browse folders, search documents, read any file\n- **Typed text extraction** — Native support for Type Folio and typed annotations\n- **Handwriting OCR** — Convert handwritten notes to searchable text\n- **PDF & EPUB support** — Extract text from documents, plus your annotations\n- **Smart search** — Find content across your entire library\n- **Organise your library** — Rename, move, and create folders (nothing is ever deleted)\n- **Second brain integration** — Use with Obsidian, note-taking apps, or any AI workflow\n\nWhether you're researching, writing, or developing ideas, rm-mcp lets you leverage everything on your reMarkable through AI.\n\n---\n\n## Quick Install\n\nUses the reMarkable Cloud API. Requires a reMarkable Connect subscription.\n\n### One-command setup (recommended)\n\n```bash\nuvx rm-mcp --setup\n```\n\nThis opens your browser, prompts for the one-time code, and prints the ready-to-paste config for Claude Code and Claude Desktop.\n\n### Manual setup\n\n#### 1. Get a One-Time Code\n\nGo to [my.remarkable.com/device/browser/connect](https://my.remarkable.com/device/apps/connect) and generate a code.\n\n#### 2. Convert to Token\n\n```bash\nuvx rm-mcp --register YOUR_CODE\n```\n\n#### 3. Add to your MCP client\n\n**Claude Code:**\n\n```bash\nclaude mcp add remarkable \\\n  -e REMARKABLE_TOKEN='<paste token from step 2>' \\\n  -e REMARKABLE_OCR_BACKEND=sampling \\\n  -- uvx rm-mcp@latest\n```\n\n**Claude Desktop** — add to `claude_desktop_config.json` (use full path to `uvx`, e.g. from `which uvx`):\n\n```json\n{\n  \"mcpServers\": {\n    \"remarkable\": {\n      \"command\": \"/Users/YOU/.local/bin/uvx\",\n      \"args\": [\"rm-mcp@latest\"],\n      \"env\": {\n        \"REMARKABLE_TOKEN\": \"<paste token from step 2>\"\n      }\n    }\n  }\n}\n```\n\n---\n\n<!-- Screenshots section - uncomment when screenshots are added\n## Screenshots\n\n### MCP Resources\n\nDocuments appear as resources that AI assistants can access directly:\n\n![Resources in VS Code](docs/assets/resources-screenshot.png)\n\n### Tool Calls in Action\n\nAI assistants use the tools to read documents, search content, and more:\n\n![Tool calls in VS Code](docs/assets/tool-calls-screenshot.png)\n-->\n\n---\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `remarkable_read` | Read and extract text from documents (with pagination and search) |\n| `remarkable_browse` | Navigate folders in your library |\n| `remarkable_search` | Search content across multiple documents |\n| `remarkable_recent` | Get recently modified documents |\n| `remarkable_status` | Check connection status |\n| `remarkable_image` | Get PNG/SVG images of pages (supports OCR via sampling) |\n\nAll tools are **read-only** and return structured JSON with hints for next actions.\n\n📖 **[Full Tools Documentation](docs/tools.md)**\n\n### Smart Features\n\n- **Multi-page read** — Read all pages at once with `pages=\"all\"`, or a range like `pages=\"1-3\"`\n- **Grep auto-redirect** — `grep` automatically finds and jumps to the matching page\n- **Auto-redirect** — Browsing a document path returns its content automatically\n- **Auto-OCR** — Notebooks with no typed text automatically enable OCR (opt out with `auto_ocr=False`)\n- **Full-text search** — Reading a document indexes it for fast future searches\n- **Compact mode** — Use `compact_output=True` to reduce token usage in responses\n- **Batch search** — Search across multiple documents in one call\n- **Vision support** — Get page images for visual context (diagrams, mockups, sketches)\n- **Sampling OCR** — Use client's AI for OCR on images (no API key needed)\n\n### Example Usage\n\n```python\n# Read a document\nremarkable_read(\"Meeting Notes\")\n\n# Read all pages at once\nremarkable_read(\"Meeting Notes\", pages=\"all\")\n\n# Read a range of pages\nremarkable_read(\"Research Paper\", pages=\"1-3\")\n\n# Search for keywords (auto-redirects to matching page)\nremarkable_read(\"Project Plan\", grep=\"deadline\")\n\n# Enable OCR for handwritten notes\nremarkable_read(\"Journal\", include_ocr=True)\n\n# Browse your library\nremarkable_browse(\"/Work/Projects\")\n\n# Search across documents\nremarkable_search(\"meeting\", grep=\"action items\")\n\n# Get recent documents with previews\nremarkable_recent(limit=5, include_preview=True)\n\n# Get a page image\nremarkable_image(\"UI Mockup\", page=1)\n\n# Get image with OCR text extraction\nremarkable_image(\"Handwritten Notes\", include_ocr=True)\n```\n\n---\n\n## Resources\n\nDocuments are automatically registered as MCP resources:\n\n| URI Scheme | Description |\n|------------|-------------|\n| `remarkable:///{path}.txt` | Extracted text content |\n| `remarkableimg:///{path}.page-{N}.png` | PNG image of page N (notebooks only) |\n| `remarkablesvg:///{path}.page-{N}.svg` | SVG vector image of page N (notebooks only) |\n\n📖 **[Full Resources Documentation](docs/resources.md)**\n\n---\n\n## OCR for Handwriting\n\nrm-mcp uses **sampling OCR** — your MCP client's AI model extracts text from handwritten notes. No additional API keys or services needed.\n\n### How It Works\n\nWhen you use `include_ocr=True`, rm-mcp sends page images to your client's LLM (Claude, GPT-4, etc.) via MCP sampling. The model reads the handwriting and returns the text.\n\n### Usage\n\n```python\n# OCR on a page image\nremarkable_image(\"Handwritten Notes\", include_ocr=True)\n\n# OCR when reading a notebook\nremarkable_read(\"Journal\", include_ocr=True)\n```\n\n### Requirements\n\n- Your MCP client must support the **sampling** capability (VS Code + Copilot, Claude Desktop, etc.)\n- `REMARKABLE_OCR_BACKEND=sampling` (this is the default)\n\n---\n\n## Advanced Configuration\n\n### Root Path Filtering\n\nLimit the MCP server to a specific folder on your reMarkable. All operations will be scoped to this folder:\n\n```json\n{\n  \"servers\": {\n    \"remarkable\": {\n      \"command\": \"uvx\",\n      \"args\": [\"rm-mcp\"],\n      \"env\": {\n        \"REMARKABLE_TOKEN\": \"your-token\",\n        \"REMARKABLE_ROOT_PATH\": \"/Work\"\n      }\n    }\n  }\n}\n```\n\nWith this configuration:\n- `remarkable_browse(\"/\")` shows contents of `/Work`\n- `remarkable_browse(\"/Projects\")` shows `/Work/Projects`\n- Documents outside `/Work` are not accessible\n\nUseful for:\n- Focusing on work documents during office hours\n- Separating personal and professional notes\n- Limiting scope for specific AI workflows\n\n### Custom Background Color\n\nSet the default background color for image rendering:\n\n```json\n{\n  \"servers\": {\n    \"remarkable\": {\n      \"command\": \"uvx\",\n      \"args\": [\"rm-mcp\"],\n      \"env\": {\n        \"REMARKABLE_TOKEN\": \"your-token\",\n        \"REMARKABLE_BACKGROUND_COLOR\": \"#FFFFFF\"\n      }\n    }\n  }\n}\n```\n\nSupported formats:\n- `#RRGGBB` — RGB hex (e.g., `#FFFFFF` for white)\n- `#RRGGBBAA` — RGBA hex (e.g., `#00000000` for transparent)\n\nDefault is `#FBFBFB` (reMarkable paper color). This affects both the `remarkable_image` tool and image resources.\n\n### All Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `REMARKABLE_TOKEN` | *(required)* | Auth token from `uvx rm-mcp --setup` |\n| `REMARKABLE_ROOT_PATH` | `/` | Limit access to a specific folder |\n| `REMARKABLE_READ_ONLY` | *(off)* | Set to `1` to disable renaming, moving and creating folders |\n| `REMARKABLE_OCR_BACKEND` | `sampling` | OCR backend (`sampling`) |\n| `REMARKABLE_BACKGROUND_COLOR` | `#FBFBFB` | Background color for rendered images (`#RRGGBB` or `#RRGGBBAA`) |\n| `REMARKABLE_CACHE_TTL` | `60` | Collection cache TTL in seconds |\n| `REMARKABLE_COMPACT` | *(off)* | Set to `1` or `true` to omit hints from responses globally |\n| `REMARKABLE_MAX_OUTPUT_CHARS` | `50000` | Maximum characters in tool responses |\n| `REMARKABLE_PAGE_SIZE` | `8000` | PDF/EPUB page size in characters |\n| `REMARKABLE_PARALLEL_WORKERS` | `5` | Parallel workers for metadata fetching |\n| `REMARKABLE_INDEX_CONTENT` | `1` | Set to `0` to disable background indexing of PDF/EPUB text |\n| `REMARKABLE_INDEX_PATH` | `~/.cache/rm-mcp/index.db` | SQLite full-text search index location |\n| `REMARKABLE_INDEX_REBUILD` | *(off)* | Set to `1` to force index rebuild on startup |\n\nMost users only need `REMARKABLE_TOKEN`. The rest are for advanced tuning.\n\n---\n\n## Use Cases\n\n### Research & Writing\n\nUse rm-mcp while working in an Obsidian vault or similar to transfer knowledge from your handwritten notes into structured documents. AI can read your research notes and help develop your ideas.\n\n### Daily Review\n\nAsk your AI assistant to summarize your recent notes, find action items, or identify patterns across your journal entries.\n\n### Document Search\n\nFind that half-remembered note by searching across your entire library — including handwritten content.\n\n### Knowledge Management\n\nTreat your reMarkable as a second brain that AI can access. Combined with tools like Obsidian, you can build a powerful personal knowledge system.\n\n---\n\n## Documentation\n\n| Guide | Description |\n|-------|-------------|\n| [Tools Reference](docs/tools.md) | Detailed tool documentation |\n| [Resources Reference](docs/resources.md) | MCP resources documentation |\n| [Capability Negotiation](docs/capabilities.md) | MCP protocol capabilities |\n| [Development](docs/development.md) | Contributing and development setup |\n| [Future Plans](docs/future-plans.md) | Roadmap and planned features |\n\n---\n\n## Development\n\n```bash\ngit clone https://github.com/wavyrai/rm-mcp.git\ncd rm-mcp\nuv sync --all-extras\nuv run pytest test_server.py -v\n```\n\n📖 **[Development Guide](docs/development.md)**\n\n---\n\n## License\n\nMIT\n\n---\n\nBuilt with [rmscene](https://github.com/ricklupton/rmscene), [PyMuPDF](https://pymupdf.readthedocs.io/), and inspiration from [ddvk/rmapi](https://github.com/ddvk/rmapi).\n",
  "bytes": 10040,
  "sha": "2a82300cc841e56e1e59673887a3bab8e6cdccf9a681ae2193765dc3a87600d8",
  "repo_slug": "wavyrai/rm-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_wavyrai_rm_mcp_f3743f5e/readme"
}