Skip to main content
  .-----.
  |  🔴  |
  |  🟡  |
  |  🟢  |
  '-----'
   greenlight

greenlight

See what your MCP server is actually doing.

A transparent stdio proxy for the Model Context Protocol. Point it at your real server command instead of running that command directly, and it relays every byte exactly as before -- while recording every JSON-RPC message to a structured log you can watch live or replay.

Right now, if an MCP integration isn't working, you're debugging blind: no visibility into what got sent, what came back, or why a call failed. Greenlight exists to fix that.

Install

pip install -e .

(Not yet published to PyPI as greenlight-mcp -- install from source for now.)

Use it

Wherever you'd normally configure a server command, wrap it:

greenlight run -- npx -y @some/mcp-server

instead of

npx -y @some/mcp-server

Every message that passes through gets logged to ./sessions/. Watch it:

greenlight tail                 # replay the most recent session
greenlight tail -f              # follow a session that's still running
greenlight tail path/to/log.jsonl

Trace output is colorized by status: green for a clean success, yellow for a slow-but-fine call, red for anything that actually failed -- including MCP tool-level failures (result.isError), not just transport-level JSON-RPC errors, which are a different thing and easy to miss if you only check for the obvious one. See notes/day1.md for why that distinction mattered enough to write a whole note about it.

How it works

greenlight run spawns your real server as a subprocess and sits between it and the real MCP client, relaying stdin/stdout on two threads. Every line is parsed as JSON-RPC, correlated by request id (so a response knows its own method name and latency), and written to a JSONL file. The one rule the whole thing depends on: nothing but the child process's actual bytes ever reaches Greenlight's own stdout -- logging and UI output only ever go to stderr or to disk. A single stray print to stdout would corrupt the protocol stream the real client is parsing.

Status

  • greenlight run -- transparent proxy, validated end-to-end against a real MCP server (not a mock)
  • greenlight tail -- live trace viewer, both static replay and genuine live-follow (verified separately, not assumed)
  • Windows PATH resolution for npx-style commands
  • Tested against a real npx-launched server (so far only validated against a Python fixture server)
  • HTTP/SSE transport (stdio only for now -- covers the common local MCP server case)
  • Published to PyPI

Notes

notes/ is a running engineering log, not a cleaned-up retrospective -- what broke, how it was found, why the fix is what it is.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

greenlight_mcp-0.1.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

greenlight_mcp-0.1.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file greenlight_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: greenlight_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for greenlight_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2507acf955488877c24602326ff0bfbf81136029f5e5ffc91ef8ea6897beed5d
MD5 628783abfb83fde39ec4aed2bd221ca7
BLAKE2b-256 68c4ae01f3b1ef686c3e125d5f78a0bebac18475f5cf6a23a0a01c1dec239c7b

See more details on using hashes here.

File details

Details for the file greenlight_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: greenlight_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for greenlight_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f031f6f174dc6f0f9b8f8a61794d730af4f8eb751ace976bf8cfdc72411d02ff
MD5 59ab296f6043883b790ebbd19d08c792
BLAKE2b-256 1161464664ca2917dca5dc95ace0f5f0b19bd6855388483be84d3c87f73f53f8

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.0

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page