refactor(goal): rmcp nori-client MCP server#492
Merged
Conversation
…goal -> nori-client Replace the hand-rolled HTTP/1.1 server (thread_goal_http_mcp.rs, ~213 LoC) and hand-dispatched JSON-RPC (thread_goal_mcp.rs) with rmcp's spec-compliant StreamableHttpService and typed #[tool] handlers in nori_client_mcp.rs, served over a loopback axum listener. Rename the advertised MCP server from `nori-goal` to `nori-client` — Nori's general harness-side channel to the agent, not a goal-only surface.
Update the acp Noridoc and the goal architecture-diagram note for R1: the loopback goal MCP server is now rmcp's StreamableHttpService with typed #[tool] handlers (nori_client_mcp.rs), and the advertised server is renamed nori-goal -> nori-client to reflect that it is Nori's general harness-side channel to the agent, with the goal tools as its first tenants.
- Add real_mcp_client_round_trips_over_http: a real rmcp StreamableHttp client connects to the loopback nori-client server, verifies the initialize handshake flips the `connected` gate, lists tools, and round-trips create_goal/get_goal. Enables rmcp client features on the acp dev-dependency only (no new crate). - Rename GoalRuntime.http_server -> mcp_server for clarity. - Fix stale mock-acp-agent/docs.md reference to the deleted goal MCP modules.
71354db to
428b5a5
Compare
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.
Summary
🤖 Generated with Nori
Rebased onto
mainafter #491 merged. Implements review item R1: replace the goal feature's hand-rolled networking with the workspace's rmcp SDK, and rename the loopback MCP servernori-goal->nori-client.thread_goal_http_mcp.rsand the hand-dispatched JSON-RPC inthread_goal_mcp.rs.nori_client_mcp.rshostsget_goal/create_goal/update_goalas typed#[tool]handlers on an rmcpStreamableHttpService(stateless), served over a loopbackaxumlistener. Behavior preserved: same tool semantics, sameThreadGoalUpdatedevents, same connected-gate flip oninitializefor hidden-continuation chaining.nori-goal->nori-client: the advertised server is Nori's general harness-side channel to the agent; the goal tools are its first tenants. Renamed across code, tests, and docs.acp/Cargo.tomlgainsaxumand enables rmcp server/macros/schemars/streamable HTTP server features; tests enable the rmcp streamable HTTP client feature.Test Plan
cargo test -p nori-acp(passed: lib tests, integration tests, and doc tests; includesreal_mcp_client_round_trips_over_httpand over-the-wire continuation-gate coverage)cargo build --bin noricargo test -p tui-pty-e2ejust fmtenv RUSTC_WRAPPER= just fix -p nori-acp(sccache was blocked in this environment; clearingRUSTC_WRAPPERlet clippy run cleanly)elizacpin isolated tmux; verifiedagent: elizacp, prompt render, input submission, and prompt return.Share Nori with your team: https://www.npmjs.com/package/nori-skillsets