Cortex

Cortex

Provides persistent memory to AI agents through a wearable device, storing notes, sessions, and activities in a local SQLite database accessible via MCP.

Category
Visit Server

README

Cortex - Wearable AI Memory

Cortex is a wearable AI memory system that gives any AI agent persistent memory across sessions. It consists of a Pi Zero 2 W (Cortex Core) that stores notes, sessions, activities, searches, and files in a local SQLite database, with an ESP32-S3 USB dongle (Cortex Link) providing BLE connectivity as a fallback.

WiFi (preferred):  AI Agent <--MCP--> cortex-mcp ──HTTP──> Cortex Core (Pi Zero)
BLE (fallback):    AI Agent <--MCP--> cortex-mcp ──TCP──> daemon ──USB──> ESP32 ──BLE──> Pi Zero

Transport is selected automatically. WiFi is 10-100x faster than BLE and supports file transfer. Multiple AI sessions share the same ESP32 through the daemon — no serial port conflicts.

Quick Start

pip install git+https://github.com/turfptax/cortex.git
python -m cortex_mcp ping

Setup

Automatic setup (recommended)

The setup command writes the correct config for you. It uses the full Python path, so it works even when pip's Scripts directory isn't on PATH (common on Windows):

# Configure Claude Code
python -m cortex_mcp setup

# Configure Claude Desktop
python -m cortex_mcp setup --target claude-desktop

# Configure both at once
python -m cortex_mcp setup && python -m cortex_mcp setup --target claude-desktop

Tip: cortex-cli setup also works if pip's Scripts dir is on your PATH.

Claude Code (manual)

From a terminal (not inside Claude Code):

claude mcp add cortex -- python -m cortex_mcp.server

Or edit ~/.claude.json directly:

{
  "mcpServers": {
    "cortex": {
      "command": "python",
      "args": ["-m", "cortex_mcp.server"]
    }
  }
}

Claude Desktop (manual)

Add to your claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "cortex": {
      "command": "python",
      "args": ["-m", "cortex_mcp.server"]
    }
  }
}

Note: If you have multiple Python versions, use the full path to the Python that has cortex-mcp installed (e.g. C:\\Users\\YOU\\AppData\\Local\\Programs\\Python\\Python313\\python.exe). The automatic setup command handles this for you.

Verify

After setup, restart Claude Code/Desktop, then verify the connection:

python -m cortex_mcp ping

The serial port is auto-detected (ESP32-S3 USB VID 0x303A). If auto-detection fails, set the port explicitly:

python -m cortex_mcp --port COM5 ping

Or via environment variable:

set CORTEX_PORT=COM5       # Windows
export CORTEX_PORT=/dev/ttyACM0  # Linux/Mac

CLI Reference

All commands work with either cortex-cli (if on PATH) or python -m cortex_mcp:

# Setup
python -m cortex_mcp setup                          # Auto-configure Claude Code
python -m cortex_mcp setup --target claude-desktop   # Auto-configure Claude Desktop

# Connectivity
python -m cortex_mcp ping                    # Test round-trip to Cortex Core
python -m cortex_mcp status                  # Get Pi status (uptime, storage)
python -m cortex_mcp context                 # Get full context (sessions, notes, bugs)
python -m cortex_mcp info                    # Show serial ports and connection status

# Notes
python -m cortex_mcp note "My note text"
python -m cortex_mcp note "Fix auth bug" --type bug --project myapp --tags auth,urgent

# Activity logging
python -m cortex_mcp activity "VS Code" --details "Refactoring auth module" --project myapp

# Search logging
python -m cortex_mcp search "python async patterns" --source google

# Sessions
python -m cortex_mcp session start                           # Returns session_id
python -m cortex_mcp session end SESSION_ID "Summary of work" --projects cortex

# Database queries
python -m cortex_mcp query notes --limit 5
python -m cortex_mcp query sessions --filters '{"ai_platform":"claude"}'

# Raw protocol
python -m cortex_mcp raw "CMD:ping"

# Daemon management
python -m cortex_mcp daemon status               # Check if daemon is running
python -m cortex_mcp daemon start                # Start daemon in background
python -m cortex_mcp daemon start --foreground   # Start daemon in foreground
python -m cortex_mcp daemon stop                 # Stop the running daemon

# Direct serial (bypass daemon)
python -m cortex_mcp --direct ping               # Skip daemon, use COM port directly

MCP Tools

When connected via MCP, these tools are available to the AI agent:

