Skip to main content
Glama
README.md
# Oracle MCP - AI Knowledge Management Server

> "The Oracle Keeps the Human Human" - queryable via MCP

A Model Context Protocol (MCP) server for semantic search and knowledge management. Store principles, patterns, and learnings with hybrid keyword + vector search.

## Installation

### As Claude Code Plugin

```bash
# Via Claude Code CLI
claude plugin add laris-co/oracle-mcp
```

### Manual Setup

```bash
# Clone and install
git clone https://github.com/laris-co/oracle-mcp
cd oracle-mcp
npm install

# Run MCP server
npm run dev
```

## Configuration

Add to `~/.claude/mcp.json`:

```json
{
  "mcpServers": {
    "oracle-mcp": {
      "command": "npm",
      "args": ["run", "dev"],
      "cwd": "/path/to/oracle-mcp",
      "env": {
        "ORACLE_DATA_DIR": "/path/to/data"
      }
    }
  }
}
```

### Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `ORACLE_DATA_DIR` | `~/.oracle-mcp/` | Data directory for SQLite + ChromaDB |

## MCP Tools

### oracle_search

Hybrid search (keywords + semantic) across knowledge base.

```json
{
  "query": "how should I handle file deletion?",
  "type": "principle",
  "mode": "hybrid",
  "limit": 5
}
```

- `mode`: `hybrid` (default), `fts` (keywords only), `vector` (semantic only)
- `type`: `principle`, `pattern`, `learning`, `retro`, `all`

### oracle_consult

Get guidance on a decision based on stored principles.

```json
{
  "decision": "Should I amend this commit?",
  "context": "I just made a commit but forgot to add a file"
}
```

### oracle_learn

Add new patterns or learnings to knowledge base.

```json
{
  "pattern": "Always verify before destructive operations",
  "source": "Retrospective 2025-01-15",
  "concepts": ["safety", "verification"]
}
```

### oracle_list

Browse documents without search (pagination supported).

```json
{
  "type": "learning",
  "limit": 10,
  "offset": 0
}
```

### oracle_reflect

Get random wisdom for reflection.

```json
{}
```

## Data Storage

All data stored in `ORACLE_DATA_DIR` (default: `~/.oracle-mcp/`):

```
~/.oracle-mcp/
├── oracle.db       # SQLite database (FTS5 + metadata)
├── chroma_data/    # ChromaDB vector embeddings
└── learnings/      # Markdown files from oracle_learn
```

## Development

```bash
# Install dependencies
npm install

# Run in development mode
npm run dev

# Build TypeScript
npm run build

# Run production
npm start

# Run with pm2
pm2 start ecosystem.config.cjs
```

## Architecture

```
Claude Code → MCP Server → SQLite (FTS5) + ChromaDB (vectors)
                               ↓
                         oracle.db + chroma_data/
```

Following [claude-mem](https://github.com/thedotmack/claude-mem) patterns:
- Hybrid search (FTS5 keywords + vector semantic)
- Graceful degradation (works without ChromaDB)
- Local embeddings via ChromaDB
- SQLite as source of truth

## License

MIT

---

**Created**: 2025-12-29
**Architecture**: claude-mem inspired