rm-mcp
Can be used with Obsidian to transfer knowledge from reMarkable notes into structured documents, enabling AI-assisted workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rm-mcpsearch my notes for 'project roadmap'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
reMarkable MCP Server
Unlock 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.
Why rm-mcp?
Your 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:
Full library access — Browse folders, search documents, read any file
Typed text extraction — Native support for Type Folio and typed annotations
Handwriting OCR — Convert handwritten notes to searchable text
PDF & EPUB support — Extract text from documents, plus your annotations
Smart search — Find content across your entire library
Second brain integration — Use with Obsidian, note-taking apps, or any AI workflow
Whether you're researching, writing, or developing ideas, rm-mcp lets you leverage everything on your reMarkable through AI.
Related MCP server: io.github.praveensehgal/remarkable
Quick Install
Uses the reMarkable Cloud API. Requires a reMarkable Connect subscription.
One-command setup (recommended)
uvx rm-mcp --setupThis opens your browser, prompts for the one-time code, and prints the ready-to-paste config for Claude Code and Claude Desktop.
Manual setup
1. Get a One-Time Code
Go to my.remarkable.com/device/browser/connect and generate a code.
2. Convert to Token
uvx rm-mcp --register YOUR_CODE3. Add to your MCP client
Claude Code:
claude mcp add remarkable \
-e REMARKABLE_TOKEN='<paste token from step 2>' \
-e REMARKABLE_OCR_BACKEND=sampling \
-- uvx rm-mcp@latestClaude Desktop — add to claude_desktop_config.json (use full path to uvx, e.g. from which uvx):
{
"mcpServers": {
"remarkable": {
"command": "/Users/YOU/.local/bin/uvx",
"args": ["rm-mcp@latest"],
"env": {
"REMARKABLE_TOKEN": "<paste token from step 2>"
}
}
}
}Tools
Tool | Description |
| Read and extract text from documents (with pagination and search) |
| Navigate folders in your library |
| Search content across multiple documents |
| Get recently modified documents |
| Check connection status |
| Get PNG/SVG images of pages (supports OCR via sampling) |
All tools are read-only and return structured JSON with hints for next actions.
Smart Features
Multi-page read — Read all pages at once with
pages="all", or a range likepages="1-3"Grep auto-redirect —
grepautomatically finds and jumps to the matching pageAuto-redirect — Browsing a document path returns its content automatically
Auto-OCR — Notebooks with no typed text automatically enable OCR (opt out with
auto_ocr=False)Full-text search — Reading a document indexes it for fast future searches
Compact mode — Use
compact_output=Trueto reduce token usage in responsesBatch search — Search across multiple documents in one call
Vision support — Get page images for visual context (diagrams, mockups, sketches)
Sampling OCR — Use client's AI for OCR on images (no API key needed)
Example Usage
# Read a document
remarkable_read("Meeting Notes")
# Read all pages at once
remarkable_read("Meeting Notes", pages="all")
# Read a range of pages
remarkable_read("Research Paper", pages="1-3")
# Search for keywords (auto-redirects to matching page)
remarkable_read("Project Plan", grep="deadline")
# Enable OCR for handwritten notes
remarkable_read("Journal", include_ocr=True)
# Browse your library
remarkable_browse("/Work/Projects")
# Search across documents
remarkable_search("meeting", grep="action items")
# Get recent documents with previews
remarkable_recent(limit=5, include_preview=True)
# Get a page image
remarkable_image("UI Mockup", page=1)
# Get image with OCR text extraction
remarkable_image("Handwritten Notes", include_ocr=True)Resources
Documents are automatically registered as MCP resources:
URI Scheme | Description |
| Extracted text content |
| PNG image of page N (notebooks only) |
| SVG vector image of page N (notebooks only) |
📖 Full Resources Documentation
OCR for Handwriting
rm-mcp uses sampling OCR — your MCP client's AI model extracts text from handwritten notes. No additional API keys or services needed.
How It Works
When 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.
Usage
# OCR on a page image
remarkable_image("Handwritten Notes", include_ocr=True)
# OCR when reading a notebook
remarkable_read("Journal", include_ocr=True)Requirements
Your MCP client must support the sampling capability (VS Code + Copilot, Claude Desktop, etc.)
REMARKABLE_OCR_BACKEND=sampling(this is the default)
Advanced Configuration
Root Path Filtering
Limit the MCP server to a specific folder on your reMarkable. All operations will be scoped to this folder:
{
"servers": {
"remarkable": {
"command": "uvx",
"args": ["rm-mcp"],
"env": {
"REMARKABLE_TOKEN": "your-token",
"REMARKABLE_ROOT_PATH": "/Work"
}
}
}
}With this configuration:
remarkable_browse("/")shows contents of/Workremarkable_browse("/Projects")shows/Work/ProjectsDocuments outside
/Workare not accessible
Useful for:
Focusing on work documents during office hours
Separating personal and professional notes
Limiting scope for specific AI workflows
Custom Background Color
Set the default background color for image rendering:
{
"servers": {
"remarkable": {
"command": "uvx",
"args": ["rm-mcp"],
"env": {
"REMARKABLE_TOKEN": "your-token",
"REMARKABLE_BACKGROUND_COLOR": "#FFFFFF"
}
}
}
}Supported formats:
#RRGGBB— RGB hex (e.g.,#FFFFFFfor white)#RRGGBBAA— RGBA hex (e.g.,#00000000for transparent)
Default is #FBFBFB (reMarkable paper color). This affects both the remarkable_image tool and image resources.
All Environment Variables
Variable | Default | Description |
| (required) | Auth token from |
|
| Limit access to a specific folder |
|
| OCR backend ( |
|
| Background color for rendered images ( |
|
| Collection cache TTL in seconds |
| (off) | Set to |
|
| Maximum characters in tool responses |
|
| PDF/EPUB page size in characters |
|
| Parallel workers for metadata fetching |
|
| SQLite full-text search index location |
| (off) | Set to |
Most users only need REMARKABLE_TOKEN. The rest are for advanced tuning.
Use Cases
Research & Writing
Use 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.
Daily Review
Ask your AI assistant to summarize your recent notes, find action items, or identify patterns across your journal entries.
Document Search
Find that half-remembered note by searching across your entire library — including handwritten content.
Knowledge Management
Treat your reMarkable as a second brain that AI can access. Combined with tools like Obsidian, you can build a powerful personal knowledge system.
Documentation
Guide | Description |
Detailed tool documentation | |
MCP resources documentation | |
MCP protocol capabilities | |
Contributing and development setup | |
Roadmap and planned features |
Development
git clone https://github.com/wavyrai/rm-mcp.git
cd rm-mcp
uv sync --all-extras
uv run pytest test_server.py -vLicense
MIT
Built with rmscene, PyMuPDF, and inspiration from ddvk/rmapi.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wavyrai/rm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server