Connects Claude to your self-hosted Shiori bookmark manager through its legacy `/api/*` endpoints. You get full CRUD operations: search bookmarks by title, URL, excerpt, or tag; add new bookmarks with Shiori's tag-object format; update existing entries via full JSON payloads or simplified field parameters; and delete by ID. Also exposes tag management (list, rename) and account listing. The developer targets the legacy API because Shiori's v1 is still in development. You'll want this if you're running Shiori and need Claude to search your archived links, bulk-update tags, or manage your read-it-later queue without leaving the conversation.
A Model Context Protocol (MCP) server for Shiori, the self-hosted bookmark and read-it-later manager.
pipx install git+https://github.com/rusty4444/shiori-mcp.git
Or from a checkout:
python -m venv .venv
source .venv/bin/activate
pip install -e .
| Variable | Required | Description |
|---|---|---|
SHIORI_BASE_URL | Yes | Base URL of the Shiori instance, e.g. https://shiori.example.com |
SHIORI_SESSION_ID | Optional | Existing Shiori session id; skips login if provided |
SHIORI_USERNAME | Required unless session id is set | Shiori username |
SHIORI_PASSWORD | Required unless session id is set | Shiori password |
SHIORI_TIMEOUT | No | HTTP timeout in seconds, default 20 |
{
"mcpServers": {
"shiori": {
"command": "shiori-mcp",
"env": {
"SHIORI_BASE_URL": "https://shiori.example.com",
"SHIORI_USERNAME": "your-username",
"SHIORI_PASSWORD": "your-password"
}
}
}
}
| Tool | Purpose |
|---|---|
shiori_health_check | Verify API connectivity/authentication |
shiori_list_bookmarks | List bookmarks with client-side limit/offset |
shiori_search_bookmarks | Search bookmarks by text and/or tag |
shiori_get_bookmark | Get one bookmark by id from the bookmark list |
shiori_get_bookmark_by_url | Get one bookmark by exact URL |
shiori_add_bookmark | Add a bookmark with optional tags/archive/public flags |
shiori_update_bookmark | Update a bookmark using full Shiori bookmark JSON |
shiori_update_bookmark_fields | Update common fields without manually constructing full JSON |
shiori_delete_bookmark | Delete one bookmark id |
shiori_delete_bookmarks | Delete bookmark ids from a JSON array |
shiori_list_tags | List tags and bookmark counts |
shiori_rename_tag | Rename a tag |
shiori_list_accounts | List accounts visible to this session |
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e '.[dev]'
ruff check .
pytest
python scripts/live_docs_test.py
live_docs_test.py validates Shiori public API documentation and repository pages without credentials. Authenticated read/write API behaviours are covered with mocked HTTP tests.
Optional LLM validation can be run with any configured OpenAI-compatible endpoint. For local Aeon validation, set AEON_BASE_URL and optionally AEON_MODEL / AEON_API_KEY before running python scripts/model_validate.py.
This server targets Shiori's documented legacy API under /api/* because the new API v1 is still documented as in development and self-documented at /swagger/index.html on running instances.
The write-capable tools mutate a Shiori bookmark database. Keep credentials in environment variables or a secret manager, never in source control.
This project was developed with the assistance of AI tools.
SHIORI_BASE_URL*Base URL of the Shiori instance, e.g. https://shiori.example.com
SHIORI_SESSION_IDsecretExisting Shiori session id; skips login if provided
SHIORI_USERNAMEShiori username; required unless SHIORI_SESSION_ID is set
SHIORI_PASSWORDsecretShiori password; required unless SHIORI_SESSION_ID is set
gongrzhe/office-powerpoint-mcp-server
gongrzhe/office-word-mcp-server
io.github.mindstone/mcp-server-office
greirson/mcp-todoist
henilcalagiya/mcp-apple-notes
ankimcp/anki-mcp-server-addon