Semantic search MCP server for an Acumatica KB Obsidian vault (Smart Connections embeddings)
Project description
grp-kb-mcp
Semantic search MCP server for the Acumatica KB Obsidian vault.
Reuses the embeddings already computed by the Smart Connections plugin (TaylorAI/bge-micro-v2, 384-dim).
Published as grp-kb-mcp on PyPI (the import package stays kb_mcp). Note: unlike a
turnkey library, this still requires an Obsidian vault with Smart Connections embeddings
already computed — installing from PyPI saves you the git clone + editable-install step,
not the vault/index setup below.
Tools
| Tool | What it does |
|---|---|
search_kb(query, top_k, source_only, guide_filter) |
Semantic search — embed query, cosine-search ~89k vectors, return top results with snippet |
read_kb_file(path) |
Read full content of a KB file by relative path |
Setup
1. Install
cd path\to\kb-mcp
python -m venv .venv
.venv\Scripts\activate
pip install -e .
2. Build the index (run once, ~2 min)
# with .venv active, from the kb-mcp folder:
set KB_VAULT_DIR=path\to\Acumatica-KB
python -m kb_mcp.build_index
This creates kb_index.npy and kb_meta.json inside src\kb_mcp\.
Re-run only if you add new notes to the vault (and re-index in Obsidian Smart Connections first).
Multiple vaults
The index can ingest extra Smart Connections vaults alongside the primary one via
KB_EXTRA_VAULTS — a ;-separated list of LABEL=PATH pairs. Each extra vault's
records get guide=LABEL (so search_kb(..., guide_filter="GRP") isolates them)
and an absolute vault_root baked into the metadata, so the server needs no extra
env — it reads those files from the baked-in root. Records under copilot/ are
skipped as plugin cruft.
$env:KB_VAULT_DIR = "C:\...\Acumatica-KB"
$env:KB_EXTRA_VAULTS = "GRP=C:\...\GRPUserManuals-Markdown"
python -m kb_mcp.build_index
Or just run .\rebuild.ps1 (has both vault paths baked in). Restart the kb-mcp
server afterward — it loads the index once at startup.
3. Register with Claude Desktop
Add to claude_desktop_config.json (found at %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"kb-mcp": {
"command": "C:\\path\\to\\kb-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "kb_mcp.server"],
"env": {
"KB_VAULT_DIR": "C:\\path\\to\\Acumatica-KB"
}
}
}
}
Restart Claude after adding.
4. First query (model download)
The TaylorAI/bge-micro-v2 model (~45 MB) downloads automatically on the first search_kb call and is cached locally by HuggingFace.
Environment variables
| Variable | Default | Description |
|---|---|---|
KB_VAULT_DIR |
auto-detected | Path to the Acumatica-KB vault folder |
KB_MCP_INDEX_DIR |
src/kb_mcp/ |
Where kb_index.npy and kb_meta.json live |
KB_SNIPPET_LINES |
30 |
Lines to include in each result snippet |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file grp_kb_mcp-0.1.0.tar.gz.
File metadata
- Download URL: grp_kb_mcp-0.1.0.tar.gz
- Upload date:
- Size: 7.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a4d42712fb736d45375ee9b25b9fc9af15efe1c2e1ef4992c5b36946c94fe9f2
|
|
| MD5 |
c2e893a7ea6d0dcba3a3da05e91eafe0
|
|
| BLAKE2b-256 |
d62169dd9fa80e78ec05526556337397117077e7950c413361b762602ca0cbfd
|
File details
Details for the file grp_kb_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: grp_kb_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd3e5f1d91a924fdcb2ab3733bab7d1e090fc5cbfb47c4d9c38346ffe60f2a46
|
|
| MD5 |
ddd1f8611aa781c4dc2a49eb5f8911cc
|
|
| BLAKE2b-256 |
02993d8c55a2a4029ecb67a0c4f70efdd4108a8c7315afcce308de4a50a00bea
|