octatrack-kb
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
octatrack-kb
Code for building a local knowledge base from the Elektron Octatrack manual and serving it to AI clients through a FastMCP server.
This repository contains code only. The knowledge base is NOT included. The manual is copyrighted by Elektron Music Machines; no manual text, page images, extracted sections, generated guides or search indexes are distributed here. To use the server you must build the KB yourself from your own legally obtained copy of the Octatrack manual PDF.
Not affiliated with, endorsed by, or sponsored by Elektron. Octatrack is a trademark of Elektron Music Machines. All trademarks are the property of their respective owners.
Pipeline
Manual PDF -> page PNG + text layer -> per-page Markdown (vision model via claude CLI) -> section chunks -> concept tags -> concept graph -> task guides -> SQLite index -> MCP server.
Layer | Path (created by you, gitignored) |
Reference chunks |
|
Concept graph |
|
Guides |
|
Index |
|
Schemas: docs/SCHEMAS.md. Script details: build/README.md, docs/BUILDING.md, docs/REPLICATION.md.
Related MCP server: Lore DB MCP Server
Requirements
Python >= 3.12,
uvclaudeCLI withCLAUDE_CODE_OAUTH_TOKEN(fromclaude setup-token) for the model-driven build steps (extract, tag, reconcile, guides). The scripts stripANTHROPIC_API_KEYfrom the subprocess env.Your own copy of the Octatrack manual PDF
Build the KB yourself
uv sync
mkdir -p build/artifacts && cp /path/to/your/octatrack-manual.pdf build/artifacts/oct.pdf
export CLAUDE_CODE_OAUTH_TOKEN="$(tr -d '[:space:]' < /path/to/token-file)"
# 1. Section map -> build/inputs/toc.yaml
uv run python build/tools/build_toc.py
# 2. Render pages (PNG + text layer) -> build/artifacts/pages/
uv run python -c "from build.render import render_pdf; render_pdf('build/artifacts/oct.pdf','build/artifacts/pages')"
# 3. Per-page extraction -> build/artifacts/extracted/ (resumable)
uv run python -m build.extract build/artifacts/pages build/artifacts/extracted build/inputs/prompts/extract_page.md
# 4. Assemble section chunks -> knowledge/reference/
uv run python -c "from build.assemble import assemble; assemble('build/artifacts/extracted','build/inputs/toc.yaml','knowledge/reference')"
# 5. Tag concepts (needs build/inputs/concept-glossary.yaml, see below)
uv run python -m build.tag knowledge/reference build/inputs/concept-glossary.yaml
# 6. Reconcile slugs
uv run python -m build.reconcile generate
uv run python -m build.reconcile apply
# 7. Concept graph -> knowledge/concepts.yaml, knowledge/INDEX.md
uv run python -c "from octatrack_kb.corpus import load_corpus; from octatrack_kb.build_index_files import build_concepts, build_index_md; ch=load_corpus('knowledge/reference'); c=build_concepts(ch,'knowledge/concepts.yaml'); build_index_md(c,'knowledge/INDEX.md')"
# 8. Guides (needs build/inputs/spine-guides.yaml, see below) -> knowledge/guides/
uv run python -m build.guides
# 9. Search index -> server/kb.db
uv run python -c "from octatrack_kb.corpus import load_corpus, load_guides; from octatrack_kb.index import build_index; build_index(load_corpus('knowledge/reference')+load_guides('knowledge/guides'),'server/kb.db')"Inputs you must author yourself (not shipped, they derive from the manual):
build/inputs/concept-glossary.yaml: map ofslug -> {label, aliases}seed for the tagger (build/tools/seed_glossary.pycan seed it from your own usage-mode notes).build/inputs/spine-guides.yaml: list of{id, description, modes, concepts}guide specs (build/tools/parse_spine_guides.pycan parse a Markdown table of your own).
Every stage skips outputs that already exist, so interrupted runs resume. Expect the model-driven stages to consume subscription quota.
Run the MCP server
Env vars (see server/README.md): OCTATRACK_DB, OCTATRACK_REFERENCE, OCTATRACK_CONCEPTS, OCTATRACK_GUIDES (optional).
OCTATRACK_DB=$PWD/server/kb.db OCTATRACK_REFERENCE=$PWD/knowledge/reference \
OCTATRACK_CONCEPTS=$PWD/knowledge/concepts.yaml OCTATRACK_GUIDES=$PWD/knowledge/guides \
uv run python -m server.octatrack_mcpTools: search, get_chunk, get_concept, list_workflows, get_workflow, list_usage_modes, by_usage_mode, compare_approaches. No generative AI runs at query time.
Register with an MCP client
Claude Code / any stdio client: copy server/config.example.json and replace /ABSOLUTE/PATH/TO/octatrack-kb. Claude Code shortcut: run docs/install.sh from the target project directory (writes ./.claude/mcp.json). Claude Desktop: see docs/INSTALL.md.
Tests
uv run --extra dev pytest -qTests use small synthetic fixtures in tests/fixtures/; they do not need the manual.
License
MIT, see LICENSE. The license covers this code only, not the Octatrack manual or anything derived from it.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Self-hosted AI workspace: semantic RAG document search, long-term memory, and AI chat via MCP.
Your personal library, readable by AI agents: durable snapshots, hybrid search, 46 MCP tools.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceA local-first knowledge base server that enables AI clients to store, retrieve, and manage documents using semantic search. Provides privacy-focused, offline-capable memory for AI assistants with tools for ingesting, querying, updating, and deleting knowledge.721 npm-
- AlicenseNot gradedqualityDmaintenanceProvides tools for semantic search, CRUD, verification, and reindexing of documents in a local vector-based knowledge base, usable via HTTP or stdio.MIT
- FlicenseAqualityCmaintenanceGives an LLM client BM25 keyword search over a local corpus of Markdown and text files, letting it find ranked passages, fetch exact chunks with source offsets, read whole documents, and list what was indexed. It runs entirely locally over stdio with an in-memory index, calling no model and requiring no API key.4-
- FlicenseNot gradedqualityAmaintenanceExposes a local hybrid (vector + BM25) index of scattered notes, docs, PDFs, and chat logs to AI hosts like Claude Desktop, Cursor, and Cline, letting agents search and get cited answers. It publishes a set of tools, resources, and prompts so any MCP-compatible client can query that knowledge base with section-level citations.-