AgentStack
MCP unreviewed MIT Self-run

Perseus

mcp-perseus-computing-llc-perseus · by Perseus-Computing-LLC

Live context engine and MCP server for AI agents. Resolves git, services, and tests into ready context. Local-first, MIT. PyPI: perseus-ctx.

No reviews yet
0 installs
19 views
0.0% view→install

Install

$ agentstack add mcp-perseus-computing-llc-perseus

Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v1.0.13 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
  • high Pipes remote content directly into a shell (remote code execution).

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution Used
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v1.0.13. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Perseus? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Perseus™ 🪞 — One command. Zero orientation.

[](https://smithery.ai/servers/Perseus-Computing-LLC/perseus) pip install perseus-ctx && cd your-project && perseus quickstart

[](https://github.com/Perseus-Computing-LLC/perseus/actions/workflows/test.yml) [](https://pypi.org/project/perseus-ctx/) [](https://registry.modelcontextprotocol.io/) [](./LICENSE) [](./docs/ip/README.md) perseus.observer →


🛡️ Product Family

Perseus is the live context engine. Seven specialized products extend it:

| Product | Description | Page | |---|---|---| | Mimir | 43 MCP tools — persistent memory with FTS5, entities, layers, confidence decay | /mimir/ | | MCTS | 120 security analyzers for MCP servers — tool poisoning, prompt injection, credential leaks | /mcts/ | | PR Pilot | 5-agent autonomous PR review pipeline — graduated autonomy L1→L3 | /pr-pilot/ | | Blast Radius | GitLab-native dependency impact analysis — 1 mention, instant risk report | /blast-radius/ | | Rapid Agent | Dual-backend memory agent (Elastic ↔ Engram-rs) — Google Cloud Hackathon | /rapid-agent/ | | Qwen Memory | Agent that gets smarter every session — Qwen Cloud Hackathon | /qwen-memory/ | | CrewAI Memory | Persistent cross-session memory backend for CrewAI (54K stars) — community PR #6208 | /crewai/ |


Mimir — Persistent Memory (MCP)

Mimir is the persistent memory backend for Perseus — a lightweight Rust MCP server with SQLite + FTS5. Zero network calls, no API keys. As of v2.6.0, offline dense/hybrid embeddings are bundled by default (the model is compiled into the binary), so semantic recall works zero-config with no external model download. v2.6.0 provides 43 MCP tools across structured entities, hybrid vector search, RAG, connectors, confidence decay, journal events, and state management: mimir_remember, mimir_recall, mimir_context, mimir_traverse, mimir_decay, mimir_stats, mimir_health, and more.

📄 Product page → | ⭐ GitHub →

Install:

curl -sSL https://raw.githubusercontent.com/Perseus-Computing-LLC/mimir/main/scripts/bootstrap.sh | bash

Hermes Agent — add to ~/.hermes/config.yaml:

mcp_servers:
  mimir:
    command: "mimir"
    args: ["--db", "~/.mimir/data/mimir.db"]

Claude Desktop / Cursor — add to your MCP settings:

{
  "mcpServers": {
    "mimir": {
      "command": "mimir",
      "args": ["--db", "/home/YOU/.mimir/data/mimir.db"]
    }
  }
}

Perseus integration — add to .perseus/config.yaml:

mimir:
  enabled: true
  command: ["mimir", "--db", "~/.mimir/data/mimir.db"]

Then add @memory mode=search query="your terms" to .perseus/context.md and Perseus resolves live recall at render time.

Works with any MCP-compatible assistant.

🏆 Hackathons — 3 Entries Submitted

Google Cloud Rapid Agent (Elastic Partner Track)

Status: Submitted | Deadline: June 11, 2026 | Devpost: perseus-cmzeu9 📄 Product page →

Perseus is entered in the Google Cloud Rapid Agent Hackathon (Elastic Partner Track). The submission demonstrates persistent agent memory across three consecutive sessions, with live backend swap from Elastic Cloud to Engram-rs (self-hosted).

Qwen Cloud Hackathon (MemoryAgent Track)

Status: Submitted | 📄 Product page →

Agent that gets smarter every session. Persistent memory, confidence decay, cross-session compounding. Track requirements checklist with contradiction demo beat.

GitLab Transcend Hackathon (Showcase Track)

Status: Submitted | 📄 Product page →

Blast Radius — GitLab-native dependency impact analysis via Orbit knowledge graph. One @mention, instant risk report.

Build with Gemini XPRIZE

Status: Submitted | 📄 Product page →

PR Pilot — 5-agent autonomous PR review pipeline. Gemini API, Google Cloud Run, Stripe integration.

Wire Perseus to Your Assistant (MCP)

Perseus implements the Model Context Protocol (MCP), exposing tools over stdio or SSE transport. Every tool resolves live workspace state at invocation time — no stale cache, no pre-computed snapshots.

> ⚠️ Security Gate: Shell-executing directives (@query, @agent, @services command:) require export PERSEUS_ALLOW_DANGEROUS=1. Without it, shell directives are silently skipped.

Quick Start (MCP Server)

pip install perseus-ctx
perseus mcp serve                          # stdio (Claude Desktop, Claude Code, Cursor, Codex)
perseus mcp serve --transport sse --port 8420  # SSE (remote agents, multi-machine)

Assistant-Specific Wiring

Pick your assistant and add the config block shown:

Hermes Agent (~/.hermes/config.yaml):

mcp_servers:
  perseus:
    command: perseus
    args: ["mcp", "serve", "--workspace", "/path/to/workspace"]

Then verify with hermes mcp test perseus. Tools appear as mcp_perseus_* in your session.

> Use an absolute path for --workspace. Perseus's non-interactive shell context has a limited PATH — a bare perseus command works in the Hermes MCP config because Hermes resolves it from the user's environment, but the workspace path must be absolute.

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "perseus": {
      "command": "perseus",
      "args": ["mcp", "serve", "--workspace", "/path/to/workspace"]
    }
  }
}

Claude Code (.mcp.json in your project root):

{
  "mcpServers": {
    "perseus": {
      "command": "perseus",
      "args": ["mcp", "serve"]
    }
  }
}

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "perseus": {
      "command": "perseus",
      "args": ["mcp", "serve"]
    }
  }
}

Codex (~/.codex/config.toml or per-project .mcp.json):

{
  "mcpServers": {
    "perseus": {
      "command": "perseus",
      "args": ["mcp", "serve"]
    }
  }
}

Rovo Dev (.mcp.json in repo root):

{
  "mcpServers": {
    "perseus": {
      "command": "perseus",
      "args": ["mcp", "serve"]
    }
  }
}

Rovo Dev also reads AGENTS.md at session start — pair MCP tools with rendered context for a complete setup.

Docker

docker build -t perseus .
docker run --rm -v /path/to/workspace:/workspace perseus mcp serve

See [Container Runtime](./docs/CONTAINER.md) for full Docker and compose deployment.

MCP Registry

Published as io.github.Perseus-Computing-LLC/perseus on the official MCP Registry (search \"perseus\"). Includes server.json for zero-config discovery.


MCP Tools

26 MCP tools resolve live state at invocation time. Two sensitive tools (perseus_query and perseus_agent) require explicit mcp.tool_allowlist opt-in because they execute commands in the user's local shell — not sandboxed, full user permissions apply:

| Tool | Description | |---|---| | perseus_services | Health-check running services | | perseus_query | Run a shell command and return stdout | | perseus_read | Read file contents | | perseus_list | List directory or structured data | | perseus_tree | Tree view of directory | | perseus_env | Read environment variables | | perseus_date | Current date/time | | perseus_waypoint | Latest checkpoint summary | | perseus_session | Recent session digests | | perseus_health | Context maintenance report | | perseus_drift | Oracle drift report | | perseus_memory | Mnēmē narrative memory (+ Mimir persistent store) | | perseus_mimir | Recall persistent memories via Mimir BM25 | | perseus_skills | List available skills with staleness flags | | perseus_include | Include and render another file | | perseus_agent | Execute local agent subprocess | | perseus_agora | Task board from tasks/*.md | | perseus_inbox | Agent message inbox | | perseus_prompt | System prompt block | | perseus_validate | Validate rendered block against schema | | perseus_tool | Run allowlisted external tool | | perseus_perseus | Fetch context from remote Perseus instance | | perseus_get_context | Full rendered workspace context | | perseus_get_health | Daedalus context-maintenance heuristics |


The Problem

Every AI assistant session starts cold. Before useful work begins, the assistant burns turns on orientation — checking which services are running, reading stale config files, rediscovering where you left off. Static markdown files (.cursorrules, CLAUDE.md) rot immediately. The port you wrote down has changed. The container that was "always running" hasn't been started since Tuesday.

Stale context isn't neutral. It's drag.


The Fix: Resolve Before Context

Perseus is a pre-processor. You write directives in a source document — @query, @services, @waypoint — and Perseus resolves them at render time, then outputs plain markdown. The assistant reads verified facts, not instructions to go find facts.

Without Perseus                     With Perseus
────────────────────────────────    ──────────────────────────────────
"Port is 3001 (check .env)"    →   Port: 3001
"47 tests (may be stale)"      →   Tests: all passing (run 8s ago)
"Check docker ps first"        →   mongo-dev: Up 4h 12m
"Where did we leave off?"      →   Checkpoint: webhook handler written,
                                              pending test run

Perseus replaces your assistant's context file — CLAUDE.md, .cursorrules, AGENTS.md, .hermes.md — with rendered live context. If you already have a hand-written context file, migrate its static content into .perseus/context.md first. Perseus overwrites the output file on every render. Add @perseus to line 1 of your source and it becomes live. The assistant never sees directive syntax. It sees a document that was already true.


Quick Start (30 Seconds to Live Context)

perseus quickstart          # auto-detects project, scaffolds context, renders

Smart init detects your stack and tailors the setup:

  • Python@memory queries for test patterns, type annotations
  • Rust → trait bounds, lifetime annotations, cargo config
  • Node.js/TS → npm scripts, ESLint config, component patterns
  • Go, Java, C/C++, Docker — all detected automatically
  • Falls back to a sensible generic query when unknown

The output file name is the only assistant-specific detail:

| Assistant | Output file | |---|---| | Claude Code | CLAUDE.md | | Hermes Agent | .hermes.md (top priority) or AGENTS.md | | Cursor | .cursorrules or .cursor/context.md | | Codex | AGENTS.md | | Rovo Dev | AGENTS.md | | Any other | Whatever your assistant reads at session start |

> Hermes priority order: .hermes.mdAGENTS.mdCLAUDE.md. Render to .hermes.md for highest priority.

Keep it fresh with cron, launchd, systemd, or perseus watch:

# Linux systemd (auto-refresh every 5 minutes)
perseus systemd .perseus/context.md --output AGENTS.md --interval 5m --install --enable

# macOS launchd
perseus launchd .perseus/context.md --output AGENTS.md

# Cron (any POSIX host)
perseus cron .perseus/context.md --output AGENTS.md --every 5 --install

See the [Integration Guide](./docs/HERMES_INTEGRATION.md) for Hermes-specific auto-refresh setups and [spec/integration.md](./spec/integration.md) for full adapter patterns.


Why Perseus? (Proof, Hardening, and Enterprise Value)

Perseus delivers verified, up-to-date context, eliminating the need for AI assistants to spend turns orienting themselves. Here's how it stands up:

Performance & Efficiency

  • 1,190× cold→warm gap — Real-world scenario using the Perseus repo itself as the benchmark target. At the 1,408 directive scale, the cold render took 578.7s, while the warm render took 0.486s. [Raw data →](benchmark/real_deltas.json)
  • Mnēmē persistent memory — In-process BM25 recall, zero daemon. 37ms search P50 at 10,000 docs, flat across all scales. Perseus @mimir renders: 51× cold→warm speedup with @cache. 2,700 docs/sec write throughput, 0.4ms P50 saves. v1.0.7 adds Mimir (Project Synapse) — MCP-based remote memory with Ebbinghaus time-decay and FTS5 + LIKE hybrid search, circuit-breaker protected. Local Mnēmē remains the default. [Full results →](benchmark/mneme_hardcore.json)
  • 94% token reduction, 0ms overhead — live 200-request A/B harness: 488 → 27 avg prompt tokens per request. P99 latency overhead: 0ms — Perseus adds nothing to response time. [Full harness results →](benchmark/ultimatesuiteresults.json)
  • Enterprise Ready — Cost analysis shows that for a 500-developer team, Perseus can save significant token costs per year. [Cost analysis →](benchmark/titan_cost.json)
  • Extreme Enterprise Benchmark — 10-phase suite (reps=10, 50 devs, 250 concurrent agents): 10/10 hard gates · 6/6 soft gates · 0 errors at 250 concurrent · 90% enterprise ROI · fleet P99 1,169ms. The benchmark is designed to surface regressions, not hide them. [Full methodology →](benchmark/READMEEXTREME.md) · [Raw results →](benchmark/extremeenterpriseresultsfull.json)

Reliability & Security

Perseus is tested against edge cases that challenge the "resolve before context" claim. v1.0.6 completed a deep-dive architectural review (O(n²)→O(n), regex parser, shell hardening, retry classification) and a full security review against the MCP transport and foreign resolver surface (Phase 26):

  • MCP SSE bearer-token authPOST /message requires Bearer token via mcp.sse_bearer_token config key (falls back to serve.auth_token for backward compat). Unauthenticated requests receive 401.
  • Platform-portable MCP timeout_call_tool() uses ThreadPoolExecutor + Future.result(timeout=...) instead of Unix-only SIGALRM. Works on Windows, macOS, and Linux.

Platform support: Perseus is developed and CI-tested on Linux (Ubuntu, Python 3.10–3.12). macOS is supported but not in CI. Windows is supported with caveats: the MCP transport and core render pipeline work cross-platform, but approximately 8% of the test suite currently fails on Windows due to POSIX-specific shell assumptions, path handling differences, and missing select support in the LSP module. Native Windows scheduling (Task Scheduler) is deferred — use WSL cron or invoke perseus render from your own scheduler. Windows improvements are tracked but not the primary target.

  • Foreign resolver SSRF protection — URL allowlist via foreign_resolver.url_allowlist, private-IP blocking (block_private_ips, default true), HMAC signature verification (verify_signatures now defaults to true, minimum 32-char secret). Redirects re-check destination IPs. Localhost (127.0.0.1, ::1) explicitly allowed for local testing.
  • 16/16 hard gates passed — Gauntlet v2: 100.0/100 — Full 10-phase enterprise torture test on Perseus v1.0.8: cold/warm renders, memory retrieval, single/multi-agent tasks, 5-day enterprise week, 12 adversarial scenarios, 2-hour sustained torture, and token efficiency. All 16 gates passed with zero failures. [Full results →](benchmark/gauntlet/v2/gauntletv2report.md)
  • Semantic Equivalence: 1.0 — A live Gemini 2.5 Flash judge found 20/20 A/B test pairs to be semantically equivalent, confirming that Perseus changes what the assista

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v1.0.13 Imported from the upstream source.