A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
A flexible system for managing various types of sources (papers, books, webpages, etc.) and integrating them with knowle
A lightweight FastMCP server for managing literature, notes, entity links, and reading-list resources in a local SQLite database.
This repository provides:
It does not integrate with MCP Memory Server or an external memory graph.
sqlite3 sources.db < create_sources_db.sql
fastmcp install sqlite-paper-fastmcp-server.py --name "Source Manager" -e SQLITE_DB_PATH=/path/to/sources.db
examples/sources.db.This server can be packaged as a containerized stdio MCP server.
Build the image:
docker build -t sqlite-lit-mcp .
Run it with a persistent SQLite volume:
mkdir -p data
docker run --rm -i \
-e SQLITE_DB_PATH=/data/sources.db \
-v "$(pwd)/data:/data" \
sqlite-lit-mcp
Notes:
SQLITE_DB_PATH to /data/sources.db.create_sources_db.sql.migrations/ before starting the server.With Docker Compose:
docker compose run --rm sqlite-lit-mcp
Implemented tools:
read_querylist_tablesdescribe_tableget_table_statsget_database_infovacuum_databaseadd_sourcesadd_notesupdate_statusadd_identifierslink_to_entitiesget_source_entitiesupdate_entity_linksremove_entity_linksget_entity_sourcesImplemented resources:
source://<id>source://by-identifier/<type>/<value>reading-list://unreadreading-list://readingentity://<entity_name>The current schema centers on four tables:
sourcessource_identifierssource_notessource_entity_linkssources.identifiers is still kept as a transitional JSON cache, but identifier lookups now use source_identifiers.
Supported identifier types:
semantic_scholardoiarxivopenalexpmidisbnurlSupported entity relation types:
discussesintroducesextendsevaluatesappliescritiquessupportscontradictsrefutesLightweight provenance fields live on sources:
providerdiscovered_viadiscovered_atThe schema now uses PRAGMA user_version = 3.
If you have a version 0 or version 1 database, apply:
sqlite3 /path/to/sources.db < migrations/2026-03-09__normalize-identifiers.sql
sqlite3 /path/to/sources.db < migrations/2026-03-09__expand-entity-relation-types.sql
If you already migrated to version 2, apply:
sqlite3 /path/to/sources.db < migrations/2026-03-09__expand-entity-relation-types.sql
These migrations:
source_identifierssource_entity_links.relation_type to include supports, contradicts, and refutesPRAGMA user_version to 3The server checks PRAGMA user_version on connection and will reject older databases until they are migrated.
The implementation is organized under sqlite_lit_server/:
app.py creates the FastMCP instance and registers tools/resourcesdb.py owns connection setup and schema-version checksrepository.py keeps SQL-heavy lookup logic close to the data layertools_admin.py, tools_sources.py, and tools_entities.py hold the MCP toolsresources.py defines the MCP resourcessqlite-paper-fastmcp-server.py remains as a thin compatibility shim.
add_sources is the batch import entrypoint for new sources. It accepts one argument named sources, where each item is:
[title, source_type, identifier_type, identifier_value, initial_note]
initial_note must be either null or an object with both title and content.
Supported source_type values:
paperwebpagebookvideoblogSupported identifier_type values:
semantic_scholardoiarxivopenalexpmidisbnurlDuplicate handling:
Source already exists together with the existing source payload.Potential duplicates found. Please verify or use add_identifiers if these are the same source.Example MCP/JSON payload:
{
"sources": [
[
"Attention Is All You Need",
"paper",
"arxiv",
"1706.03762",
{
"title": "Initial thoughts",
"content": "Transformers start here."
}
],
[
"OpenAlex Import",
"paper",
"openalex",
"W1234567890",
null
]
]
}
Example Python call:
add_sources([
(
"Attention Is All You Need",
"paper",
"arxiv",
"1706.03762",
{
"title": "Initial thoughts",
"content": "Transformers start here.",
},
),
(
"OpenAlex Import",
"paper",
"openalex",
"W1234567890",
None,
),
])
The same tool payloads work whether you start the server locally or through Docker with docker compose run --rm sqlite-lit-mcp.
Plural write tools accept lists and return a per-input result list in the same order. Related batch tools include:
add_notesadd_identifiersupdate_statuslink_to_entitiesAdd another identifier:
add_identifiers([
(
"Attention Is All You Need",
"paper",
"arxiv",
"1706.03762",
"semantic_scholar",
"204e3073870fae3d05bcbc2f6a8e263d9b72e776",
),
])
Read a source resource:
source://by-identifier/arxiv/1706.03762
MCP server integration for DaVinci Resolve Studio
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnos
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots