Update the tests README for Ruby server coverage
The README still said the Ruby weather server was uncovered and described the resultType gap as unfixable from an example. Both stopped being true when the server test landed. Also move the no-API-key comment below the Ruby server test. It describes the client tests, and sat where it read as describing the server one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
d9005ebe03
commit
cfda589119
2 changed files with 5 additions and 7 deletions
|
|
@ -6,13 +6,11 @@ This directory contains smoke tests for the MCP quickstart examples. These tests
|
|||
|
||||
The smoke tests verify:
|
||||
|
||||
- **Servers**: Each weather server (Python, TypeScript, Rust, Go) can start, respond to MCP protocol requests, and honour the output schemas it advertises
|
||||
- **Servers**: Each weather server (Python, TypeScript, Rust, Go, Ruby) can start, respond to MCP protocol requests, and honour the output schemas it advertises
|
||||
- **Clients**: The Python, TypeScript and Ruby MCP clients can connect to a mock server and list tools
|
||||
|
||||
The Go and Rust clients are not covered here: on `main` both abort when no `.env` file is present, so they cannot be driven without credentials. Making them start credential-free is a change in their own directories, so their coverage lands with those changes rather than here.
|
||||
|
||||
The Ruby **weather server** is not covered, for an upstream reason rather than a local one. The `mcp` gem negotiates `2026-07-28`, but its server never emits the `resultType` field that revision makes mandatory, so the test client rejects its responses — including `tools/list`. That is a fix for the gem, not something an example can work around. The Ruby **client** is covered: there it is the gem's client code that runs, and the server it is pointed at is the mock.
|
||||
|
||||
## Structured content
|
||||
|
||||
Listing tools is not enough to catch a broken structured result, so each server test also **calls** every tool that declares an `outputSchema` and checks the answer:
|
||||
|
|
|
|||
|
|
@ -84,10 +84,6 @@ test_weather_server_go() {
|
|||
node "${TEST_CLIENT}" "${server_bin}"
|
||||
}
|
||||
|
||||
# The client tests drive the no-API-key path, where each client prints a notice
|
||||
# and exits. Empty rather than unset: dotenv skips a name already present in
|
||||
# ENV, so a key in the environment or a local .env would start the chat loop.
|
||||
|
||||
# Test: Ruby weather server
|
||||
test_weather_server_ruby() {
|
||||
check_dependency ruby || return 1
|
||||
|
|
@ -97,6 +93,10 @@ test_weather_server_ruby() {
|
|||
(cd "${server_dir}" && node "${TEST_CLIENT}" bundle exec ruby weather.rb)
|
||||
}
|
||||
|
||||
# The client tests drive the no-API-key path, where each client prints a notice
|
||||
# and exits. Empty rather than unset: dotenv skips a name already present in
|
||||
# ENV, so a key in the environment or a local .env would start the chat loop.
|
||||
|
||||
# Test: Python MCP client
|
||||
test_mcp_client_python() {
|
||||
check_dependency uv || return 1
|
||||
|
|
|
|||
Loading…
Reference in a new issue