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 + AGEInstallation
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-mcpBuild 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-mcpConfiguration
Environment variables
| Variable | Default | Description |
|---|---|---|
ROHRPOST_GATEWAY_URL | http://localhost:7878 | URL of the Rohrpost gateway |
ROHRPOST_API_KEY | — | API key (required for managed, optional for unauthenticated self-hosted) |
RUST_LOG | info | Log 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug (e.g. "my-project") |
kind | string | yes | One of: prompt, response, tool_call, diff, error, note |
content | string | yes | The 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug |
query | string | yes | Natural language query |
top_k | integer | no | Max results to consider (default 10) |
token_budget | integer | no | Max 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug |
entity | string | no* | Entity name to start from |
entity_id | string | no* | Entity UUID (takes precedence over entity) |
depth | integer | no | Traversal 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug |
kind | string | yes | Node kind: Capsule, Concept, Decision, Function, File, Crate, Endpoint, Entity, Error, Migration, Test, Tool, Trait |
query | string | no | Case-insensitive substring filter on entity name |
limit | integer | no | Max results 1–100 (default 20) |
rohrpost_forget
Permanently deletes a capsule and all associated chunks, embeddings, and graph nodes.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug |
capsule_id | string | yes | UUID 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
tenant | string | yes | Tenant slug |
limit | integer | no | Max 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.
| Tool | Description |
|---|---|
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_recallwith the user's opening message at the beginning of every conversation. - Persist on session end. Instruct your assistant to call
rohrpost_ingestat 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_pointsto 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.