Sqlite Literature Management Fastmcp
FreeNot checkedA flexible system for managing various types of sources (papers, books, webpages, etc.) and integrating them with knowledge graphs.
About
A flexible system for managing various types of sources (papers, books, webpages, etc.) and integrating them with knowledge graphs.
README
A lightweight FastMCP server for managing literature, notes, entity links, and reading-list resources in a local SQLite database.
Current Scope
This repository provides:
- Local SQLite-backed source management
- Notes attached to sources
- Entity links between sources and named concepts
- Read-only database inspection tools
- MCP resources for source lookup and reading lists
- Normalized identifier storage with a transitional JSON cache
It does not integrate with MCP Memory Server or an external memory graph.
Quick Start
- Create a database from the current schema:
sqlite3 sources.db < create_sources_db.sql
- Install the FastMCP server with your database path:
fastmcp install sqlite-paper-fastmcp-server.py --name "Source Manager" -e SQLITE_DB_PATH=/path/to/sources.db
- Optional: use the checked-in demo fixture at
examples/sources.db.
Docker
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:
- The image defaults
SQLITE_DB_PATHto/data/sources.db. - If the database file does not exist, the container initializes it from
create_sources_db.sql. - If you are mounting an older database, apply the required migrations under
migrations/before starting the server. - This repo runs as a stdio MCP server, so there is no HTTP port to expose by default.
With Docker Compose:
docker compose run --rm sqlite-lit-mcp
Current Tool Surface
Implemented tools:
read_querylist_tablesdescribe_tableget_table_statsget_database_infovacuum_databaseadd_sourcesadd_notesupdate_statusadd_identifierslink_to_entitiesget_source_entitiesupdate_entity_linksremove_entity_linksget_entity_sources
Implemented resources:
source://<id>source://by-identifier/<type>/<value>reading-list://unreadreading-list://readingentity://<entity_name>
Schema Notes
The current schema centers on four tables:
sourcessource_identifierssource_notessource_entity_links
sources.identifiers is still kept as a transitional JSON cache, but identifier lookups now use source_identifiers.
Supported identifier types:
semantic_scholardoiarxivopenalexpmidisbnurl
Supported entity relation types:
discussesintroducesextendsevaluatesappliescritiquessupportscontradictsrefutes
Lightweight provenance fields live on sources:
providerdiscovered_viadiscovered_at
The schema now uses PRAGMA user_version = 3.
Migration
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:
- adds
source_identifiers - backfills identifier rows from the legacy JSON column
- adds provenance fields
- expands
source_entity_links.relation_typeto includesupports,contradicts, andrefutes - updates
PRAGMA user_versionto3
The server checks PRAGMA user_version on connection and will reject older databases until they are migrated.
Package Layout
The implementation is organized under sqlite_lit_server/:
app.pycreates the FastMCP instance and registers tools/resourcesdb.pyowns connection setup and schema-version checksrepository.pykeeps SQL-heavy lookup logic close to the data layertools_admin.py,tools_sources.py, andtools_entities.pyhold the MCP toolsresources.pydefines the MCP resources
sqlite-paper-fastmcp-server.py remains as a thin compatibility shim.
Batch Import Sources
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:
paperwebpagebookvideoblog
Supported identifier_type values:
semantic_scholardoiarxivopenalexpmidisbnurl
Duplicate handling:
- Exact identifier matches return
Source already existstogether with the existing source payload. - Title-based fuzzy matches return
Potential duplicates found. Please verify or use add_identifiers if these are the same source. - Successful batch writes return one result per input item in the same order as the request.
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.
Batch Write Conventions
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_entities
Example Usage
Add 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
from github.com/zongmin-yu/sqlite-literature-management-fastmcp-mcp-server
Installing Sqlite Literature Management Fastmcp
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/zongmin-yu/sqlite-literature-management-fastmcp-mcp-serverFAQ
Is Sqlite Literature Management Fastmcp MCP free?
Yes, Sqlite Literature Management Fastmcp MCP is free — one-click install via Unyly at no cost.
Does Sqlite Literature Management Fastmcp need an API key?
No, Sqlite Literature Management Fastmcp runs without API keys or environment variables.
Is Sqlite Literature Management Fastmcp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Sqlite Literature Management Fastmcp in Claude Desktop, Claude Code or Cursor?
Open Sqlite Literature Management Fastmcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
wenb1n-dev/SmartDB_MCP
A universal database MCP server supporting simultaneous connections to multiple databases. It provides tools for database operations, health analysis, SQL optim
by wenb1n-devPostgres Server
This server enables interaction with PostgreSQL databases through the Model Context Protocol, optimized for the AWS Bedrock AgentCore Runtime. It provides tools
by madhurprashPostgres
Query your database in natural language
by AnthropicPostgreSQL
Read-only database access with schema inspection.
by modelcontextprotocolCompare Sqlite Literature Management Fastmcp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All data MCPs
