MCP server: pre-0.9.20 migrations¶
Historical migration notes for operators upgrading from kglite-mcp-server releases prior to 0.9.20. New users should follow the current setup flow in MCP Servers instead.
Note
As of 0.10.25 the MCP server is again a standalone pure-Rust binary
(cargo install kglite-mcp-server) — the Python entry point described
below (the 0.9.20 era) was retired when the two implementations were
consolidated. This page is kept for historical context only.
Migration: 0.9.19 → 0.9.20¶
kglite-mcp-server is now a Python entry point instead of a bundled
Rust binary. Operator action:
pip install --upgrade kglite
YAMLs unchanged. Tool surface unchanged. fastembed cache directory
unchanged (~/.cache/fastembed/). Performance unchanged (kglite’s
Python cypher() releases the GIL for execution, so the wrapping
layer is sub-microsecond).
What disappeared:
kglite/_bin/kglite-mcp-serverbinary inside the wheel (no longer built).install_name_tool/patchelf/ mold / per-Python-version wheel matrix in CI (no longer needed).The 0.9.18 conda install_name regression (impossible by construction — there’s no binary to mis-link).
Wheel matrix is back to 3 abi3 wheels per release, same as pre-0.9.18.
Migration: 0.9.17 → 0.9.18¶
Embedders: embedder: → extensions.embedder:¶
The framework-level embedder: block (Python class factory) is gone.
Replace with extensions.embedder: (Rust-native fastembed-rs):
# Before (0.9.17 and earlier — no longer parsed)
embedder:
module: ./embedder.py
class: BgeM3Embedder
trust:
allow_embedder: true
# After (0.9.18+)
extensions:
embedder:
backend: fastembed
model: BAAI/bge-m3 # or any fastembed catalog name
Operators with custom embedder.py files don’t need them any more —
fastembed-rs supports BAAI/bge-m3, bge-small/base/large-en-v1.5,
all-MiniLM-L6-v2, and the multilingual-e5 family natively, downloading
ONNX weights on first use to ~/.cache/fastembed/.
tools[].python: → Rust shim or Cypher template¶
Python tool hooks are removed in 0.9.18. Two replacements depending on shape:
If the function is mostly Cypher with light parameter munging, promote it to a
tools[].cypherentry with a$paramtemplate.If it has real logic (HTTP fetch, file parse), write a small downstream Rust binary that embeds the kglite crate directly — see Building a downstream binary in the main guide. The binary calls
kglite::api::CypherExecutor/compute_description/ etc. without any Python boundary.
Wheel install¶
pip install kglite now lands kglite-mcp-server on PATH directly.
The 0.9.17-era discovery flow (otool -L, PYO3_PYTHON=,
install_name_tool -add_rpath) is unnecessary. If your shell still
points at an old cargo install binary, drop it and let pip win.
CSV-over-HTTP¶
The new extensions.csv_http_server block opts into a localhost HTTP
listener that serves FORMAT CSV exports as URLs instead of inline
strings:
extensions:
csv_http_server:
port: 8765
dir: temp/ # relative to the manifest
cors_origin: "*" # optional, defaults to "*"
With this set, a cypher_query that ends in FORMAT CSV writes the
result to temp/kglite-<hash>.csv and returns a
http://127.0.0.1:8765/... URL the agent can fetch when ready.
Useful for million-row exports that would otherwise blow the MCP
response budget.