CtxRelay
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CtxRelayCompact this conversation and store the summary in the project context log."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
A system-agnostic MCP relay for continuous context. Wraps OmniEngineering's file-based engineering workspace as an MCP server, and orchestrates any MCP compactor — Headroom or otherwise — into it. Swapping compactors is a config edit, not a rewrite.
Contents
What is this? · What's in here · Architecture · Quick start · Tools · Status · Contributing · License
What is this, in plain English?
If you're not steeped in AI tooling, here's the short version.
An MCP server is a small program that gives an AI assistant (like Claude) a new skill — a set of "tools" it can call, the same way a phone app gets new abilities from a plugin. The MCP (Model Context Protocol) is just the common wiring standard that lets any assistant talk to any such plugin without custom integration work for each one.
Two skills, two servers, one problem they solve together:
AI assistants forget things between sessions, and long conversations eat up their limited "attention span" (context window). A compactor is a tool that squeezes a big pile of text down to the important parts — think of it like a good executive summary of a long meeting.
Separately, a project can have its own rulebook of engineering standards, conventions, and history (that's what OmniEngineering provides). omni-engineering-mcp exposes that rulebook to an assistant as tools, and adds a running notebook (
.ai/context-log.md) the assistant can keep writing to over time.CtxRelay is the piece that connects the two: it takes the executive summary from whichever compactor you use, and files it into the project's notebook automatically. You can swap in a different summarizer later without touching any code — just point a config file at it.
The net effect: an assistant working on your project keeps a running, space-efficient memory of what's happened, instead of starting from zero (or drowning in old transcript) every session.
Related MCP server: AgentMailbox
What's in here
Two MCP servers, one monorepo:
Package | Role |
CtxRelay ( | System-agnostic orchestrator. Spawns a configured compactor MCP server and an omni-engineering-mcp instance, and relays compacted output from one into the other. |
Turns OmniEngineering's rules/playbooks/checklists workspace into MCP tools, bound to one project per instance. Adds an append-only context log OmniEngineering didn't have on its own. |
Architecture
caller (Claude Desktop/Code, etc.)
│ relay_compact_and_store(text)
▼
CtxRelay ──calls "compactTool"──▶ <any compactor MCP server>
│ context_log_append(summary)
▼
omni-engineering-mcp ──writes──▶ .ai/context-log.md (per project)Why two servers instead of one merged one: compaction is a per-turn
token-reduction concern; context governance is a durable per-project
ruleset. Headroom is a third-party project — folding its code into this
repo would mean vendoring and tracking someone else's releases inside
ours. Keeping them separate, wired together by CtxRelay's thin MCP
list_tools/call_tool bridge, means either side can be swapped or
upgraded independently, and CtxRelay works with any compactor that
exposes a text-in/text-out tool, not just Headroom.
Quick start
npm install
npm run buildThen, per project you want this managing:
Run
omni-engineering-mcpwithOMNI_PROJECT_ROOTset to that project.Write a
ctxrelay.config.jsonfor that project (seepackages/ctxrelay-mcp/ctxrelay.config.example.json) pointingomniServerat step 1's server andcompactorat whatever MCP compactor you're using.Run CtxRelay with
CTXRELAY_CONFIGset to that file.
Point your MCP host (Claude Desktop, Claude Code, etc.) at whichever server it needs directly — most setups will only need to add CtxRelay, since it manages the omni-engineering-mcp child process itself.
{
"mcpServers": {
"ctxrelay": {
"command": "node",
"args": ["/absolute/path/to/context-relay-mcp/packages/ctxrelay-mcp/dist/index.js"],
"env": {
"CTXRELAY_CONFIG": "/absolute/path/to/your-project/ctxrelay.config.json"
}
}
}
}CtxRelay tools
Tool | What it does |
| Calls the configured compactor on |
| Reads back recent context-log entries (proxies |
| Confirms both child servers are reachable and lists their tools; does not compact or store anything. |
omni-engineering-mcp tools
Tool | What it does |
| Workspace health check. |
| Refresh entrypoints/shims/ignore files. |
| Regenerate |
| Parse the bound project with tree-sitter into a deterministic code graph -- no embeddings, no vector store. Edges tagged |
| Shortest tagged path between two symbols in that graph. |
| A symbol's direct outgoing/incoming edges, tagged |
| Renders the graph as a force-directed SVG node-link diagram ( |
| Print a context-loading profile's file list as JSON. |
| Same, but inlines every listed file's contents in one call. |
| Copy the vendored workspace into the bound project. |
| 3-way merge upstream template improvements into an adopted project. |
| Add a |
| Add a rule to a structured rulepack. |
| Append a compacted context entry to |
| Read back recent context-log entries. |
Full details, config shape, and the compactor adapter contract are in each package's own README.
Status
This is a working first cut, not a finished 1.0. Both servers build, and
CtxRelay has been exercised end-to-end against a stand-in compactor (spawn
both servers, relay_compact_and_store, confirm the compacted text lands
in .ai/context-log.md). It has not been exercised against a real
Headroom instance — see the compactor config note in
packages/ctxrelay-mcp/README.md
before pointing it at one. If you try it against Headroom (or any other
compactor) and hit a mismatch, that's exactly the kind of thing worth
opening an issue or PR for.
Contributing
Contributions, bug reports, and "this didn't work with X compactor" reports are all welcome — this is early enough that real-world use is the fastest way to find the rough edges.
Getting set up:
git clone https://github.com/M4K4TT4CK/context-relay-mcp.git
cd context-relay-mcp
npm install
npm run build # builds both packages via npm workspacesRequires Node.js 22+ and, for omni-engineering-mcp specifically, Python
3.10+ on PATH (as python3 or python).
Project shape, if you're orienting for the first time:
packages/omni-engineering-mcp/— the OmniEngineering MCP server. Source insrc/, a vendored snapshot of OmniEngineering undervendor/.packages/ctxrelay-mcp/— the orchestrator. Source insrc/.Each package builds independently with
npm run build(plaintsc, no bundler) and has its own README with the tool/config details.
Before opening a PR:
Run
npm run buildat the repo root and make sure both packages compile clean (tscis configured in strict mode).If you change the config schema in
ctxrelay-mcp/src/config.tsor the tool set in either server'ssrc/index.ts, update that package's README to match — the tables in these docs are meant to stay accurate, not aspirational.Keep changes scoped: this repo intentionally keeps the two servers decoupled (see Architecture above for why), so a PR that starts merging their responsibilities back together needs a good reason in the description.
No formal issue templates or CI yet — just open an issue or PR and describe what you were trying to do and what happened instead.
Brand Assets
Vector assets are in assets/brand/:
File | Use |
| README / repository header |
| Horizontal lockup — docs, presentations |
| Square icon — favicons, app icons, avatars |
Brand colors
Token | Hex | Use |
Crimson |
| Primary accent, hub, nodes |
Background |
| Dark surface |
Text |
| Primary text |
Muted |
| Secondary / label text |
License
Apache-2.0 — see LICENSE. Vendors a snapshot of OmniEngineering
(also Apache-2.0) under packages/omni-engineering-mcp/vendor/ — see
NOTICE and
packages/omni-engineering-mcp/vendor/VENDOR.md.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent memory for AI agents — log and recall conversation context over MCP.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Your versioned memory across every AI tool — context maps, personal memory, and tasks over MCP.
Related MCP Servers
- AlicenseBqualityCmaintenancePortable, auditable, local-first MCP memory for MCP-compatible AI agents and coding workflows. It keeps durable project memory outside the model runtime, compresses continuity into smaller working packs, and carries forward operational state so agents can resume with less repetition.2837Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to maintain persistent context across sessions, restarts, and handoffs through a mailbox-based context sync protocol, compatible with any MCP-aware client.161MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to have persistent long-term memory by automatically storing and retrieving important information via MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceA persistent memory MCP server that saves AI context across sessions and IDE restarts using a global log file.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/M4K4TT4CK/context-relay-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server