MCP Session Bridge
What is this?
A small, self-hosted MCP server that gives Claude, ChatGPT, Codex, or any model with an MCP connector a durable conversation transcript. It lets you open a session, append a full user/model exchange, read the history back in bounded chunks, and leave a Markdown summary at the end.
GitHub Link: github.com/NivailoPL/mcp-session-bridge
Why?
Multi-model brainstorming sessions. To dive deep into a subject, you need a continuous conversation window where you can swap between models without copying text by hand.
The web harnesses work through API pricing, which can spike with medium contexts and longer conversations. This tool uses subscription flat-rate pricing by letting models talk through the server from the tabs you already use.
Models introduce themselves every turn and mark messages with timestamps, so a transcript can survive across Claude, ChatGPT, Codex, and other clients.
How it works
- You start by letting the model set up a session.
- You copy the session number to the second model, so both write to the same space.
- Model A writes an exchange. Model B reads chunks, continues the thread, and saves its own exchange.
- Auth follows OAuth 2.1-style authorization code + PKCE + dynamic client registration.
claude.ai chatgpt.com other
└─────────────┼──────────────┘
OAuth 2.1 · PKCE · DCR
│
┌───────────▼───────────┐
│ session bridge │ FastMCP / Starlette
│ 11 MCP tools │ Caddy · auto-TLS
└───────────┬───────────┘
│
SQLite (WAL)
sessions · exchanges · summariesWhat's unique about it?
- Auth-first. OAuth-style auth, PKCE S256, dynamic client registration, refresh-token rotation, and resource indicators.
- Admin panel. A protected preview of full conversations in three chat styles.
- Scalable to different providers because the bridge is protocol-shaped, not chat-UI-shaped.
Admin panel · the same transcript in three styles. Click to enlarge.
Main tools
The bridge exposes 11 MCP tools. The five main ones:
| TOOL | WHAT IT DOES |
|---|---|
list_sessions | Lists saved sessions with titles, timestamps, and exchange counts. |
get_session_overview | Returns session metadata and chunking info without transcript content. |
get_session_transcript_chunk | Returns one bounded chunk of the transcript. |
create_session | Opens a new model-to-model conversation session. |
save_exchange | Appends one full user/model exchange to the shared transcript. |
Plans ahead
- Rate-limiting on login and a purge job for expired tokens.
- A render cache for transcript chunks.
- Un-hiding the context-pack layer once client-side tool-result limits loosen.
- Wiring the bridge in as per-persona memory for a SIP telephone agent.
- Moving the admin panel off the public internet.
Drawbacks & limitations
- Single-owner by design; no multi-user story.
save_exchangeis not idempotent, so client retries can duplicate turns.- Every chunk request re-renders the full transcript; invisible when small, quadratic when large.
- One global write lock and one worker process.
- Context transfer remains capped by client-side tool-result truncation.
(Coming Soon)
What is this
(Coming Soon)
Why
(Coming Soon)
How it works
(Coming Soon)
What's unique
(Coming Soon)
Main tools
(Coming Soon)
Plans ahead
(Coming Soon)
Drawbacks & limitations
(Coming Soon)
(Coming Soon)
What is this
(Coming Soon)
Why
(Coming Soon)
How it works
(Coming Soon)
What's unique
(Coming Soon)
Main tools
(Coming Soon)
Plans ahead
(Coming Soon)
Drawbacks & limitations
(Coming Soon)