Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/cioffiai/mcp-agora/agents-mdgit clone --depth 1 https://github.com/cioffiAI/mcp-agoraWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/cioffiai/mcp-agora/agents-md)<a href="https://agentmods.dev/instructions/cioffiai/mcp-agora/agents-md"><img src="https://agentmods.dev/badge/instructions/cioffiai/mcp-agora/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.03759 | $0.03759 |
| Opus 5 | $0.01879 | $0.01879 |
| Sonnet 5 | $0.00752 | $0.00752 |
| Haiku 4.5 | $0.00376 | $0.00376 |
Grade A, and why
mcp-agora AGENTS.md scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
uv run python -c "import subprocess,json,time;p=subprocess.Popen(['agora.exe'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True);time.sleep(20);p.stdin.write(json.dumps({'jsonrpc':'2.0','id': How it starts
The opening of the file, as written. The whole thing — 315 lines — stays where its author put it; the contents beside it link to each section on GitHub.
MCP Agora — Agent Instructions
Memory & Knowledge (Agora stesso)
Agora è un MCP server con memoria persistente cross-agente. Quando lavori in questo progetto:
- Prima di cercare soluzioni esterne → chiama
agora_queryper vedere se informazioni utili sono già state salvate - Dopo aver risolto un problema → chiama
agora_saveper memorizzare la soluzione (con tags) - Le informazioni sono condivise tra tutti gli agenti — Claude Code, Codex, ChatGPT, Gemini CLI
La ricerca è semantica (embedding a 384 dimensioni), non per keyword. ChromaDB usa un indice ANN (HNSW) che trova le entry più simili in O(log n) — anche con 10.000 entry la risposta arriva in <50ms.
Project Overview
MCP Agora is a portfolio/learning project implementing an MCP Server with cross-agent persistent memory. It is NOT a product — it is not competing with ContextForge (IBM), MetaMCP, AutoMem, or mcp-memory-service.
Goal
Build an MCP Server that allows AI agents (Claude Code, Codex, ChatGPT, Gemini CLI) to:
- Save knowledge with
agora.save→ persistent vector memory (ChromaDB) - Query knowledge with
agora.query→ semantic search across saved entries - Share memory across agents and sessions
- Cache frequent queries in-memory (TTLCache)
Non-goals
- Semantic broadcasting / fan-out
- Chunking (save short entries only, ≤256 word pieces)
- Docker, RBAC, auth, scaling
Architecture Stack (corrente)
Python 3.13+ │ uv 0.11+
FastMCP │ MCP SDK ≥1.0.0
ChromaDB │ PersistentClient
sentence-transformers │ all-MiniLM-L6-v2 (384d)
cachetools │ TTLCache (1000 entries, 5min TTL)
pyyaml │ config.yaml
pytest │ pytest-asyncio
SQLite3 │ stdlib (provenance, agent registry, L2 cache)
Directory Structure
mcp-agora/
├── pyproject.toml
├── config.yaml
├── README.md
├── AGENTS.md
├── ARCHITECTURE.md
├── agora/
│ ├── __init__.py
│ ├── main.py # Entry point: `agora` command
│ ├── server.py # FastMCP server + 8 tool registration
│ ├── config.py # YAML config loader
│ ├── logging.py # File-based structured logging
│ ├── registry.py # BackendRegistry (lifecycle, lazy connect)
│ ├── connectors/
│ │ ├── __init__.py
│ │ ├── base.py # BackendConnector ABC + ReadOnlyBlockedError
│ │ ├── stdio.py # STDIO subprocess MCP client
│ │ └── http.py # Streamable HTTP MCP client
│ ├── routing/
│ │ ├── __init__.py
│ │ └── router.py # Semantic + exact name router
│ ├── embedding/
│ │ ├── __init__.py
│ │ ├── base.py # Abstract EmbeddingProvider + WarmingUpError
│ │ └── sentence.py # sentence-transformers wrapper (sync preload, local_files_only, 60s timeout)
│ ├── memory/
│ │ ├── __init__.py
│ │ └── vector_store.py # ChromaDB PersistentClient wrapper
│ ├── cache/
│ │ ├── __init__.py
│ │ ├── l1_memory.py # TTLCache in-memory
│ │ └── l2_cache.py # SQLite-backed persistent cache
│ └── db/
│ ├── __init__.py
│ └── database.py # SQLite: agents, provenance, L2 cache
├── tests/
│ ├── __init__.py
│ ├── test_embedding.py
│ ├── test_memory.py
│ ├── test_cache.py
│ ├── test_l2_cache.py # L2 persistent cache tests
│ ├── test_provenance.py # Provenance + agent registry tests
│ ├── test_protocol.py
│ ├── test_routing.py
│ ├── test_connectors.py
│ ├── test_graceful.py # Health check, retry, rate limit tests
│ ├── test_mcp_smoke.py
│ └── _echo_server.py # Minimal FastMCP echo server for tests
└── examples/
└── config.yaml.example
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 315 lines · 3,759 tokens per session scan A 814327a87a24
mcp-agora AGENTS.md is an instructions file published in the GitHub repository cioffiAI/mcp-agora (5 stars, last pushed 1mo ago), licensed MIT. It adds 3,759 tokens to every session, about $0.0188 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
aeon CLAUDE.md
Instructions for aeonfun/aeon, covering aeon, how aeon works, strategy, voice and soul file hierarchy (read in this order).
cognirepo CLAUDE.md
Claude Code instructions for ashlesh-t/cognirepo, covering claude.md, key rules, session start sequence (run in this order), behavioral confirmation rule and personas (cognirepo-402, cognirepo-403).
wayland-core copilot-instructions.md
Copilot instructions for FerroxLabs/wayland-core, covering ijfw rules, output discipline, memory routing, context discipline and cross-audit.
mcp-structured-memory CLAUDE.md
Claude Code instructions for nmeierpolys/mcp-structured-memory, a project described as: Structured Memory MCP Server.
inkwell-memory CLAUDE.md
Instructions for veronchenko/inkwell-memory, covering claude.md — inkwellmemory, layout, multi-tenant mode (inkwellmultitenant=1), conventions and testing.
RNR-Enhanced-Cognee AGENTS.md
AGENTS.md instructions for vincentspereira/RNR-Enhanced-Cognee, covering rnr enhanced cognee implementation for codex, critical requirements, 1. ascii-only output (no unicode encoding), 2. dynamic categories (no hardcoded categories) and 3. standard memory mcp interface.