Ultra-fast persistent memory workspace with tenant isolation and cross-model continuity.
One address for any MCP client. You sign in at mcp.mmwhub.ru once, after adding it.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
| Access to | Read | Change |
|---|---|---|
| Read | ||
| Write |
From the sign-in at mcp.mmwhub.ru, as the endpoint publishes it. You approve it there.
Odel could not list its tools without signing in.
Connection guides and client configuration for MMW — memory for AI agents you can trust.
User documentation: https://docs.mmwhub.tech · Русская версия: README.ru.md
MMW is a memory server for the Model Context Protocol (MCP). Your agent (Claude, Codex, Cursor or any MCP client) stores facts, decisions and agreements in MMW and finds them again in later sessions. Memory is not tied to one model or one computer.
Every user has a personal space. Companies create organizations: units, roles, visibility rules and knowledge handover when someone leaves.
Components:
https://mcp.mmwhub.tech/mcp — MCP over Streamable HTTP, stateless (every request stands on its own), JSON responses, API key authentication.mmw-agent: connects your MCP client to the server over stdio and, only with your consent, uploads Claude Code and Codex session history.What MMW does not do:
remember, plus the sessions you explicitly allowed to upload.Memory is only useful if the agent can trust it. The dangerous failure is not forgetting — it is an agent confidently answering with an outdated fact. MMW is built around that:
fact_key that disagree are flagged conflict. Search returns the newest version first, older ones carry superseded_by. In the account, "Needs a decision" turns each dispute into one plain question — "which one is right?" — with the options side by side; "Help me decide" asks a language model to phrase the question (only on click). The person decides; nothing is overwritten silently.source_id is a file path, mmw-agent hashes the file itself; if the file changes, records from it come back stale.mmw_). It is shown once — store it in a password manager.mmw-agent (Claude Code, Claude Desktop, Cursor, Codex)Requirements: Python 3.11+ and uv (the uvx command). The agent is not published on PyPI; uvx fetches the wheel on first start:
https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl
Claude Code
claude mcp add mmw \
-e MMW_API_KEY=mmw_your_key \
-e MMW_ENDPOINT=https://mcp.mmwhub.tech \
-- uvx --from https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl mmw-agent
Or add the mcpServers.mmw block below to ~/.claude.json by hand.
Claude Desktop and Cursor — the same JSON block: for Claude Desktop in claude_desktop_config.json (Settings → Developer → Edit config), for Cursor in ~/.cursor/mcp.json.
{
"mcpServers": {
"mmw": {
"command": "uvx",
"args": [
"--from",
"https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl",
"mmw-agent"
],
"env": {
"MMW_API_KEY": "mmw_your_key",
"MMW_ENDPOINT": "https://mcp.mmwhub.tech"
}
}
}
}
Codex — ~/.codex/config.toml:
[mcp_servers.mmw]
command = "uvx"
args = ["--from", "https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl", "mmw-agent"]
env = { MMW_API_KEY = "mmw_your_key", MMW_ENDPOINT = "https://mcp.mmwhub.tech" }
After a restart the client shows remember, search, forget, validate_memory, gateway_call and mmw_sync_status.
Check from a terminal:
MMW_API_KEY=mmw_your_key MMW_ENDPOINT=https://mcp.mmwhub.tech \
uvx --from https://app.mmwhub.tech/downloads/mmw-agent/mmw_agent-0.1.6-py3-none-any.whl mmw-agent status
| Command | What it does |
|---|---|
mmw-agent | Runs as an MCP server over stdio (this is how your client starts it). |
mmw-agent consent | Allow uploading session history. Interactive terminal only; a person must answer. |
mmw-agent revoke | Withdraw consent: uploads stop immediately. |
mmw-agent status | Local consent state and how many sources the server already has. |
mmw-agent hook-stop | Claude Code Stop hook: does not let a turn end when files changed after the last remember. |
mmw-agent support CODE | Opens a support session with the one-time code from the account: the operator sees only the diagnostics you agree to send and proposes fixes you approve one by one. |
| Variable | Purpose |
|---|---|
MMW_API_KEY | API key from your account (required). |
MMW_ENDPOINT | Server address. Set https://mcp.mmwhub.tech. |
MMW_LANG | Message language, en or ru (default depends on the server address). |
MMW_AGENT_HOME | Agent state directory, default ~/.mmw. |
The agent forwards every call to the server, so the client sees the full list of server tools. If the server is unreachable at start-up, the client does not fail: the agent answers locally and connects when the server is back.
https://mcp.mmwhub.tech/mcpThe local agent does not run in the web app, so session sync is not available there.
If your client (for example VS Code or another MCP client) supports remote MCP servers over Streamable HTTP, connect without the agent:
{
"mcpServers": {
"mmw": {
"url": "https://mcp.mmwhub.tech/mcp",
"headers": { "Authorization": "Bearer mmw_your_key" }
}
}
}
The exact key names (url, headers) differ between clients; check your client's MCP documentation. Session sync and mmw_sync_status are only available through mmw-agent.
| Tool | Where | Description |
|---|---|---|
remember | server | Store a memory record. |
search | server | Find records by query. |
forget | server | Delete a record or all records of a source. |
validate_memory | server | Check records of a source against its current hash. |
gateway_call | server | Call a tool of an integration connected to the key's project. |
mmw_sync_status | mmw-agent only | Read-only: whether session-sync consent was given and how the last sync cycle went. |
Integrations connected to a project (for example github_readonly) may also appear as tools, but only for keys of that project.
remember| Parameter | Description |
|---|---|
content | Record text (required). |
workspace | Workspace, default default. |
scope | Label for filtering (shared, private, …). It does not restrict access; in organizations access is governed by visibility. |
source, source_id, source_hash, source_revision | Where the record comes from. This is provenance, not proof: a new record is always unverified; source_hash is later used to check freshness. |
derived_from | IDs of the records this one summarizes. Their conflicts and staleness stay visible on the summary. |
fact_key | Fact key: records with the same key are compared for conflicts. |
confidence | 0–1, default 0.5. |
The X-Idempotency-Key header makes retries safe: the same key with the same content returns the same record.
search| Parameter | Description |
|---|---|
query | Query text. |
workspace | Workspace. |
scope | Label filter. |
limit | 1–50, default 10. |
current_source_hash | Fresh source hash: outdated records become stale. |
exclude_stale | Hide outdated records. |
Returns records with source, confidence, status (unverified, stale, conflict), derived_from and graph links (graph_relations). The newest record of a fact_key ranks first; older versions carry superseded_by. A summary inherits conflict or stale from its source records.
forgetmemory_id deletes one record; source_id deletes every record of that source. Deleted records leave search and graph links; the deletion is kept for audit. In an organization you can only delete what you can see.
validate_memorysource_id and current_source_hash: how many records of the source were checked, which are stale and which conflict.
gateway_callserver, tool, arguments: calls a tool of a connected integration on behalf of the project. Integration secrets stay on the server and never reach the agent. Integrations are enabled in the account under MCP Gateway.
mmw-agent only)mmw-agent consent in a terminal: the agent shows how many sessions it found and asks for permission. A model or a script cannot give consent. Stop at any time with mmw-agent revoke.Session history volume by plan (newest sessions first; counted on the cleaned text):
| Plan | History volume | Depth |
|---|---|---|
| Free | 25 MB | 7 days |
| Starter | 100 MB | 30 days |
| Pro | 500 MB | 90 days |
| Enterprise and organizations | 20 GB | full history |
| Role | Rights |
|---|---|
| Admin | Structure, people, invitations, all keys (never their secrets), audit log, plan. |
| Head | Records of their unit and everything below it; offboarding people in that subtree. |
| Member | Own records and records opened to their unit, project or the organization. |
| Contractor | Own records and project records only; access can be time-limited. |
| Auditor | Organization audit log without record content. |
Organizations are activated by the MMW team: contact support@mmwhub.tech.
| Plan | Price | Records | Calls/min |
|---|---|---|---|
| Free | $0, 3-day trial | 250 | 60 |
| Starter | $5/month | up to 5,000 per project | 120 |
| Pro | $35/month | up to 100,000 | 120 |
| Enterprise | $117/month (SLA, NDA) | up to 1,000,000 | 300 |
| On-premise | contact us | by agreement | — |
Organizations: $18 per seat per month, or $14 per seat per month billed yearly; minimum 5 seats. People who left and contractors whose term ended take no seat. Pilot: 14 days, up to 10 seats.
When a limit is reached, writes are refused with a clear error; reading keeps working.
connect.sh, connect.ps1)The scripts write a direct remote connection (url + Authorization header) into your client configuration and can verify it with --verify. They do not install mmw-agent and do not enable session sync. Default endpoint: https://mcp.mmwhub.tech/mcp.
# macOS / Linux — preview first
MMW_CREDENTIAL='mmw_your_key' ./connect.sh --client cursor --dry-run
MMW_CREDENTIAL='mmw_your_key' ./connect.sh --client cursor --verify
# Windows (PowerShell)
$env:MMW_CREDENTIAL='mmw_your_key'
.\connect.ps1 -Client cursor -Verify
Warning — read before running connect.sh:
--client, it configures every client it detects on the machine.--client codex overwrites ~/.codex/config.toml entirely with a single [mcp_servers.mmw] block; any other Codex settings in that file are lost. Back the file up first, or add the Codex block from the Quickstart by hand.--client claude also appends an "MMW Omnipresent Memory" instruction block to ~/.claude/CLAUDE.md (if that file exists and does not already contain it), and, if mmw_proxy.py is found, registers it in Claude Code CLI as a stdio server.~/.config/mmw/credential (mode 600) and written in plain text into the client configuration files.--uninstall deletes the generated client configuration files (not just the mmw entry) and the stored key.connect.ps1 writes the client configuration file for the chosen client from scratch and, for Codex, only prints the block to add.
mmw_proxy.pymmw_proxy.py is an earlier local stdio proxy with a local SQLite spool. It is legacy and no longer maintained: it exposes only remember, search, forget and spool_status, does not support validate_memory, gateway_call or session sync. Use mmw-agent instead.
MIT, see LICENSE.