lore-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DB_HOST | No | PostgreSQL host (required if DB_BACKEND=postgres) | |
| DB_NAME | No | PostgreSQL database name (required if DB_BACKEND=postgres) | |
| DB_PORT | No | PostgreSQL port (required if DB_BACKEND=postgres) | |
| DB_USER | No | PostgreSQL user (required if DB_BACKEND=postgres) | |
| DB_BACKEND | No | Database backend: sqlite or postgres. Default: sqlite | sqlite |
| LORE_RRF_K | No | RRF constant for hybrid search. Default: 10 | 10 |
| DB_PASSWORD | No | PostgreSQL password (required if DB_BACKEND=postgres) | |
| LORE_EMBEDDING_MODEL | No | Model for embeddings. Default: all-MiniLM-L6-v2 | all-MiniLM-L6-v2 |
| LORE_SEMANTIC_SEARCH | No | Master switch to enable semantic search (true/false). Default: false | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| kb_addC | Add a knowledge base entry |
| kb_searchB | Search knowledge base. Lexical FTS5 (or LIKE fallback) by default; set semantic=true / hybrid=true / search_mode=hybrid to use vector embeddings + RRF fusion (requires LORE_SEMANTIC_SEARCH=true). |
| kb_getB | Get full KB entry by ID |
| kb_get_batchB | Fetch full content for multiple KB entries by ID. Use after kb_search to retrieve content without N+1 round trips. |
| kb_listC | List KB entries |
| kb_updateB | Update existing KB entry content, title, topic, tags, verified state, and trust_score |
| kb_deleteC | Delete existing KB entry from database |
| investigation_addC | Add an investigation entry (open or append to an ops investigation) |
| investigation_listD | List investigations |
| investigation_getB | Get a single investigation entry by ID |
| investigation_log_experimentC | Log a structured experiment within an investigation (hypothesis, methodology, results, conclusion) |
| investigation_list_experimentsA | List logged investigation experiments |
| investigation_delete_noteA | Hard-delete an investigation note by note_id (Issue #21). Requires confirm=True; in LORE_ENV=production also requires confirm_production=True. |
| investigation_delete_experimentA | Hard-delete an investigation experiment by experiment_id (Issue #21). Requires confirm=True; in LORE_ENV=production also requires confirm_production=True. |
| journal_appendC | Append journal entry |
| journal_listC | List journal entries |
| journal_getC | Get journal entry |
| journal_searchC | Full-text search across journal entry content (Issue #15) |
| journal_deleteA | Hard-delete a journal entry by entry_id (Issue #21). Requires confirm=True; in LORE_ENV=production also requires confirm_production=True. |
| snapshot_configD | Snapshot current config |
| kb_ingest_docC | Ingest single markdown file into KB with change detection |
| kb_ingest_dirC | Batch ingest directory of markdown files |
| kb_sync_statusC | Check sync state between source docs and KB |
| kb_backfill_embeddingsA | Embed any KB entries that are missing or stale (model/content changed). Idempotent: skips entries whose stored content_hash still matches. Requires LORE_SEMANTIC_SEARCH=true. |
| kb_embedding_statusA | Report embedding coverage: total entries, embedded count, missing count, current model, and per-model breakdown. |
| mcp_index_scanB | Scan all MCP servers and index their tools. By default, scans only configured servers (66% token savings). |
| mcp_index_searchC | Search for MCP tools by description/capability |
| mcp_index_get_serverC | Get all tools for a specific MCP server |
| mcp_index_get_toolC | Get detailed information about a specific tool |
| mcp_index_rebuildB | Force rebuild of entire MCP index (same as mcp_index_scan) |
| search_localC | Search local files by content (lexical mode) |
| search_corporaC | Search across corpus manifests (JSONL files) |
| search_transcriptsC | Search transcript segments from Whisper outputs |
| multi_searchA | Search across all configured sources simultaneously (KB, local files, transcripts, corpora) with a single query. Returns combined results from all available sources. For searching within a specific source only, use kb_search, search_local, search_transcripts, or search_corpora instead. |
| deduplicate_resultsC | Remove duplicate search results based on text similarity |
| cluster_resultsA | Groups search results by source_type (file extension, corpus, transcript). The cluster count is determined by the data, not by a parameter — Issue #22 removed the previously-misleading num_clusters/n_clusters knobs. |
| log_retrieval_feedbackA | Score or annotate a prior kb_search result by its query_id (retrieval telemetry, issue #5). Supply user_feedback_score, required_requery, notes, or any combination; an omitted field is left unchanged (cannot be reset to null). No effect unless LORE_HARD_NEGATIVE_MINING=true on a PostgreSQL backend. |
| get_retrieval_telemetryA | Read retrieval telemetry rows (issue #5). Selector precedence: query_id > session_id > topic > recent. Returns newest-first. |
| get_telemetry_statsA | Aggregate retrieval telemetry stats (issue #5): totals, feedback coverage, requery count, average score, oldest/newest timestamps. Optionally scoped by session_id and/or topic. |
| refresh_hard_negativesA | Scan retrieval_telemetry for low-scored and requery signals, then upsert hard negative pairs into knowledge.hard_negative_pairs. Use since= for incremental refresh. dry_run=true returns counts without writing. Requires LORE_HARD_NEGATIVE_MINING=true. |
| get_hard_negativesA | Read hard negative (query, document) pairs from knowledge.hard_negative_pairs. Filter by signal_type (explicit/behavioral/all), doc_id, or query_text_like. Returns pairs sorted by occurrence_count DESC. |
| backfill_query_embeddingsA | Backfill query_embedding column in retrieval_telemetry for rows that predate Phase 4a. Processes rows in batches. Set build_index=true to also create the HNSW index after backfill. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/davidgut1982/lore-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server