strata-mcp
Provides a libSQL/Turso-backed knowledge graph for personal archives and websites, enabling storage and querying of archive entities, relations, source documents, notes, publish projections, status feed, and media metadata.
Integrates with Vercel Blob for media storage and Vercel ISR for cache revalidation, enabling media sync, variant generation, and purging site caches after content writes.
Click on "Deploy 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., "@strata-mcpsearch my archive for glacier and show related notes and sources"
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.
Strata
Strata is a knowledge graph for a personal archive and the website published from it. It stores everything in one libSQL (Turso) database:
Archive entities: works, projects, talks, events, people, places, themes, notes, with a markdown body and frontmatter.
Relations between entities and source documents (
derived_from,shown_at,involved, ...).Source documents: raw imported text, chunked for search.
Notes: private captures, kept as entities of type
noteand served as a memory stream.Publish projections: the block or markdown content a site renders, versioned by revision.
Status feed: dated entries (Reading, Travelling, Listening, ...) plus optional note pages.
Media: images copied to Vercel Blob with responsive variants and rights metadata.
It ships as a CLI (strata), an MCP server (strata-mcp) and a TypeScript library. The site that renders the content is yours to write; Strata is the data layer behind it.
Install
npm install -g @marcuswendt/strata
# or per project
npm install @marcuswendt/strataRequires Node 22.12 or later. Image variant generation uses the optional dependency sharp.
Related MCP server: braintube-mcp
Database
Strata talks to libSQL over HTTP using @libsql/client/web, so the same code runs in serverless functions. That client cannot open file: URLs. For local work run a libSQL server:
sqld --db-path ./strata.sqld --http-listen-addr 127.0.0.1:8080
# or
turso dev --db-file ./strata.db --port 8080and set STRATA_DATABASE_URL=http://127.0.0.1:8080. For Turso, use the libsql:// URL and an auth token. The schema is applied automatically on first use.
Configuration
Settings are read from, in order of precedence:
the process environment
the file given with
--env-file <path>(both binaries accept it).env.localin the current working directory.envin the current working directory
A value set earlier is never overridden by a later source.
Variable | Purpose |
| libSQL URL (required). |
| libSQL auth token. |
| Vercel Blob token, needed for |
| Name used in MCP tool descriptions. Neutral wording when unset. |
| Public site URL used for links in MCP results. Without it links are |
| Base URL for cache purges after writes. Defaults to |
| Token sent as |
| JSON map of page slug to route, for slugs that do not render at |
| Comma list purged by |
| Comma list purged after |
| Comma list of page slugs linked from site navigation, so |
Cache purging is optional. Without a revalidate URL and token, writes skip it silently.
CLI
Every command takes --json for machine-readable output. strata <command> --help lists the options.
strata status # database URL and table counts
strata capture "an idea worth keeping" # private note
strata search "glacier" # notes, source chunks and entities
strata search "glacier" --scope public # public entities only
strata context "glacier" --purpose talk_brief
strata get work:glacier-light --body --relations
strata list workGroup | Commands |
Query |
|
Notes |
|
Sources |
|
Archive |
|
Publishing |
|
Status feed |
|
People |
|
Media |
|
Health |
|
Other |
|
In search and context results, private notes appear once, in the memory stream. They are not repeated among archive entities unless you ask for --type note.
MCP
strata-mcp is an MCP server on stdio (newline-delimited JSON-RPC). Add it to a client such as Claude Code or Claude Desktop:
{
"mcpServers": {
"strata": {
"command": "npx",
"args": ["-y", "-p", "@marcuswendt/strata", "strata-mcp", "--env-file", "/path/to/strata.env"]
}
}
}Tools: search, fetch, strata_search, strata_get, strata_context, strata_list, status_list, strata_status, strata_page_blocks, strata_diff, strata_page_replace, strata_doctor, strata_surfaces_orphans, strata_media_originals. Pass --public to expose only search and fetch, restricted to public content.
To serve MCP over HTTP from your own app, use the tool layer directly:
import { buildStrataMcpTools, callStrataMcpTool } from "@marcuswendt/strata/mcp";Library
import {
createStrataClient,
resolveStrataDatabaseConfig,
applyStrataSchema,
captureStrataMemory,
strataSearch,
getPublishedContent,
} from "@marcuswendt/strata";
const config = resolveStrataDatabaseConfig(); // or { url, authToken }
const db = createStrataClient(config);
await applyStrataSchema(db);
await captureStrataMemory(db, { title: "First note", body: "..." });
const results = await strataSearch(db, { query: "note", scope: "private" });
db.close();All repository functions take the libSQL client as their first argument. Types are included.
Development
npm install
npm run build # tsc to dist/
npm run assets # regenerate the bundled policy assets after editing assets/License
MIT, see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
OAuth-protected, read-only-by-default MCP server for provenance-labeled QuillCaddie project memory.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceLocal MCP server for indexing personal knowledge into SQLite with hybrid search, chunk-level citations, memory tools, and agent orchestration.4MIT
- FlicenseAqualityBmaintenancePersistent knowledge-base MCP server. Semantic search with source citations over saved YouTube videos, podcasts, articles and PDFs — one endpoint for every MCP-capable AI client.28-
- AlicenseBqualityCmaintenanceUniversal documentation knowledge-graph MCP server with hybrid full-text + vector search. Indexes local files and remote sources from Notion, Jira, Obsidian, Linear, GitHub, and Confluence into a single SQLite knowledge graph, exposing it to AI agents via the Model Context Protocol.109 npmMIT
- AlicenseAqualityBmaintenancePersistent knowledge graph MCP server with SQLite backend. Enables graph traversal, fuzzy search, temporal queries, and timestamps for entity management.12MIT