About yodmcp
YodMCP is a Python-based Agent Operating System kernel built around MCP, for teams developing agents that need memory, task tracking, skills, and auditability. It combines multi-graph memory with MCP and A2A interfaces, an API, and configurable attestation modes.
Key features
- 01Multi-graph memory with gated promotion
- 02Durable task handles and status updates
- 03Agent Skills exposed as MCP resources
- 04A2A, REST API, and SDK surfaces
- 05Audit events and attestation claims
- 06Configurable memory backends and plans
Use cases
- 01Store and retrieve agent facts across tasks
- 02Track durable work and update its progress
- 03Load skills and discover MCP capabilities
- 04Review tool decisions and provenance claims
MCP support
YodMCP provides an MCP server over stdio or Streamable HTTP for local and remote clients. It exposes memory, tasks, skills, plan cache, capability discovery, audit, and attestation tools, with skills also available as resources.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEYodMCP — Agent Operating System
YodMCP is a production-oriented Agent Operating System kernel on MCP: multi-graph memory, Tasks, Skills, A2A, attestation (software / simulated TEE), OpenTelemetry, and plan-based monetization.
This README is written so a senior engineer with only this file + the source tree can install, deploy every surface, exercise features, and verify end-to-end.
FOUNDRY mapping
FOUNDRY (host-owned trust and memory for long-horizon agent swarms) separates untrusted proposal generation from host-owned verification + established-facts registry.
YodMCP is that registry in production: agents call memory_write; promotion to semantic memory is gated; the host owns the evaluator. Full note: docs/FOUNDRY.md.
First dollar
Meters first. Seat if the loop holds.
| Unit | Stripe | x402 |
|---|---|---|
| OpenGOS Search $0.40 | Buy | GET /v1/search |
| OpenGOS Draft $2.50 | Buy | GET /v1/draft |
| Agentic OS Cycle $0.75 | Buy | GET /v1/cycle |
| YodMCP Pro $49/mo | Subscribe | USDC |
x402 rail: x402-cloudflare-starter. Desk sync: https://anamized.grok.me
Package surfaces
| Surface | Command | Default | Purpose |
|---------|---------|---------|
| MCP | yodmcp | stdio | Local MCP clients (Cursor, Claude Desktop, etc.) |
| MCP HTTP | yodmcp --http --port 8000 | :8000/mcp | Remote / Streamable HTTP MCP |
| API | yodmcp-api --port 8080 | :8080 | REST health, memory, audit, skills, billing |
| A2A | yodmcp-a2a --port 9000 | :9000 | Agent Card, message, tasks |
| SDK | from yodmcp.sdk import YodClient | HTTP client | Thin client for the API |
| Skills | skills:// + skills/*/SKILL.md | auto-loaded | Agent Skills as MCP resources |
| Verify | pytest + scripts/verify_e2e.py | CI | Substrate + durable + TEE modes |
Requirements
- Python 3.11 or 3.12 (3.10+ declared; CI covers 3.11/3.12)
- Optional: Docker for multi-service compose
Install
git clone https://github.com/ANAMIZED/YodMCP.git
cd YodMCP
python -m venv .venv && source .venv/bin/activate # recommended
pip install -e ".[dev]"
Copy environment defaults:
cp .env.example .env
| Variable | Default | Meaning |
|---|---|---|
YODMCP_MEMORY_BACKEND | memory | memory | sqlite | durable |
YODMCP_MEMORY_DB | ./data/yodmcp_memory.db | SQLite path when durable |
YODMCP_ATTEST_MODE | software | software | simulated_tee | nitro | sgx |
YODMCP_PLAN | free | free | pro | enterprise |
YODMCP_TENANT_ID | default | Soft quota tenant key |
YODMCP_SKILLS_DIR | (auto) | Override skills root |
STRIPE_SECRET_KEY | unset | Enables live Checkout Sessions |
TEE honesty:
nitro/sgxare provider hooks; without real TEE libraries they fall back to simulated claims. Prefersoftwareorsimulated_teefor local verify.
Quick start (local)
# 1) MCP over stdio (attach from an MCP client)
yodmcp
# 2) REST API
yodmcp-api --port 8080
# curl http://127.0.0.1:8080/health
# 3) A2A
yodmcp-a2a --port 9000
# curl http://127.0.0.1:9000/a2a/card
MCP client configuration (stdio)
Cursor — project .cursor/mcp.json or global MCP settings:
{
"mcpServers": {
"yodmcp": {
"command": "yodmcp",
"args": [],
"env": {
"YODMCP_MEMORY_BACKEND": "memory",
"YODMCP_PLAN": "free",
"YODMCP_ATTEST_MODE": "software"
}
}
}
}
If yodmcp is not on PATH, use the module form:
{
"mcpServers": {
"yodmcp": {
"command": "python",
"args": ["-m", "yodmcp"],
"cwd": "/absolute/path/to/YodMCP",
"env": {
"PYTHONPATH": "src",
"YODMCP_MEMORY_BACKEND": "memory"
}
}
}
}
Claude Desktop — same shape under mcpServers in claude_desktop_config.json.
Streamable HTTP MCP (remote clients that support URL transport):
yodmcp --http --host 0.0.0.0 --port 8000
# endpoint: http://127.0.0.1:8000/mcp
Docker
docker compose up --build
# API :8080 A2A :9000 MCP HTTP :8000
Single API container:
docker build -t yodmcp .
docker run --rm -p 8080:8080 -e YODMCP_PLAN=free yodmcp
Verify end-to-end (no external accounts required)
# Unit + integration
YODMCP_MEMORY_BACKEND=memory YODMCP_ATTEST_MODE=software \
PYTHONPATH=src pytest tests/ -v
# Durable SQLite + simulated TEE
YODMCP_MEMORY_BACKEND=sqlite YODMCP_MEMORY_DB=/tmp/yodmcp.db \
YODMCP_ATTEST_MODE=simulated_tee \
PYTHONPATH=src pytest tests/ -v
# Exhaustive substrate script
PYTHONPATH=src python scripts/verify_e2e.py
Expected: all tests green; script prints ALL E2E CHECKS PASSED.
API smoke (with yodmcp-api running):
curl -s http://127.0.0.1:8080/health
curl -s http://127.0.0.1:8080/api/skills
curl -s http://127.0.0.1:8080/api/billing/plans
curl -s http://127.0.0.1:8080/api/billing/status
SDK:
python examples/sdk_quickstart.py # requires API on :8080
MCP tools (catalog)
| Tool | Description |
|---|---|
memory_write | Insert one memory node (facts/decisions). Not for plans (plan_cache_put). |
memory_read | Retrieve nodes by similarity or item_id. Not for plans (plan_cache_get). |
memory_delete | Hard-delete one node + incident edges. Idempotent if missing. |
memory_consolidate | Promote importance ≥ 0.8 into semantic summaries. Does not delete sources. |
memory_stats | Node/edge/entity counts. Not content (memory_read). |
tasks_create | Create a durable pending task handle. |
tasks_get | Fetch one handle by id. |
tasks_list | List recent handles, optional status filter. |
tasks_update | Patch status/progress/result. Not cancel (tasks_cancel). |
tasks_cancel | Mark a handle cancelled (kernel state only). |
tasks_stats | Counts by status. Not a listing (tasks_list). |
skills_list | List Agent Skills + skills:// URIs (bodies are resources). |
a2a_card | A2A Agent Card JSON. Not the MCP catalog (discover_capabilities). |
plan_cache_get / plan_cache_put / plan_cache_delete | Semantic plan templates. Not memory facts. |
cache_stats | In-process cache entry/hit totals. |
attestation_recent | TRACE-style provenance claims. Not the audit trail (audit_recent). |
audit_recent | Policy/tool Decision-System-of-Record events. |
discover_capabilities | List MCP tools + loaded skills. |
echo | Liveness probe (message echoed + version). |
Resources:
skills://{name}— skill markdown bodyyodmcp://agent-card— agent card JSON
Skills
Built-in skills are always registered. Disk skills under skills/*/SKILL.md are loaded automatically (override via YODMCP_SKILLS_DIR). Repo ships:
memory-hygiene,safe-tool-use,funding-usdc,repo-bootstrap- Plus built-in
long-horizon-planning
Monetization
| Plan | $/mo | Tool calls/day | Durable | TEE |
|---|---|---|---|---|
| Free | 0 | 500 | — | — |
| Pro | 49 | 50k | yes | simulated |
| Enterprise | 499 | unlimited | yes | Nitro/SGX hooks |
- Soft quotas via tool gate; upgrade messaging on exhaustion
- Live Stripe Checkout when
STRIPE_SECRET_KEYis set; otherwise checkout returnsstatus: payment_link
| Option | Link |
|---|---|
| YodMCP Pro | https://buy.stripe.com/bJe3cw0kCaLrbVz1AY43S09 |
| YodMCP Enterprise | https://buy.stripe.com/9B68wQ1oGcTz9NrfrO43S0a |
| Agentic OS Kernel Support ($99) | https://buy.stripe.com/bJecN63wObPv6Bf7Zm43S02 |
| Public Goods Support ($25) | https://donate.stripe.com/00w5kE3wOg5L8Jn2F243S00 |
| Agentic Systems Consulting Hour ($199) | https://buy.stripe.com/dRmaEYgjA9Hnf7LdjG43S0b |
Non-custodial USDC (preferred for agents)
| Network | Address |
|---|---|
| Base | 0xD3d0E9eDAe3Ac7bb199a8EAA761BdA423b878438 |
| Ethereum | 0xD3d0E9eDAe3Ac7bb199a8EAA761BdA423b878438 |
| Solana | ETQwWf19axArsY493UfC6bxe2BmEzmzvCb58PPnC38A |
Canonical: funding/addresses.json
Project layout
src/yodmcp/ # package (src-layout)
core/ # server, substrate, context
memory/ # in-memory + durable SQLite multi-graph
tools/ # MCP tool registration + gate
tasks/ skills/ cache/ security/ observability/ monetization/
api/ a2a/ sdk/
skills/*/SKILL.md # portable Agent Skills (loaded at runtime)
scripts/verify_e2e.py
tests/
docs/ARCHITECTURE.md
docs/FOUNDRY.md
docs/TDQS.md
Known limitations (read before claiming production)
- Plan cache uses lightweight embeddings; default similarity threshold is 0.68 (not production vector search).
- TEE Nitro/SGX are hooks with simulated fallback unless you wire real providers.
- Frontend
src/yodmcp/frontend/dashboard.pystill uses legacycore.runtimeand is not the primary control plane — useyodmcp-api+ MCP tools. - Quotas are soft (in-process meter); not a distributed billing ledger.
- Processes do not share in-memory state; use
sqlitebackend + shared volume for multi-process durability.
License
Apache-2.0 · CONTRIBUTING · CHANGELOG · ARCHITECTURE · FOUNDRY · TDQS · AGENTS.md
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.