Tool Description
ping Test round-trip connectivity
get_status Pi uptime, storage, recording state
send_note Store a timestamped note (with tags, project, type)
log_activity Log what program/file is being worked on
log_search Log a search query and source
session_start Begin a session (returns session_id)
session_end End a session with summary
get_context Full context: projects, sessions, notes, bugs, files, reminders
query Query any table in the Cortex database
register_computer Register this machine with Cortex Core
file_register Register metadata for a file already on the Pi
file_list List registered files (by category or project)
file_search Search files by name, description, or tags
file_upload Upload a file to the Pi over WiFi
file_download Download a file from the Pi over WiFi
wifi_scan Scan for available WiFi networks near the Pi
wifi_status Get current WiFi connection (IP, SSID, signal)
wifi_config Connect the Pi to a WiFi network (headless provisioning)
send_message Send a raw protocol message
read_responses Read buffered async messages
connection_info Show transport status (WiFi/daemon/serial)

Transport

Cortex supports three transports, selected automatically in priority order:

  1. WiFi HTTP (preferred) — Direct HTTP to the Pi on port 8420 with bearer token auth. Fastest, supports file upload/download. WiFi credentials are discovered automatically via BLE when the ESP32 first connects.
  2. TCP Daemon — Shared serial port access via cortex-daemon on localhost:19750. Multiple AI sessions share one ESP32.
  3. Direct Serial — USB serial to ESP32 BLE bridge. Fallback when daemon is unavailable.

WiFi discovery: When the Pi connects to the ESP32 over BLE, it sends a DISCOVER: message containing its IP, port, and auth token. This is saved to ~/.cortex-wifi.json automatically — no manual configuration needed.

File Operations

File transfer requires WiFi transport (not available over BLE).

  • Upload: file_upload sends a file from this computer to the Pi's uploads/ directory and auto-registers it in the database.
  • Download: file_download retrieves a file from any category (recordings, notes, logs, uploads).
  • Metadata: file_register records metadata for files already on the Pi. file_list and file_search query the file database.

The Pi's HTTP server (port 8420) also supports direct REST access:

  • GET /files/<category> — list files
  • GET /files/<category>/<name> — download
  • POST /files/uploads — upload (raw body + X-Filename header)

Multi-Session / Daemon

Only one process can hold a serial port at a time. The cortex-daemon solves this by holding the ESP32 serial port and serving multiple clients over TCP.

Claude Code #1 ──stdio──> cortex-mcp ──TCP──┐
Claude Code #2 ──stdio──> cortex-mcp ──TCP──├──> cortex-daemon ──serial──> ESP32
Claude Desktop ──stdio──> cortex-mcp ──TCP──┤    (localhost:19750)
cortex-cli ─────────────────────TCP─────────┘

The daemon starts automatically — when cortex-mcp or cortex-cli runs, it checks for a running daemon and spawns one if needed. No manual setup required.

The daemon binds to 127.0.0.1 only (never exposed to the network) and uses a per-session auth token stored in ~/.cortex-daemon.secret (mode 0600). Other processes on the same machine cannot send commands without the token.

Manual control:

cortex-cli daemon status     # Check daemon state
cortex-cli daemon start      # Start manually (background)
cortex-cli daemon stop       # Stop the daemon

To bypass the daemon and use the serial port directly:

cortex-cli --direct ping
CORTEX_DIRECT=1 cortex-mcp   # For MCP server

Environment Variables

Variable Default Description
CORTEX_PORT auto-detect Serial port (e.g. COM5, /dev/ttyACM0)
CORTEX_BAUD 115200 Baud rate
CORTEX_TIMEOUT 5 Response timeout in seconds
CORTEX_DAEMON_PORT 19750 TCP port for the daemon
CORTEX_DIRECT unset Set to 1 to bypass daemon and WiFi
CORTEX_NO_WIFI unset Set to 1 to skip WiFi, use BLE only
CORTEX_PI_HOST auto-discover Pi IP address (overrides BLE discovery)
CORTEX_PI_PORT 8420 Pi HTTP port
CORTEX_WIFI_TOKEN auto-discover Bearer token (overrides ~/.cortex-wifi.token)

Hardware

  • Cortex Link: ESP32-S3 USB dongle with BLE (firmware)
  • Cortex Core: Pi Zero 2 W with SQLite database, BLE client, optional mic/display

Development

git clone https://github.com/turfptax/cortex.git
cd cortex
pip install -e .

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured