You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
test: end-to-end test of a generated MCP server (gRPC backend + MCP client) #87
Part of #44. This is the behavioural safety net for the migration: it pins down what MCP clients see today, so the official-SDK version (#89) can be checked against it.
Do
Add an end-to-end test (e.g. examples/gen/example/v1/e2e_test.go, or test/e2e/) that:
Starts an in-memory gRPC server (google.golang.org/grpc/test/bufconn) with a fakeVibeService that records the requests it receives and returns canned responses or errors.
Builds the generated MCP server (NewVibeServiceMCPServer + RegisterDefaultTools) on a client to that backend.
Talks MCP to it in-process, using mark3labs' in-process client if v0.21 has one, otherwise MCPServer.HandleMessage with JSON-RPC messages.
Asserts:
tools/list: the tool names, descriptions and input schemas (snapshot them).
tools/call for every RPC: the arguments sent reach the fake backend as the right proto request.
Results: the tool result content matches the response.
Errors: a gRPC error (e.g. codes.NotFound) produces a tool result with isError: true.
Keep the MCP-client part behind one small helper (e.g. listTools(t), callTool(t, name, args)), so the migration only has to swap that helper.
Today's generated schema nests arguments under a property named after the request message, while the handler reads them from the top level. Test what the handler does today (top-level arguments), and mark the schema mismatch with a // KNOWN BUG (#88/#89) comment instead of asserting the wrong schema.
Acceptance criteria
go test ./... passes, covering all 5 VibeService RPCs plus at least one gRPC error case.
Runs in under 5 seconds and needs no network or protoc.
🤖 Factory: opened PR #95 with an end-to-end test (examples/gen/example/v1/e2e_test.go) covering tools/list and tools/call for all 5 VibeService RPCs plus a gRPC error case, against a fake backend over bufconn. go test ./... passes in ~10ms. See the PR for details, including documented KNOWN BUG behaviors for #88/#89 to address.
Activity
erikist commentedon Oct 8, 2026
🤖 Factory: picked up by dispatcher; working on branch factory/87-test-end-to-end-test-of.
test(e2e): drop low-value deadline test, dedupe known-bug comment (#87)
erikist commentedon Oct 8, 2026
🤖 Factory: opened PR #95 with an end-to-end test (
examples/gen/example/v1/e2e_test.go) coveringtools/listandtools/callfor all 5VibeServiceRPCs plus a gRPC error case, against a fake backend overbufconn.go test ./...passes in ~10ms. See the PR for details, including documentedKNOWN BUGbehaviors for #88/#89 to address.test(e2e): isolate MCP client, stop asserting known-buggy values (#87)
test(e2e): assert exact result content for SetVibeArray/SetVibeObjects (
test: end-to-end test of a generated MCP server (gRPC backend + MCP c…