Skip to main content

MCP server providing semantic knowledge base with LanceDB storage and configurable embeddings

Project description

lancedb-mcp

MCP knowledge base server for OpenCode with LanceDB storage and OpenAI-compatible embeddings (llama.cpp, Ollama, etc.).

What it does

Provides a semantic knowledge base that your OpenCode agent can use to remember and recall facts, rules, conventions and decisions across sessions. The agent autonomously decides when to store and search — no manual tool invocation needed.

Agent: discovers that "deploy is via make deploy-prod on Wednesdays"
       → calls kb_add("Deploy on Wednesdays via make deploy-prod", source="ops")

Agent: (next session, user asks about deployment)
       → calls kb_search("how to deploy to production")
       → gets: "Deploy on Wednesdays via make deploy-prod" (score: 0.92)
       → answers user correctly

Architecture

OpenCode ──MCP stdio──> lancedb-mcp (Python)
                            ├── LanceDB (on-disk vector storage)
                            └── OpenAI-compat endpoint (llama.cpp, Ollama, etc.)

Quick start

1. Install

cd lancedb-mcp
uv venv
uv sync

2. Start an embedding backend

The server requires an OpenAI-compatible embedding endpoint. Any of these work:

# llama.cpp
llama-server -m model.gguf --embeddings --host 127.0.0.1 --port 8080

# Ollama
ollama serve

3. Configure OpenCode

Add to opencode.json:

{
  "mcp": {
    "knowledge-base": {
      "type": "local",
      "command": ["uv", "run", "lancedb-mcp"],
      "environment": {
        "EMBED_API_BASE": "http://localhost:8080/v1",
        "KB_STORAGE_PATH": ".kb_data"
      },
      "enabled": true
    }
  }
}

Restart OpenCode for changes to take effect.

Tools available to the agent

Tool Description Parameters
kb_add Add text to the knowledge base text (required), source (default: "agent")
kb_search Semantic search, returns JSON [{text, source, score}] query (required), limit (default: 5), source (optional filter)
kb_list List stored documents limit (default: 20)
kb_delete Delete a document by ID doc_id (required)
kb_stats Document count, returns JSON {total_documents: N}

Configuration

Embedding settings (EMBED_*)

Variable Default Description
EMBED_API_BASE Required. URL of your OpenAI-compatible embedding endpoint
EMBED_MODEL "" Model name sent to the endpoint (ignored by llama.cpp)
EMBED_API_KEY "" API key (ignored by llama.cpp, required for cloud endpoints)
EMBED_DIM 2560 Expected embedding dimension. Validated against the model's output on every call; a mismatch raises a clear error. Default matches Qwen3-Embedding-4B (2560). Set to your model's size, e.g. 384 (MiniLM), 1024 (Qwen3-0.6B), 4096 (Qwen3-8B).

Storage settings (KB_*)

Variable Default Description
KB_STORAGE_PATH .lancedb_data Directory for LanceDB files
KB_TABLE_NAME knowledge Table name inside LanceDB

CLI flags

lancedb-mcp --help
  --transport {stdio,sse,streamable-http}  # MCP transport (default: stdio)
  --host 127.0.0.1                          # Host for SSE/HTTP modes
  --port 8001                               # Port for SSE/HTTP modes
  --top-k 5                                 # Max search results

Storage

Data is stored as LanceDB tables on disk. Each table:

Column Type Description
id string Auto-generated document ID
vector float32[n] Embedding vector
text string Original document text
source string Origin tag (agent, user, ops, dev, ...)

Use the source field to organize facts by domain and filter via kb_search(source="ops").

Running tests

Unit tests

uv run pytest tests/ -v -k "not integration"

Integration tests

Require a running OpenAI-compatible embedding endpoint (e.g. llama.cpp on localhost:8080):

uv run pytest tests/test_integration.py -v

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lancedb_mcp-0.1.2.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lancedb_mcp-0.1.2-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file lancedb_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: lancedb_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.05","id":"yarara","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lancedb_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7b59c3a3bdd3235fddea33558a20b06901d00eb10953857e6264a20b212a6e32
MD5 e1cd843f2f7d8f927d333cd92baeaf48
BLAKE2b-256 d5bd9e134fef4bf88bef5a33703b58c8965342a717ba434dd7f14e564ef6aebb

See more details on using hashes here.

File details

Details for the file lancedb_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: lancedb_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"NixOS","version":"26.05","id":"yarara","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lancedb_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2557b241625946ddc140e8663c555667ef06266b944ee8057d3b4d175af2fa50
MD5 af7bd4a8778b7b16b09eccb85dc2655c
BLAKE2b-256 cdedbd7981648c72501e17a5db454d18fe246dd21fe21719748748639d096aeb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page