MCP server for accessing reMarkable tablet data
Project description
reMarkable MCP Server
An MCP (Model Context Protocol) server for accessing your reMarkable tablet data through the reMarkable Cloud.
Quick Install
What It Does
- Read typed text directly from notebooks (v3+ software, no OCR needed)
- Browse and search your document library
- Access recent files with content previews
- OCR for handwritten content via pytesseract
- MCP resources and prompts for deeper integration
Installation
Using uvx (Recommended)
# Get your reMarkable token
uvx remarkable-mcp --register YOUR_ONE_TIME_CODE
Click the Quick Install badges above, or configure manually.
From Source
git clone https://github.com/SamMorrowDrums/remarkable-mcp.git
cd remarkable-mcp
uv sync
uv run python server.py --register YOUR_ONE_TIME_CODE
Setup
1. Get a One-Time Code
Go to my.remarkable.com/device/desktop/connect and generate a code.
2. Convert to Token
uvx remarkable-mcp --register YOUR_CODE
3. Configure MCP
VS Code — Add to .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "remarkable-token",
"description": "reMarkable API Token",
"password": true
}
],
"servers": {
"remarkable": {
"command": "uvx",
"args": ["remarkable-mcp"],
"env": {
"REMARKABLE_TOKEN": "${input:remarkable-token}"
}
}
}
}
Your token is stored securely using VS Code's input system with password: true.
Claude Desktop — Add to claude_desktop_config.json:
{
"mcpServers": {
"remarkable": {
"command": "uvx",
"args": ["remarkable-mcp"],
"env": {
"REMARKABLE_TOKEN": "your-token-from-step-2"
}
}
}
}
Tools
| Tool | Description |
|---|---|
remarkable_read |
Extract text from a document |
remarkable_browse |
List files or search by name |
remarkable_recent |
Get recently modified documents |
remarkable_status |
Check connection status |
All tools are read-only and return structured JSON with hints for next actions.
Resources
Recent documents are automatically registered as MCP resources on startup (if authenticated). Each document becomes available at remarkable://doc/{name}.
| URI | Description |
|---|---|
remarkable://doc/{name} |
Content of a recent document |
remarkable://folders |
Complete folder hierarchy |
Prompts
summarize_recent · find_notes · daily_review · export_document · organize_library · meeting_notes
Usage
remarkable_read("Meeting Notes - Nov 2025")
remarkable_browse("/")
remarkable_browse(query="meeting")
remarkable_recent(limit=5, include_preview=True)
Text Extraction
Typed text from v3+ notebooks is extracted natively via rmscene — no OCR required.
Handwritten content uses pytesseract for OCR. Make sure Tesseract is installed on your system:
# macOS
brew install tesseract
# Ubuntu/Debian
sudo apt-get install tesseract-ocr
# Arch
sudo pacman -S tesseract
PDF highlights and annotations are also extracted.
Design
Intent-based tools that map to what you actually want to do. Responses include hints for logical next steps. Errors explain what went wrong and how to fix it. Four tools cover most use cases.
Authentication
Set REMARKABLE_TOKEN in your MCP config (recommended), or the server will fall back to ~/.rmapi.
Development
uv sync --all-extras
uv run pytest test_server.py -v
uv run ruff check .
uv run ruff format .
Project Structure
remarkable-mcp/
├── server.py # Entry point
├── remarkable_mcp/ # Main package
│ ├── server.py # FastMCP server
│ ├── api.py # Cloud API helpers
│ ├── extract.py # Text extraction
│ ├── tools.py # MCP tools
│ ├── resources.py # MCP resources
│ └── prompts.py # MCP prompts
└── test_server.py # Tests
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file remarkable_mcp-0.1.3.tar.gz.
File metadata
- Download URL: remarkable_mcp-0.1.3.tar.gz
- Upload date:
- Size: 102.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20e1ef6b6c49d7bf251d397963e5154ace594f71f4654686f891aa312cc33f66
|
|
| MD5 |
30a24a2db69bc6ea6b6f8fca328d6024
|
|
| BLAKE2b-256 |
83892b6f564de01490f9cfd7d553a756f826d9bd141c5f8cf79d5fa438987d37
|
Provenance
The following attestation bundles were made for remarkable_mcp-0.1.3.tar.gz:
Publisher:
publish.yml on SamMorrowDrums/remarkable-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remarkable_mcp-0.1.3.tar.gz -
Subject digest:
20e1ef6b6c49d7bf251d397963e5154ace594f71f4654686f891aa312cc33f66 - Sigstore transparency entry: 729432462
- Sigstore integration time:
-
Permalink:
SamMorrowDrums/remarkable-mcp@ca425de27d650eeb70a9d1ef030cd664b5e16da9 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/SamMorrowDrums
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca425de27d650eeb70a9d1ef030cd664b5e16da9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file remarkable_mcp-0.1.3-py3-none-any.whl.
File metadata
- Download URL: remarkable_mcp-0.1.3-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49782f20b9c8ef8a43a5f6cfc950fcac346c1a80af709409e7eaee23744d8d95
|
|
| MD5 |
7c00e5b4ed3442908aabe2ca0b509d9e
|
|
| BLAKE2b-256 |
1b9542184674a64726be9e8ec07c243a244e504204f9931086b0e079ff87724b
|
Provenance
The following attestation bundles were made for remarkable_mcp-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on SamMorrowDrums/remarkable-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
remarkable_mcp-0.1.3-py3-none-any.whl -
Subject digest:
49782f20b9c8ef8a43a5f6cfc950fcac346c1a80af709409e7eaee23744d8d95 - Sigstore transparency entry: 729432473
- Sigstore integration time:
-
Permalink:
SamMorrowDrums/remarkable-mcp@ca425de27d650eeb70a9d1ef030cd664b5e16da9 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/SamMorrowDrums
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ca425de27d650eeb70a9d1ef030cd664b5e16da9 -
Trigger Event:
push
-
Statement type: