-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Test against fastmcp #6666
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test against fastmcp #6666
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR updates the MCP replay-based integration test suite to exercise compatibility against a FastMCP server instead of the previous goosed -- mcp developer replay.
Changes:
- Replaced the
goosed -- mcp developerreplay test case with a FastMCP-based replay (uv run --with fastmcp==2.14.4 ...). - Added a minimal FastMCP Python test server (
dividetool) plus new replay and expected results fixtures. - Updated
Cargo.lockto reflect the current workspace version (1.20.0) forgoose-acp.
Reviewed changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| crates/goose/tests/mcp_integration_test.rs | Swaps the replayed MCP test case from goosed to FastMCP and updates tool calls accordingly. |
| crates/goose/tests/fastmcp_test_server.py | Adds a small FastMCP server used when recording the replay. |
| crates/goose/tests/mcp_replays/uvrun--withfastmcp==2.14.4fastmcpruntests_fastmcp_test_server.py | Adds the recorded stdio replay log for the FastMCP server. |
| crates/goose/tests/mcp_replays/uvrun--withfastmcp==2.14.4fastmcpruntests_fastmcp_test_server.py.results.json | Adds expected tool-call results for the FastMCP replay. |
| crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper | Removes the prior goosed developer replay log. |
| crates/goose/tests/mcp_replays/cargorun--quiet-pgoose-server--bingoosed--mcpdeveloper.results.json | Removes the prior expected results for the goosed developer replay. |
| Cargo.lock | Updates lockfile entries to match workspace versioning. |
| vec!["uv", "run", "--with", "fastmcp==2.14.4", "fastmcp", "run", "tests/fastmcp_test_server.py"], | ||
| vec![ | ||
| CallToolRequestParam { name: "text_editor".into(), arguments: Some(object!({ | ||
| "command": "view", | ||
| "path": "/tmp/goose_test/goose.txt" | ||
| }))}, | ||
| CallToolRequestParam { name: "text_editor".into(), arguments: Some(object!({ | ||
| "command": "str_replace", | ||
| "path": "/tmp/goose_test/goose.txt", | ||
| "old_str": "# goose", | ||
| "new_str": "# goose (modified by test)" | ||
| }))}, | ||
| // Test shell command to verify file was modified | ||
| CallToolRequestParam { name: "shell".into(), arguments: Some(object!({ | ||
| "command": "cat /tmp/goose_test/goose.txt" | ||
| })) }, | ||
| // Test text_editor tool to restore original content | ||
| CallToolRequestParam { name: "text_editor".into(), arguments: Some(object!({ | ||
| "command": "str_replace", | ||
| "path": "/tmp/goose_test/goose.txt", | ||
| "old_str": "# goose (modified by test)", | ||
| "new_str": "# goose" | ||
| }))}, | ||
| CallToolRequestParam { name: "list_windows".into(), arguments: Some(object!({})) }, | ||
| CallToolRequestParam { name: "divide".into(), arguments: Some(object!({ | ||
| "dividend": 10, | ||
| "divisor": 2 | ||
| })) } |
Copilot
AI
Jan 23, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The FastMCP test uses a relative script path ("tests/fastmcp_test_server.py"), but extensions are launched with the test process current_dir (often the workspace root or ./crates in CI), so recording replays will fail to find the script; use an absolute path derived from env!("CARGO_MANIFEST_DIR") (e.g., via concat!) so it works regardless of where cargo test is run from.
| @@ -0,0 +1,29 @@ | |||
| STDIN: {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{"sampling":{},"elicitation":{}},"clientInfo":{"name":"goose","version":"0.0.0"}}} | |||
Copilot
AI
Jan 23, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers (in Python 3).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 15 out of 15 changed files in this pull request and generated no new comments.
* origin/main: fix: dispatch ADD_ACTIVE_SESSION event before navigating from "View All" (#6679) Speed up Databricks provider init by removing fetch of supported models (#6616) fix: correct typos in documentation and Justfile (#6686) docs: frameDomains and baseUriDomains for mcp apps (#6684) docs: add Remotion video creation tutorial (#6675) docs: export recipe and copy yaml (#6680) Test against fastmcp (#6666) docs: mid-session changes (#6672) Fix MCP elicitation deadlock and improve UX (#6650) chore: upgrade to rmcp 0.14.0 (#6674) [docs] add MCP-UI to MCP Apps blog (#6664) ACP get working dir from args.cwd (#6653) Optimise load config in UI (#6662) # Conflicts: # ui/desktop/src/components/Layout/AppLayout.tsx
…o dkatz/canonical-context * 'dkatz/canonical-provider' of github.com:block/goose: (27 commits) docs: add Remotion video creation tutorial (#6675) docs: export recipe and copy yaml (#6680) Test against fastmcp (#6666) docs: mid-session changes (#6672) Fix MCP elicitation deadlock and improve UX (#6650) chore: upgrade to rmcp 0.14.0 (#6674) [docs] add MCP-UI to MCP Apps blog (#6664) ACP get working dir from args.cwd (#6653) Optimise load config in UI (#6662) Fix GCP Vertex AI global endpoint support for Gemini 3 models (#6187) fix: macOS keychain infinite prompt loop (#6620) chore: reduce duplicate or unused cargo deps (#6630) feat: codex subscription support (#6600) smoke test allow pass for flaky providers (#6638) feat: Add built-in skill for goose documentation reference (#6534) Native images (#6619) docs: ml-based prompt injection detection (#6627) Strip the audience for compacting (#6646) chore(release): release version 1.21.0 (minor) (#6634) add collapsable chat nav (#6649) ...
I also removed the developer extension test from here because we've switched transport types to run that in-process