database

A set of database design rules for Code-Index-MCP, covering SQLite storage, table structure, and full-text search. Each project keeps its own portable database file.

In plain words
What is it for?
Use it when designing or changing the database behind a code index. It helps define tables for files and symbols and configure search across file contents.
Why use it?
It provides a consistent way to store project files, code symbols, and imports so they can be searched and managed predictably.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/consiliency/code-index-mcp/database
Clone the repo
git clone --depth 1 https://github.com/Consiliency/Code-Index-MCP

Made for: Cursor.

Per session 1,098 This file is loaded in full into every session.
When invoked 1,098 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01098 $0.01098
Opus 5 $0.00549 $0.00549
Sonnet 5 $0.00220 $0.00220
Haiku 4.5 $0.00110 $0.00110

Measured 2d ago against content hash 09ce8c0874ea, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

database scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/database.mdc · 197 lines

How it starts

The opening of the file, as written. The whole thing — 197 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Database Rules for Code-Index-MCP

Overview

This file defines database design patterns, query optimization strategies, and data management rules for the Code-Index-MCP project.

Storage Architecture

Local-First Design

  • Primary Storage: SQLite with FTS5 for full-text search
  • Index Format: Structured JSON with normalized tables
  • File-Based: Each project has its own database file
  • Portability: Database files can be copied/moved

Schema Design

-- Core tables structure
CREATE TABLE files (
    id INTEGER PRIMARY KEY,
    path TEXT UNIQUE NOT NULL,
    content TEXT,
    language TEXT,
    last_modified INTEGER,
    hash TEXT
);

CREATE TABLE symbols (
    id INTEGER PRIMARY KEY,
    file_id INTEGER REFERENCES files(id),
    name TEXT NOT NULL,
    type TEXT, -- function, class, variable, etc.
    line_start INTEGER,
    line_end INTEGER,
    column_start INTEGER,
    column_end INTEGER,
    parent_id INTEGER REFERENCES symbols(id)
);

CREATE TABLE imports (
    id INTEGER PRIMARY KEY,
    file_id INTEGER REFERENCES files(id),
    module_name TEXT,
    alias TEXT,
    line_number INTEGER
);

-- Full-text search tables
CREATE VIRTUAL TABLE files_fts USING fts5(
    path, content, tokenize='porter unicode61'
);

CREATE VIRTUAL TABLE symbols_fts USING fts5(
    name, type, tokenize='porter unicode61'
);

Query Optimization

Indexing Strategy

-- Performance indexes
CREATE INDEX idx_symbols_file ON symbols(file_id);
CREATE INDEX idx_symbols_name ON symbols(name);
CREATE INDEX idx_symbols_type ON symbols(type);
CREATE INDEX idx_imports_file ON imports(file_id);
CREATE INDEX idx_files_language ON files(language);

Query Patterns

# Efficient symbol lookup
def find_symbol(name: str, file_path: str = None):
    query = """
    SELECT s.*, f.path 
    FROM symbols s
    JOIN files f ON s.file_id = f.id
    WHERE s.name = ?
    """
    params = [name]
    
    if file_path:
        query += " AND f.path = ?"
        params.append(file_path)
    
    return db.execute(query, params)

# Full-text search with ranking
def search_code(query: str):
    return db.execute("""
    SELECT path, snippet(files_fts, 1, '<b>', '</b>', '...', 32) as snippet,
           rank
    FROM files_fts
    WHERE files_fts MATCH ?
    ORDER BY rank
    LIMIT 50
    """, [query])

Read the full file on GitHub · 197 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 197 lines · 1,098 tokens per session scan A 09ce8c0874ea

Subscribe to this mod's changes

database is a cursor rule published in the GitHub repository Consiliency/Code-Index-MCP (57 stars, last pushed 1mo ago), licensed MIT. It adds 1,098 tokens to every session, about $0.0055 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.