Study Database MCP
Supports using OpenAI embeddings for improved retrieval quality in the knowledge server.
Click on "Install 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., "@Study Database MCPintegrate x^2 from 0 to 1"
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.
Life MCP
A self-hosted, local-first personal knowledge system you reach through Claude / Cowork (over MCP) or by reading plain Markdown files directly. No web app, no cloud backend, no account, nothing to host.
Three parts:
Markdown vault — the source of truth. Every note is a plain
.mdfile with YAML frontmatter you can open, edit, grep, and back up yourself.The Librarian — a knowledge server that indexes the vault (plus a catalog of your SCHOOL documents) and answers with hybrid search (vector + lexical) and citations, handing what it finds to the LLM that queries it.
Google Calendar + Gmail connectors — read-only ingestion that turns your calendar (the source of truth for scheduling, tasks, and reminders) and mail into vault notes, deduped by
source_refso re-syncs update in place.
Everything is served over MCP stdio: the servers run locally as subprocesses of Claude Desktop / Cowork. There is deliberately no HTTP server, no Docker, and no separate app.
Layout
servers/vault/ Markdown vault back end + its MCP server
(capture · search_vault · timeline · sync_google)
servers/vault/connectors/ Google Calendar + Gmail (OAuth + read-only fetch → notes)
servers/knowledge/ the Librarian: chunk · embed · store · retrieve · catalog · server
scripts/ reindex · catalog · vault_sync · vault_index · vault_import · vault_schedule
vault/ YOUR Markdown vault (gitignored; the source of truth)
data/ generated index + SCHOOL catalog (gitignored)
tests/ offline self-checks (no API key or network needed)Related MCP server: mcp-calculator
Setup
Requires Python 3.10+ (built/tested on 3.12).
python3.12 -m venv .venv && source .venv/bin/activate
# Core (vault + Librarian; runs fully offline with the numpy store + hash embedder):
pip install -e ".[knowledge]"
# Recommended — real local semantic search (free, private, no cloud round-trip):
pip install -e ".[knowledge,embeddings-local]"
# Google Calendar + Gmail connectors:
pip install -e ".[connectors-google]"
# Optional — PDF→Markdown for school docs, and encrypted secrets at rest:
pip install -e ".[pdf-pymupdf,crypto]"
cp .env.example .env # defaults are sane; keep EMBEDDING_PROVIDER=localThe vault + the Librarian
The vault is a plain Markdown tree (00-inbox, 10-journal, 20-people,
30-projects, 40-areas, 50-resources, 60-sources, 90-archive). A derived
SQLite index (.vault/index.db) powers retrieval; it's rebuildable from the
Markdown at any time, so the files always win.
Vault MCP tools: search_vault (hybrid vector + BM25 with citations), get_note,
timeline, capture / quick_note / append_to_journal, list_inbox,
related, find_duplicates, prune_expired, reindex, set_credential.
Librarian (knowledge) MCP tools: search_notes, get_section, synthesize,
related_concepts, plus the SCHOOL catalog: list_courses, find_documents,
catalog_stats. Build the catalog once with python scripts/catalog.py.
Search is hybrid: a vector retriever (embedding cosine) and a lexical retriever
(BM25) fused with Reciprocal Rank Fusion, so both semantic matches and exact terms
(names, course codes) surface. Real semantics require a real embedder — set
EMBEDDING_PROVIDER=local and install embeddings-local, then reindex.
Google Calendar + Gmail (read-only)
The connectors ingest your calendar and mail as vault notes. Least-privilege, read-only scopes only. One-time setup:
Create an OAuth Desktop app client in Google Cloud Console (APIs & Services → Credentials); enable the Calendar API and Gmail API. For personal use set the OAuth consent screen to Internal (or add yourself as a Test user) to avoid the verification wall.
Store the client id/secret with the
set_credentialMCP tool (google_oauth_client_id,google_oauth_client_secret).Grant consent:
python scripts/vault_sync.py --setup(opens a browser once).Sync:
python scripts/vault_sync.py --calendar --gmail(or thesync_googletool). Preview Gmail first with--preview/ thepreview_gmailtool. Checkgoogle_auth_status/--statusany time.
Calendar events land in 40-areas/calendar/. Gmail is a firehose, so it is
triaged, not mirrored: each message is classified from its headers/labels and
either kept as its own clean, importance-scored note (starred/important/personal),
rolled into one weekly digest note (newsletters, job alerts, list mail), or
skipped entirely (promotions, social, drafts). All of it lands in an ephemeral
50-resources/mail/ with class-based TTLs (unpinned mail auto-archives; starred
keepers don't expire). Tune what's fetched with GOOGLE_GMAIL_QUERY and inspect
the plan with preview_gmail before syncing.
Register with Claude Desktop / Cowork
See claude_desktop_config.example.json (Desktop) and cowork_config.example.json
(Cowork). Use the venv's Python and absolute paths, e.g.:
{
"mcpServers": {
"knowledge": { "command": "/abs/.venv/bin/python", "args": ["/abs/servers/knowledge/server.py", "--stdio"] },
"vault": { "command": "/abs/.venv/bin/python", "args": ["/abs/servers/vault/server.py", "--stdio"] }
}
}Tests
Offline self-checks (no deps beyond the core install, no network):
.venv/bin/python tests/check_vault.py # vault CRUD, index, search contract
.venv/bin/python tests/check_knowledge.py # chunker, incremental, citations, graph
.venv/bin/python tests/check_catalog.py # SCHOOL catalog: dedup, naming, rescan
.venv/bin/python tests/check_vault_google.py # Google OAuth + live-fetch wiring (mocked)
.venv/bin/python tests/check_vault_connectors.py # connector sync/cursor contract
.venv/bin/python tests/check_vault_mail_triage.py # Gmail triage: classify · clean · digest
.venv/bin/python tests/check_vault_hybrid.py # hybrid vector + lexical retrievalScaling later (not needed now)
Postgres + pgvector (and the Docker deployment) were removed to keep this lean and
local. SQLite already stores chunk embeddings and does brute-force cosine + BM25
hybrid search, which is plenty at personal scale. If a vault ever grows into the
hundreds of thousands of chunks, pgvector is the documented upgrade path (add a
backend, reindex) — see docs/vision/03-architecture.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mchdeore/study-database-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server