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"

46 tests, ~1.5s. Use a deterministic local embedder — no external dependencies needed.

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.1.tar.gz (26.9 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.1-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lancedb_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 26.9 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.1.tar.gz
Algorithm Hash digest
SHA256 b5f43f305dd5f32981dec176ff22c0669d9546f13ae46aaa589545b61fe1be57
MD5 b91c59996161403c4d0de58b0f965a0b
BLAKE2b-256 16dd4e186ab2cad4b679df461f6d54149d7873ce61f489eca200ed8cef1ed258

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lancedb_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.0 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 445fedaebfa2fe798533625f0d529e4f542feacc3f38c0b19d1f7149513aeae1
MD5 36deec2615aaa742cdde175c7e49c90c
BLAKE2b-256 c04b31f62398a9323c3f99b509cccc006706d8c9351c478b32683fded0d15cbf

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