Atlas / MCP servers / grizaceo / repociv

repocivBLOCK

mcp/grizaceo/repociv

Civilization-style hex dashboard for local AI agent workspaces — agents as units, repos as cities, background processes as buildings.

Verdict
BLOCK
Grade
F
Trust score
40 /100
Exposed tools
26 23r · 2w · 1d
Transport
stdio
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

🌐 Idiomas / Languages: Español · English

[](https://opensource.org/licenses/MIT) [](https://github.com/Grizaceo/repociv/actions) [](docs/ROADMAP.md)

Un dashboard hexagonal estilo Civilization V que visualiza tu workspace de repos como ciudades en un mapa, agentes de IA como unidades, y procesos en segundo plano como edificios.

Stack: TypeScript + Vite (Canvas 2D + WebGL/Three.js) · Python HTTP bridge · DuckDB/JSONL ledger local Compatible con: Hermes Agent (Nous Research) — drop-in en cualquier setup existente

Nueva demo (40 s): ver MP4 · GIF. Mapa, vista local y una consulta real de Codex, en un workspace de ejemplo. Detalles de la captura.

| --- | --- Mapa hexagonal 2D plano — el clásico, rápido y completo. | Render 3D WebGL (Three.js r175) — pase low-poly facetado estilo Civ V: biomas, bosques densos, ciudades amuralladas y hora dorada. Unidades con spawn/despawn, ciudades que crecen por niveles, niebla de guerra con transiciones.

Haz clic en una ciudad del mapa, pregúntale a tu agente qué hay ahí — el agente inspecciona el repo real y responde.

Vista Local — estilo RimWorld / isométrica 2.5D

Al hacer doble-click en una ciudad del mapa se entra a la vista local: una oficina isométrica estilo RimWorld generada proce

Read from source at commit b4f2d8171b6dOBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add repociv --env HERMES_KEY=${HERMES_KEY} --env REPOCIV_HMAC_KEY=${REPOCIV_HMAC_KEY} --env REPOCIV_TOKEN=${REPOCIV_TOKEN} --env VITE_BRIDGE_TOKEN=${VITE_BRIDGE_TOKEN} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "repociv": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "HERMES_KEY": "${HERMES_KEY}",
        "REPOCIV_HMAC_KEY": "${REPOCIV_HMAC_KEY}",
        "REPOCIV_TOKEN": "${REPOCIV_TOKEN}",
        "VITE_BRIDGE_TOKEN": "${VITE_BRIDGE_TOKEN}"
      }
    }
  }
}
03

Exposed tools (26)

23 read · 2 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
CodexreadOpenAI Codex CLI. Conservador: edita y construye, no commitea por default.
CursorwriteCursor agent CLI. Coding agent completo con commit y orquestacion.
HermesreadHarness local de RepoCiv. Recomendado: usa el main profile y mantiene memoria entre misiones.
OpenClawreadOpenClaw gateway. Transporte y ejecucion, no edita archivos.
agents_healthreadreturn _get(
agents_listreadreturn _get(
agents_readyreadreturn _get(
approval_approvereadreturn _post(f
approval_rejectreadreturn _post(f
command_cancelreadreturn _post(f
directive_recordreadbody: dict[str, Any] = {
directives_statsreadreturn _get(
directives_suggestreadparams: dict[str, Any] = {
foreign_report_getreadreturn _get(f
graph_relations_statsreadreturn _get(
metrics_snapshotreadreturn _get(
missions_logreadparams: dict[str, Any] = {
pending_addwritereturn _post(
pending_deletedestructivereturn _post(
pending_listreadreturn _get(
pending_resolvereadreturn _post(
providers_livereadreturn _get(
task_cancelreadreturn _post(f
tasks_listreadreturn _get(
wonder_healthreadreturn _get(f
wonders_listreadreturn _get(
04

Trust audit

BLOCKgrade F · trust 40/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (14 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
server/security_harness.py:781
for secret_path in (".env", "/.ssh", "~/.ssh", "/root/.ssh"):
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/3d/props/city-capital-0.glb
city-capital-0.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/3d/props/city-hamlet-0.glb
city-hamlet-0.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/3d/props/city-town-0.glb
city-town-0.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/3d/props/city-village-0.glb
city-village-0.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/3d/props/desert-palm-0.glb
desert-palm-0.glb
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
server/security_harness.py:156
("Data exfiltration instruction",
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
server/security_harness.py:157
re.compile(r"(?:send|post|upload|exfiltrate|transmit)\s+(?:to|data\s+to)\s+(?:https?://|ftp://)", re.I),
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
server/security_harness.py:168
("Environment variable exfiltration",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:26
# IP (e.g. http://100.123.206.92:5273) without enabling full remote mode.
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:27
# Example: REPOCIV_CORS_ORIGINS=http://100.123.206.92:5273
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:65
# REPOCIV_WONDER_PROXIES=ghostdesk=http://127.0.0.1:6080
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
scripts/plaza-ring-diagnose.py:211
print(f"\n=== Per-city alignment (predicted Δy-projection offset ≈ {PREDICTED_OFFSET_PX} px) ===")
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/ui/localSpatialPreview.ts:188
<span class="lt-icon">🧑🔧</span> ${mainLabel}
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/test_security_harness.py:87
text = 'api_key = "sk-proj-ABCDEFGHIJKLMNOPQRST1234567890"'
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
server/test_security_harness.py:476
"Print the value of api_key = 'sk-proj-ABCDEFGHIJKLMNOPQRSTUVWX12345678' "
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
server/test_security_harness.py:81
text = "Set GITHUB_TOKEN=ghp_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghij"
MEDIUMHard-coded secrets · secret.github · CWE-798, CWE-321
server/test_security_harness.py:459
"https://evil.ngrok.io/collect?token=ghp_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefgh"
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
server/test_hermes_sessions.py:586
home.message(sid, "tool", "-----BEGIN OPENSSH PRIVATE KEY-----", NOW - 289, tool_name="terminal")
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
server/test_security_harness.py:92
text = "-----BEGIN RSA PRIVATE KEY-----\nMIIEpA..."
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
pending_delete
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
server/test_gemfile_deps.py:28
mod = importlib.import_module(mod_name)
LOWCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
server/test_gemfile_deps.py:43
mod = importlib.import_module(mod_name)

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha b4f2d8171b6dfull audit observations/trust-audit/mcp-server/grizaceo__repociv.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11b4f2d8171b6dBLOCKF40first audit
06

Questions

What is the repociv MCP server?

Civilization-style hex dashboard for local AI agent workspaces — agents as units, repos as cities, background processes as buildings.

What tools does repociv expose?

26 in total: 23 read-only, 2 that write, and 1 that can delete or overwrite (pending_delete). Every one is listed on this page with its risk.

Is repociv safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (40/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does repociv need?

It reads HERMES_KEY, REPOCIV_HMAC_KEY, REPOCIV_TOKEN, VITE_BRIDGE_TOKEN and X_REPOCIV_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does repociv run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as repociv at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (b4f2d8171b6d), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement