A Ruby client library for the Model Context Protocol (MCP). Provides tools for connecting to and communicating with MCP servers over various transports (stdio, HTTP, SSE).
This is a Ruby MCP CLIENT library, not an MCP server. The evaluation reveals a fundamental mismatch: the repo (ruby-mcp-client) is a client-side SDK for consuming MCP servers, not a server that exposes tools to LLMs. The source code shows transport abstraction (HTTP, SSE, STDIO), tool calling infrastructure, and protocol handling, all CLIENT-side patterns. The four example tools (echo, reverse, uppercase, count_words) are minimal demos in examples/echo_server.py (a Python file, not Ruby), likely used for testing the client library. No production tools are defined in the Ruby codebase itself. The tool definitions provided appear to be reverse-engineered from examples or documentation rather than directly visible in the Ruby source. Per HARD SCORING RULE: 'If you cannot see the actual tool definition in the source (only inferred): cap that tool's overall at 50.' Since all four tools are inferred from external examples and lack evidence of explicit Ruby registration, each tool caps at 50. The library itself demonstrates sophisticated protocol handling (CalledToolDefinition tracking, HeaderMismatch retry with tool definition pinning per MCP 2026-07-28, HTTP transport with tool listing and Mcp-Param headers), but these are client-side capabilities, not server-side tool quality. Definition quality score reflects that the tools are not actually defined or registered in this codebase.
Count words in the provided text
Echo back the provided message
Reverse the provided text
Convert text to uppercase
Repository is a client library, not an MCP server. Tools are examples in external Python files, not Ruby code. No explicit tool registration visible in Ruby codebase.
Tool descriptions are extremely brief (10-20 chars). Current descriptions lack WHAT, WHEN, and any prerequisites.
Tool names lack action verbs. 'echo', 'reverse', 'uppercase', 'count_words' are noun-heavy. Rename to 'echo_text', 'reverse_text', 'convert_text_to_uppercase', 'count_words_in_text' for clarity.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 42 | 2025-11-25+ | v1 |
Parameter descriptions are minimal (e.g., 'The message to echo back', 'The text to reverse'). Example: 'The text to reverse (max 10,000 chars; supports UTF-8)' provides actionable constraints.
No output schema documented for any tool. LLMs need to know what fields to expect.' Tools must specify return type (string, object, array) and field names.
No error handling guidance. Tools have no error recovery descriptions. Per pattern:recovery-guide, error responses must tell the LLM what to do next. Example: 'If text exceeds 10,000 chars, split and call reverse on chunks.'
All parameters are required but no description explains why or what happens if omitted.