Skip to main content
Glama
README.md
<div align="center">

# šŸ›ļø ARCHON-KB

### *High-Performance Technical Knowledge Base & MCP Server*

**Deterministic Graph-RAG • PostgreSQL 17 • pgvector (HNSW) • Reciprocal Rank Fusion • Systems & Reverse Engineering**

[![Python 3.10+](https://img.shields.io/badge/python-3.10+-3776AB.svg?style=flat-square&logo=python&logoColor=white)](https://www.python.org/)
[![PostgreSQL 17](https://img.shields.io/badge/PostgreSQL-17-336791.svg?style=flat-square&logo=postgresql&logoColor=white)](https://www.postgresql.org/)
[![pgvector HNSW](https://img.shields.io/badge/pgvector-HNSW-2ea44f.svg?style=flat-square)](https://github.com/pgvector/pgvector)
[![MCP Protocol](https://img.shields.io/badge/MCP-Standard%20FastMCP-orange.svg?style=flat-square)](https://modelcontextprotocol.io/)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)

---

</div>

## ⚔ Overview

**Archon-KB** is an industrial-grade, deterministic Technical Knowledge Base and **Model Context Protocol (MCP)** server engineered specifically for systems programming, kernel architecture, hardware specifications, and reverse engineering research.

Naive RAG pipelines fail in low-level engineering domains: they slice code blocks across arbitrary token counts, butcher SMBIOS structs, drop IOCTL codes, and hallucinate entity links. **Archon-KB solves this at the database engine layer** by combining:

1. **Hierarchy-Preserving AST Markdown Parser**: Retains full heading ancestry, code blocks, tables, and exact line-level provenance with **zero data loss**.
2. **Domain-Specific Entity Graph Extractor**: Automatically identifies IOCTLs, WMI classes, NT native APIs, SMBIOS table types, drivers, devices, and RVAs.
3. **5-Stage Hybrid Retrieval Pipeline**: Exact Match + GIN Full-Text Lexical Search + pgvector HNSW Cosine Similarity fused via **Reciprocal Rank Fusion (RRF)**.
4. **Token-Dense FastMCP Server**: Native MCP integration with AI agents (**Claude Desktop**, **Antigravity**, **Cursor**, **Windsurf**).

---

## šŸ”¬ Architecture & Retrieval Pipeline

```mermaid
flowchart TD
    Query["User / Agent Query (e.g. 'IOCTL 0x800021DC' or 'SMBIOS Type 17')"] --> Stage1["1. EXACT IDENTIFIER MATCH (+2.5 Boost)\nDirect match on Canonical Name, Aliases, IOCTL Hex, RVAs"]
    Query --> Stage2["2. LEXICAL FULL-TEXT SEARCH\nPostgreSQL GIN tsvector + ts_rank_cd"]
    Query --> Stage3["3. VECTOR COSINE SIMILARITY\npgvector <=> HNSW Index (384-dim Embeddings)"]
    
    Stage1 --> Fuse["4. RECIPROCAL RANK FUSION (RRF)\nRRF Score = 1.0 / (k + rank) + Boost"]
    Stage2 --> Fuse
    Stage3 --> Fuse
    
    Fuse --> Stage4["5. KNOWLEDGE GRAPH TRAVERSAL\nExtracts: CONTAINS, CALLS, USES, MAPS_TO_WMI, HAS_PROPERTY"]
    Stage4 --> Stage5["6. VERBATIM PROVENANCE INJECTION\nLine-accurate citations, heading paths, and code excerpts"]
    Stage5 --> Output["Token-Dense Entity Card + Context Chunks"]
```

---

## 🌟 Key Capabilities

### 1. Zero-Hallucination Technical Entity Extraction
Extracts and indexes domain entities out-of-the-box:
- **Kernel IOCTLs & FSCTLs**: Standard codes and raw hex values (e.g. `0x2D1400`, `0x800021DC`).
- **Firmware & SMBIOS**: Complete SMBIOS specification tables (Types 0 to 127: BIOS, BaseBoard, Processor, OEM Strings, Memory Serials).
- **WMI Classes & Namespaces**: `root\cimv2`, `root\wmi`, properties, and PowerShell CIM invocation methods.
- **Native & Win32 APIs**: `Nt*`, `Zw*`, `Rtl*`, `Ob*`, `Io*`, `DeviceIoControl`, `GetSystemFirmwareTable`.
- **Drivers & Device Objects**: System drivers (`.sys`), kernel devices (`\Device\...`).
- **Disassembly RVAs**: Relative virtual addresses for binary inspection.

### 2. Multi-Provider Embedding Engine
- **Local Deterministic Hasher**: Built-in 384-dimensional unit vectorizer with zero external dependencies.
- **FastEmbed / Sentence-Transformers**: Plug-and-play support for `BAAI/bge-small-en-v1.5` or any HuggingFace model.
- **Configurable Vector Dimensions**: Fully adjustable via `EMBEDDING_DIM` environment variable.

### 3. Strict Provenance (Line-Accurate Auditing)
Every entity and assertion links back to its exact document:
- Source file path & SHA256 hash
- Full heading breadcrumb path
- Exact line numbers (`start_line` to `end_line`)
- Verbatim source quote snippet

---

## šŸš€ Quickstart

### Prerequisites
- Python 3.10+
- PostgreSQL 17 (with `pgvector` extension recommended)

### 1. Start PostgreSQL with pgvector (Docker)
```bash
docker run -d \
  --name archon-postgres \
  -e POSTGRES_DB=technical_kb \
  -e POSTGRES_USER=postgres \
  -e POSTGRES_PASSWORD=postgres \
  -p 5432:5432 \
  pgvector/pgvector:pg17
```

### 2. Clone & Install
```bash
git clone https://github.com/DeFexNN/archon-kb.git
cd archon-kb
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
# source .venv/bin/activate

pip install -r requirements.txt
```

### 3. Initialize Database Schema
```bash
# Using psql:
psql -h localhost -U postgres -d technical_kb -f migrations/init.sql
```

### 4. Ingest Technical Documents
```bash
# Ingest single markdown document:
python scripts/import_file.py examples/sample_hardware_kernel_doc.md

# Or ingest an entire directory recursively:
python scripts/import_directory.py path/to/your/research_notes/
```

### 5. Verify Database Integrity
```bash
python scripts/validate_integrity.py
```

---

## šŸ”Œ MCP Client Configuration

Archon-KB implements the standard Model Context Protocol via **FastMCP**. Add it to your AI toolchain in seconds:

### Claude Desktop
Add to `%APPDATA%\Claude\claude_desktop_config.json`:
```json
{
  "mcpServers": {
    "archon-kb": {
      "command": "python",
      "args": [
        "C:\\Archon-KB\\src\\mcp_server.py"
      ],
      "env": {
        "PYTHONPATH": "C:\\Archon-KB",
        "PGHOST": "localhost",
        "PGPORT": "5432",
        "PGDATABASE": "technical_kb",
        "PGUSER": "postgres",
        "PGPASSWORD": "your_password"
      }
    }
  }
}
```

### Google Antigravity / Cursor / Windsurf
Add to your IDE's MCP configuration (`mcp_config.json`):
```json
{
  "mcpServers": {
    "archon-kb": {
      "command": "C:\\Users\\<USER>\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
      "args": [
        "C:\\Archon-KB\\src\\mcp_server.py"
      ],
      "env": {
        "PYTHONPATH": "C:\\Archon-KB"
      }
    }
  }
}
```

---

## šŸ› ļø MCP Tools Reference

When connected, AI agents gain access to the following native tools:

| Tool | Parameters | Description |
| :--- | :--- | :--- |
| `lookup_technical_entity` | `identifier: str` | Fast direct lookup for exact identifiers (IOCTLs, WMI, APIs, RVAs). Returns complete entity card in 1 call. |
| `search_technical_knowledge` | `query: str, limit: int` | 5-stage hybrid search combining lexical GIN + vector HNSW via RRF. Returns matched entities and code chunks. |
| `get_kb_health_status` | *(none)* | Returns real-time health status, document counts, chunk counts, and relationship metrics. |

---

## šŸ“Š Benchmarks & Health Check

Output from `scripts/validate_integrity.py`:
```text
======================================================================
ARCHON-KB INTEGRITY & HEALTH AUDIT REPORT
======================================================================
Total Documents:                     47
Total Structural Chunks:          5,260
Total Extracted Entities:           898
Total Entity Properties:            430
Total Retrieval Methods:            210
Total Knowledge Relationships:      200
Total Evidence Citations:         4,120

Vector Embeddings Health:
  * Entities with Vector:           898 / 898 (100.0%)
  * Chunks with Vector:           5,260 / 5,260 (100.0%)

Provenance Integrity:
  * Entities with Direct Evidence:  898 / 898 (100.0%)

Total Database Disk Footprint:    89 MB
======================================================================
```

---

## šŸ“ Repository Structure

```text
archon-kb/
ā”œā”€ā”€ config/
│   └── mcp_clients_example.json   # Ready-to-use client JSON configurations
ā”œā”€ā”€ docs/                          # Placeholder for your local markdown files
ā”œā”€ā”€ examples/
│   └── sample_hardware_kernel_doc.md # Reference technical specification
ā”œā”€ā”€ migrations/
│   └── init.sql                   # PostgreSQL 17 DDL + pgvector schema
ā”œā”€ā”€ scripts/
│   ā”œā”€ā”€ import_file.py             # Single document ingestion engine
│   ā”œā”€ā”€ import_directory.py        # Recursive bulk directory ingester
│   ā”œā”€ā”€ reindex.py                 # Full database re-chunker & re-embedder
│   ā”œā”€ā”€ test_search.py             # Terminal CLI search testing utility
│   └── validate_integrity.py      # Health & zero data loss auditor
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ config.py                  # Centralized configuration loader
│   ā”œā”€ā”€ mcp_server.py              # FastMCP server with stdio/sse transports
│   ā”œā”€ā”€ api/
│   │   ā”œā”€ā”€ kb_service.py          # High-level Knowledge Base API
│   │   └── llm_tools.py           # Token-dense LLM search interface
│   ā”œā”€ā”€ embeddings/
│   │   └── embedding_engine.py    # Multi-backend vectorizer (Hash/ST/FastEmbed)
│   ā”œā”€ā”€ extraction/
│   │   └── entity_extractor.py    # Technical regex & graph link extractor
│   ā”œā”€ā”€ normalization/
│   │   └── normalizer.py          # Entity deduplication & conflict tracker
│   ā”œā”€ā”€ parser/
│   │   └── markdown_parser.py     # AST heading, table & code block parser
│   └── retrieval/
│       └── hybrid_search.py       # 5-Stage RRF Hybrid Retrieval Engine
ā”œā”€ā”€ tests/
│   ā”œā”€ā”€ test_extractor_fixtures.py # Entity extraction test cases
│   ā”œā”€ā”€ test_parser_fixtures.py    # Structural parsing test cases
│   └── test_retrieval_rrf.py      # Reciprocal Rank Fusion test cases
ā”œā”€ā”€ .env.example
ā”œā”€ā”€ .gitignore
ā”œā”€ā”€ LICENSE
ā”œā”€ā”€ pyproject.toml
ā”œā”€ā”€ README.md
└── requirements.txt
```

---

## āš™ļø Environment Variables

| Variable | Default | Description |
| :--- | :--- | :--- |
| `PGHOST` | `localhost` | PostgreSQL host |
| `PGPORT` | `5432` | PostgreSQL port |
| `PGDATABASE` | `technical_kb` | PostgreSQL database name |
| `PGUSER` | `postgres` | PostgreSQL username |
| `PGPASSWORD` | `postgres` | PostgreSQL password |
| `EMBEDDING_MODEL` | `local-semantic-384` | Model name or embedding provider |
| `EMBEDDING_DIM` | `384` | Embedding vector dimensions |
| `KB_RECOGNIZED_FOLDERS`| *(defaults)* | Comma-separated analysis workspace folder names |

---

## šŸ›”ļø License

This project is licensed under the [MIT License](LICENSE) Ā© 2026 DeFexNN.

TDQS

B3.1/5.0

Scored across 3 tools

Disambiguation4/5

lookup_technical_entity and search_technical_knowledge both retrieve technical info, but the descriptions clearly separate exact-identifier canonical lookup from broad 5-stage hybrid search. get_kb_health_status is unambiguously distinct (operational metrics only).

Naming Consistency4/5

All three follow a snake_case verb_noun pattern (get_/lookup_/search_ + object). The 'kb' abbreviation in get_kb_health_status is a minor deviation from the other two using full domain nouns, but the convention is still readable and predictable.

Tool Count4/5

Three focused tools suit a read-only technical KB retrieval server: health, point lookup, and search cover the core surface without bloat. It sits near the thin edge, but each tool earns its place with a distinct role.

Completeness3/5

Read paths are well covered (search + exact lookup + health), but there is no way to enumerate or browse entities, list available entity types/document sets, or fetch related entities except via lookup. Agents hitting an unknown identifier must fall back to search, which is a notable gap for a KB server.