MCP Server

The Rohrpost MCP server (rohrpost-mcp) is a stateless bridge that exposes your knowledge base to any AI assistant that speaks the Model Context Protocol — Claude, Cursor, VS Code Copilot, and others.

Overview

When your AI assistant calls a Rohrpost MCP tool, rohrpost-mcp translates it into an HTTP request to the Rohrpost gateway and returns the result. No database access, no local state — just a thin HTTP bridge. The gateway handles auth, tenant isolation, and all retrieval logic.

AI assistant → MCP client → rohrpost-mcp → gateway :7878 → Postgres + Tantivy + AGE

Installation

Download (managed)

If you use app.rohrpost.io, log in and open the Downloads tab in your admin panel. Pre-built binaries are available for:

  • Linux x86-64
  • Linux arm64
  • macOS Apple Silicon
  • macOS Intel

After downloading, mark it executable:

chmod +x rohrpost-mcp-linux-x86_64
# move it somewhere on your PATH
mv rohrpost-mcp-linux-x86_64 ~/.local/bin/rohrpost-mcp

Build from source

Requires Rust 1.95+.

git clone https://codeberg.org/ftieben/rohrpost.io
cd rohrpost.io
cargo build --release --bin rohrpost-mcp
# binary is at target/release/rohrpost-mcp

Configuration

Environment variables

VariableDefaultDescription
ROHRPOST_GATEWAY_URLhttp://localhost:7878URL of the Rohrpost gateway
ROHRPOST_API_KEYAPI key (required for managed, optional for unauthenticated self-hosted)
RUST_LOGinfoLog level (debug, info, warn, error)

Create your API key in the API Keys tab of your admin panel. Keys are scoped to a tenant and start with rp-.

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json

Managed (app.rohrpost.io):

{
  "mcpServers": {
    "rohrpost": {
      "command": "/path/to/rohrpost-mcp",
      "env": {
        "ROHRPOST_GATEWAY_URL": "https://app.rohrpost.io",
        "ROHRPOST_API_KEY": "rp-your-api-key"
      }
    }
  }
}

Self-hosted (local):

{
  "mcpServers": {
    "rohrpost": {
      "command": "/path/to/rohrpost-mcp",
      "env": {
        "ROHRPOST_GATEWAY_URL": "http://localhost:7878",
        "ROHRPOST_API_KEY": "rp-your-api-key"
      }
    }
  }
}

Cursor

Create .cursor/mcp.json in your project root (project-scoped) or configure in Cursor Settings → MCP (global):

{
  "mcpServers": {
    "rohrpost": {
      "command": "/path/to/rohrpost-mcp",
      "env": {
        "ROHRPOST_GATEWAY_URL": "https://app.rohrpost.io",
        "ROHRPOST_API_KEY": "rp-your-api-key"
      }
    }
  }
}

VS Code (GitHub Copilot)

Create .vscode/mcp.json in your project:

{
  "servers": {
    "rohrpost": {
      "type": "stdio",
      "command": "/path/to/rohrpost-mcp",
      "env": {
        "ROHRPOST_GATEWAY_URL": "https://app.rohrpost.io",
        "ROHRPOST_API_KEY": "rp-your-api-key"
      }
    }
  }
}

Tools reference

rohrpost_ingest

Stores knowledge into the knowledge base. The content is chunked, embedded, and indexed for later retrieval.

ParameterTypeRequiredDescription
tenantstringyesTenant slug (e.g. "my-project")
kindstringyesOne of: prompt, response, tool_call, diff, error, note
contentstringyesThe text content to store

Example system prompt instruction:

At the end of our conversation, call rohrpost_ingest with kind="note"
and summarize the key decisions and discoveries we made today.

rohrpost_recall

Retrieves the most relevant knowledge for a query using hybrid search (vector similarity + BM25 + 1-hop graph expansion), cross-encoder reranked and packed into a markdown brief.

ParameterTypeRequiredDescription
tenantstringyesTenant slug
querystringyesNatural language query
top_kintegernoMax results to consider (default 10)
token_budgetintegernoMax tokens in the packed brief (128–16384)

Example system prompt instruction:

At the start of each conversation, call rohrpost_recall with the user's
first message as the query to load relevant context before answering.

rohrpost_graph

Explores entity relationships in the knowledge graph. Useful for understanding how concepts, files, functions, or decisions are connected.

ParameterTypeRequiredDescription
tenantstringyesTenant slug
entitystringno*Entity name to start from
entity_idstringno*Entity UUID (takes precedence over entity)
depthintegernoTraversal depth 1–5 (default 2)

* Provide at least one of entity or entity_id.

rohrpost_graph_entry_points

Finds well-connected entities by kind — a good starting point for graph exploration when you don't have a specific entity in mind.

ParameterTypeRequiredDescription
tenantstringyesTenant slug
kindstringyesNode kind: Capsule, Concept, Decision, Function, File, Crate, Endpoint, Entity, Error, Migration, Test, Tool, Trait
querystringnoCase-insensitive substring filter on entity name
limitintegernoMax results 1–100 (default 20)

rohrpost_forget

Permanently deletes a capsule and all associated chunks, embeddings, and graph nodes.

ParameterTypeRequiredDescription
tenantstringyesTenant slug
capsule_idstringyesUUID of the capsule to delete

To find a capsule ID, call rohrpost_recall first — the brief includes capsule IDs for attribution.

rohrpost_okf_export

Exports the knowledge graph in Open Knowledge Format — a structured snapshot of entities and their relationships, suitable for backup or cross-tenant import.

ParameterTypeRequiredDescription
tenantstringyesTenant slug
limitintegernoMax concepts to include 1–1000 (default 200)

Skills registry

The skills registry stores reusable prompt templates and instructions scoped to a tenant (and optionally a project). Skills are returned in rohrpost_recall results automatically when relevant.

ToolDescription
rohrpost_skill_upsert(tenant, name, content, project?)Creates or updates a skill. Name must match ^[a-z0-9][a-z0-9-]{0,63}$.
rohrpost_skill_get(tenant, name, project?)Retrieves a skill by name. Project-scoped version takes precedence when project is set.
rohrpost_skill_list(tenant, project?)Lists all skills for the tenant, merged with project-scoped skills when project is set.
rohrpost_skill_delete(tenant, name, project?)Deletes a skill. Deletes the project-scoped version only when project is set.

Tips for effective use

  • Load context on session start. Instruct your assistant to call rohrpost_recall with the user's opening message at the beginning of every conversation.
  • Persist on session end. Instruct your assistant to call rohrpost_ingest at the end of each session to save decisions, discoveries, and unresolved questions.
  • Choose the right kind. Use kind="note" for facts and decisions, kind="diff" for code changes, kind="response" for full assistant turns. The kind is indexed and affects retrieval scoring.
  • One tenant per project. Tenant slugs are your isolation boundary — use a separate slug for each project or context to avoid knowledge bleed between codebases.
  • Graph after ingest. The knowledge graph is built incrementally as you ingest. Entity extraction runs on each capsule — the more you ingest, the richer the graph becomes. Use rohrpost_graph_entry_points to explore it.
  • Use skills for standing instructions. Store recurring prompt patterns (code review checklists, coding standards, architecture invariants) as skills so they're automatically surfaced during recall.