Commit Graph

159 Commits

Author SHA1 Message Date
LDMB123
2bf7a5eab2
fix(replay): rewrite response ids during replay (#192)
Some checks failed
CI / build (${{ matrix.os }}) (macos-15) (push) Has been cancelled
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Has been cancelled
CI / build (${{ matrix.os }}) (windows-latest) (push) Has been cancelled
pages / Deploy docs (push) Has been cancelled
* feat(record): capture MCP call streams to NDJSON and replay deterministically

mcporter record <session> wraps the runtime transport and appends every
JSON-RPC request, response, and notification to a per-session NDJSON file
under ~/.mcporter/recordings/. mcporter replay <session> reconstructs an
in-memory transport from the recording and matches requests by method +
deep-equal params, returning the recorded response without contacting
the live server.

Use cases:
- Reproduce MCP-backed agent bugs offline (no live Linear quota, no
  Vercel API rate limits)
- Build test fixtures from real call sequences
- Share a session for a postmortem without sharing credentials

The format is plain JSON-RPC over NDJSON with a small _meta field
(direction, server, timestamp). No proprietary blob. Env-var passthrough
(MCPORTER_RECORD=<name>, MCPORTER_REPLAY=<name>) lets the existing
runtime constructor wrap any transport when set.

* fix(replay): attach cause to wrapped errors to satisfy preserve-caught-error lint

* fix(replay): rewrite response ids during replay

* fix(replay): harden record replay modes

Clear conflicting record/replay env vars when spawning wrapped commands, force those commands off the daemon fast path, truncate each recording file at session start, and fail replay close when recorded requests remain unused.

* fix(cli): preserve wrapped command flags

Stop global flag extraction at -- so record/replay wrappers do not consume child command flags, and drop the release-owned changelog entry from the PR diff.

* fix(replay): propagate cleanup failures through cli

Ensure replay-mode transport close failures escape normal runtime and CLI cleanup after best-effort shutdown has completed. Add runtime and CLI regressions for partial recordings that leave requests unreplayed.

* fix: harden record replay runtime paths

* test: align replay fixtures with windows home

---------

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-31 08:52:02 +01:00
Peter Steinberger
815016a008
docs: position README banner
Some checks are pending
CI / build (${{ matrix.os }}) (windows-latest) (push) Waiting to run
CI / build (${{ matrix.os }}) (macos-15) (push) Waiting to run
CI / build (${{ matrix.os }}) (ubuntu-latest) (push) Waiting to run
2026-05-28 20:48:14 +01:00
Peter Steinberger
fb3f041339
docs: add README banner 2026-05-28 19:43:30 +01:00
Peter Steinberger
67e3f5250f
fix: fall back to legacy config after empty xdg home (#185) 2026-05-21 22:15:13 +01:00
Peter Steinberger
de7c811271
feat: add list health check flags (#183) 2026-05-20 20:55:21 +01:00
Peter Steinberger
a1201d1955
fix: support daemon idle timeout config 2026-05-20 17:34:42 +01:00
Asim Arshad
8c63bbe81e docs: clarify headless OAuth process lifetime 2026-05-17 00:36:39 +01:00
Peter Steinberger
46cc31cafe
fix: harden generated cli bundles 2026-05-14 19:22:37 +01:00
Peter Steinberger
7f1e9a8ce0
feat: support refreshable bearer stdio auth 2026-05-14 18:29:43 +01:00
Peter Steinberger
3e06e582ef
fix: add HTTP fetch compatibility mode 2026-05-14 17:31:36 +01:00
Peter Steinberger
2171c1f209
Merge pull request #171 from feniix/feat/headless-oauth-no-browser
feat: add headless OAuth browser suppression
2026-05-14 16:48:57 +01:00
Peter Steinberger
8d962fbd79
Merge remote-tracking branch 'origin/main' into feat/mcporter-serve
# Conflicts:
#	CHANGELOG.md
2026-05-14 13:40:29 +01:00
Peter Steinberger
eee954e4a1
fix: patch chrome-devtools auto-connect hang 2026-05-14 12:51:16 +01:00
zm2231
6879a69f49 feat: add mcporter serve bridge 2026-05-13 20:26:12 -04:00
Sebastian Otaegui
7ddb433479
docs: document headless OAuth auth flow 2026-05-12 23:59:45 -03:00
Peter Steinberger
a64e29b4fe
feat: add headless OAuth vault seeding
Some checks are pending
CI / build (macos-latest) (push) Waiting to run
CI / build (ubuntu-latest) (push) Waiting to run
CI / build (windows-latest) (push) Waiting to run
pages / Deploy docs (push) Waiting to run
2026-05-09 14:55:44 +01:00
Peter Steinberger
ea91086273
fix: resolve config env placeholders 2026-05-09 13:14:09 +01:00
Peter Steinberger
c0e251babe
fix: harden live mcp cli paths 2026-05-09 12:23:33 +01:00
Peter Steinberger
b3e1c7c314
fix: extend oauth browser timeout 2026-05-08 03:56:38 +01:00
Peter Steinberger
7d345bc7db
docs: add static GitHub Pages site
Some checks failed
CI / build (macos-latest) (push) Waiting to run
CI / build (ubuntu-latest) (push) Waiting to run
CI / build (windows-latest) (push) Waiting to run
pages / Deploy docs (push) Has been cancelled
2026-05-06 05:56:02 +01:00
Peter Steinberger
6ed98602ef
docs: clarify Homebrew release verification 2026-05-04 10:10:01 +01:00
Peter Steinberger
bb6e64617a
fix: honor xdg directories 2026-05-04 08:14:31 +01:00
Peter Steinberger
eb8986cd10
docs: clarify daemon isolation 2026-05-04 08:05:35 +01:00
Peter Steinberger
dd33721d89
feat: support static oauth clients 2026-05-04 08:03:13 +01:00
Peter Steinberger
caa00dd3a4
docs: document agent skill pattern 2026-05-04 07:54:40 +01:00
Peter Steinberger
75dba26173
feat: add resource read command 2026-05-04 07:50:26 +01:00
Peter Steinberger
db6a199cd5
feat: route generated keep-alive CLIs through daemon 2026-05-04 07:42:34 +01:00
Peter Steinberger
07ac8ea4c0
fix: start bun daemon children through nohup 2026-05-04 07:32:27 +01:00
Peter Steinberger
0e50f2b564
feat: add compact list signatures
Co-authored-by: yuhp <yu.haip@gmail.com>
2026-05-04 06:52:34 +01:00
Peter Steinberger
5d8e64d5d5
feat: surface server instructions in list 2026-05-04 06:22:18 +01:00
Peter Steinberger
a64bdda3f7
feat: support per-tool list schemas 2026-05-04 06:19:31 +01:00
Peter Steinberger
d9eda97abe
fix: fail oauth when authorization url is missing 2026-05-04 06:16:48 +01:00
Peter Steinberger
88237703e2
fix: let list reuse cached oauth tokens 2026-05-04 06:00:11 +01:00
Peter Steinberger
c2c256db7e
fix: persist ad-hoc oauth promotion 2026-05-04 05:58:15 +01:00
Peter Steinberger
3f4f8dc317
feat: support ad-hoc HTTP headers 2026-05-04 05:49:25 +01:00
Peter Steinberger
41fa8cb06e
fix: wrap long-flag array values 2026-05-04 05:12:57 +01:00
Peter Steinberger
25e68730a9
fix: restore call long-flag arguments 2026-05-04 05:11:27 +01:00
Peter Steinberger
6e597cf59f
fix: handle CLI generation edge cases 2026-05-04 05:05:12 +01:00
Peter Steinberger
7ffbd52bf7
fix: respect stdio cwd config 2026-05-04 05:05:10 +01:00
Peter Steinberger
7bfc4736aa feat: add per-server tool filtering 2026-04-18 21:52:18 +01:00
Peter Steinberger
34fe35e46c
style: apply oxfmt formatting 2026-04-18 19:33:22 +01:00
Peter Steinberger
efed4d4383
build: migrate lint formatting tooling 2026-04-18 19:33:08 +01:00
Peter Steinberger
4daadfc08f fix: preserve schema string call args 2026-04-18 19:22:38 +01:00
Peter Steinberger
b69dd07dba
test: refresh live deepwiki smoke 2026-03-29 09:40:39 +09:00
Peter Steinberger
d7cfc29bff
fix: reject unknown call flags (#35) 2026-03-28 21:33:15 +00:00
Saatvik Arya
1dc2e70061 feat: add JSON Schema generation for config files
- Add .describe() to Zod schemas for rich documentation
- Create generate-json-schema.ts using Zod v4's toJSONSchema()
- Add generate:schema npm script
- Generate mcporter.schema.json at repo root
- Document $schema usage in docs/config.md
2026-03-03 01:07:35 +00:00
Peter Steinberger
7ff297ef2e fix: make image handling opt-in and preserve output contracts (#61) (thanks @daniella-11ways) 2026-03-02 22:38:01 +00:00
Peter Steinberger
8988adda77 docs: document call coercion flags 2026-03-02 21:48:42 +00:00
Peter Steinberger
98c300b3dc fix: harden oauth headless flow + add scope override/tests (#72) (thanks @mgonto) 2026-03-02 18:32:55 +00:00
Peter Steinberger
e18af40078 docs: add front matter to live tests 2025-12-30 00:09:03 +01:00