mhcoen avatar

Relay

mhcoen/mcp-relay

Connects Claude Desktop and Claude Code so they can pass messages to each other without copy-pasting between windows. Each side calls relay_send to push messages to a shared SQLite buffer and relay_fetch to pull them. Both models can send autonomously when they need input from the other side, but fetching is usually manual (you type "get" or "/get"). You get system notifications when something arrives. The design keeps context windows separate while letting you use Desktop for planning and Code for execution, then move results or questions between them. Works through stdio transport with a global buffer at ~/.relay_buffer.db.

GitHub stars
4
tools
9
transport
STDIO
last updated
Dec 31, 2025

Tools

9 tools

Public tool metadata for what this MCP can expose to an agent.

project.listList all Relay projects you have access to. Returns project IDs, names, slugs, and descriptions.1 params

List all Relay projects you have access to. Returns project IDs, names, slugs, and descriptions.

Parameters* required
limitnumber
Maximum number of projects to return
project.get_briefFetch a project context brief — decisions, constraints, progress, and memory items formatted for an AI coding session.4 params

Fetch a project context brief — decisions, constraints, progress, and memory items formatted for an AI coding session.

Parameters* required
includearray
Extra sections to include in the brief
kindstring
Brief kind: fresh_chat_bootstrap or quick_continuity
projectIdstring
Project ID (uses token-scoped project if omitted)
targetProfileKeystring
Target profile key for formatting
project.get_stateGet full structured project state including overview, objectives, decisions, constraints, and tasks.1 params

Get full structured project state including overview, objectives, decisions, constraints, and tasks.

Parameters* required
projectIdstring
Project ID (uses token-scoped project if omitted)
memory.searchSearch memory items by keyword or semantic query. Returns matching decisions, constraints, tasks, notes, and other memory items.5 params

Search memory items by keyword or semantic query. Returns matching decisions, constraints, tasks, notes, and other memory items.

Parameters* required
limitnumber
Maximum number of results to return
projectIdstring
Project ID (uses token-scoped project if omitted)
querystring
Search query to find relevant memory items
tagsarray
Filter by tags attached to memory items
typesarray
Filter by memory types: decision, constraint, task, note, artifact, requirement
memory.addAdd a memory item to the project. Use this to persist decisions, constraints, tasks, or notes discovered during the session.5 params

Add a memory item to the project. Use this to persist decisions, constraints, tasks, or notes discovered during the session.

Parameters* required
contentstring
The memory content to store
projectIdstring
Project ID (uses token-scoped project if omitted)
tagsarray
Tags for categorizing and searching
titlestring
Short title for the memory item
typestring
Memory type: decision, constraint, task, note, artifact, or requirement
context.saveSave a structured session summary with decisions, progress, next steps, and constraints. Call this at the end of a coding session.7 params

Save a structured session summary with decisions, progress, next steps, and constraints. Call this at the end of a coding session.

Parameters* required
constraintsarray
Constraints discovered during the session
decisionsarray
Decisions made during the session
nextStepsarray
Tasks or next steps identified
notesarray
General notes or observations
progressstring
Description of progress made
projectIdstring
Project ID (uses token-scoped project if omitted)
summarystring
High-level session summary
memory.manageUpdate, delete, or archive an existing memory item by its ID.5 params

Update, delete, or archive an existing memory item by its ID.

Parameters* required
actionstring
Action to perform: update, delete, or archive
contentstring
New content (for update action)
memoryIdstring
The ID of the memory item to manage
tagsarray
New tags (for update action)
titlestring
New title (for update action)
project.updateUpdate a project's name or description.3 params

Update a project's name or description.

Parameters* required
descriptionstring
New project description
namestring
New project name
projectIdstring
Project ID (uses token-scoped project if omitted)
memory.recallSearch memory and retrieve project state in one call. Use before making decisions to check for existing constraints and context.2 params

Search memory and retrieve project state in one call. Use before making decisions to check for existing constraints and context.

Parameters* required
projectIdstring
Project ID (uses token-scoped project if omitted)
querystring
What to search for in project memory

Sponsors

Readme

Relay

A wonderfully simple tool that moves information—files, code, data, comments, directions, etc.—between Claude Desktop and Claude Code while keeping their main context windows separate.

Both Claudes can send messages autonomously—when they need input from the other side, they just do it. You get a system notification when something arrives. You fetch when you're ready.

Why? Desktop and Code have different strengths. Desktop is better for conversation—planning, brainstorming, reviewing, iterating on prose. Code is better for execution—editing files, running commands, working through errors. But they don't share context. If you draft something in Desktop and want Code to implement it, or you want Desktop's opinion on code you're writing, you're copy-pasting between apps.

Relay connects them without requiring you to manually specify questions and cut & paste between windows. This is basic functionality that should have been integrated by Anthropic.


View the full README on GitHub

Details

Repository
github.com/mhcoen/mcp-relay
Package
mcp-server-relay
Transport
STDIO
Registry
MCP registry, active