Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alexluong
force-pushed
the
feat/mcp-test-harness
branch
from
October 30, 2026 20:51
92e557e to
ae4fc36
Compare
alexluong
force-pushed
the
feat/mcp-dev-cli
branch
from
October 30, 2026 20:51
8b9e129 to
1d85890
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add
mcp-dev, an experimental command to try, drive and check MCP Events (draft SEP-3415) servers, clients and receivers, andmake up/mcpto start the local stack with MCP Events on and sample events loaded.Stacked on #1192.
Try it
make up/mcp, thenmake mcp/dev ARGS=tour. The tour runs in one terminal: it lists the events, subscribes with an argument, publishes a matching and a non-matching event (only one arrives, with a valid signature), refreshes, unsubscribes and publishes once more (nothing arrives). Each step prints the JSON-RPC call next to what the receiver got.Changes
make up/mcp.make upplus MCP Events on (EXPERIMENTAL_MCP_ENABLED) with five sample events fromcmd/mcp-dev/samples/events.json,httpcallbacks allowed tohost.docker.internalonly (wheremcp-devlistens), retries after 1, 2 and 5 seconds, and a tenantdemo. The MCP server itself ismcp-dev serve.make upturns MCP Events off again.mcp-dev serve,client,receive.serveis a reference MCP Events server over Streamable HTTP that forwardsevents/list,events/subscribeandevents/unsubscribeto Outpost.clientcalls any MCP Events server (discover,list,subscribe,refresh,unsubscribe).receiveis a webhook receiver that answers the challenge, verifies every signature and prints each message and any rule it breaks.mcp-dev check. Runs the conformance checks from test: add MCP Events conformance checks and a shared test server #1192 with its own receiver and prints one line per rule. Exit status 0 means noFAIL, 1 aFAIL, 2 a usage error;--jsonprints the report, so it can run in CI. With--publish-tenantit publishes through Outpost and also checks delivered data, retries, secret rotation, filtering and isolation; without it, it waits for an upstream event and works against any server.mcp-dev tour. The narrated run above.publish,diff,samples.publishsends sample events built from each event'spayloadSchema(with--sink, through a temporary webhook destination so Outpost keeps them),diffcompares twoevents/listlists or a list and a server, andsamples --outwrites the sample list.servealso serves it atGET /samples/events.json, outside the MCP endpoint.cmd/mcp-dev/README.md: try it, drive it yourself in three terminals,check, connecting to Outpost behind a proxy (--outpost-url,--api-key,--outpost-header), troubleshooting.Behavior changes
None to Outpost.
Tests
Run by hand against a stack started with the
make up/mcpcompose overlay:tourcompletes,check --publish-tenant demopasses every check with oneWARN(the server accepts anhttpcallback, as the development switch allows),publish --sinkdelivers every event to the sink, anddiffof the sample list againstserveis equal.Not in this PR
httpcallbacks work only against a server that has the development exception, because the draft requireshttps.events/listsample file next to the other sample files; loading a list from a URL.🤖 Generated with Claude Code