Skip to main content
Glama

mcp-test-mcp

Python Version License: MIT

An MCP server that helps AI assistants test other MCP servers. It provides tools to connect to target MCP servers, discover their capabilities, execute tools, read resources, and test prompts—all through proper MCP protocol communication.

Features

  • Connection Management: Connect to any MCP server (STDIO or HTTP transport), auto-detect protocols, track connection state

  • Tool Testing: List all tools with complete input schemas, call tools with arbitrary arguments, get detailed execution results

  • Resource Testing: List all resources with metadata, read text and binary content

  • Prompt Testing: List all prompts with argument schemas, get rendered prompts with custom arguments

  • LLM Integration: Execute prompts end-to-end with actual LLM inference, supports template variables and JSON extraction

Related MCP server: MCP Workbench MCP Server

Installation

Prerequisites: Node.js 16+ and Python 3.11+

Choose your AI coding tool:

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%/Claude/claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "mcp-test-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-test-mcp"]
    }
  }
}

Or use Claude Code CLI:

claude mcp add mcp-test-mcp -- npx -y mcp-test-mcp

Config file location:

  • Global: ~/.cursor/mcp.json

  • Project: .cursor/mcp.json

Or access via: File → Preferences → Cursor Settings → MCP

Configuration:

{
  "mcpServers": {
    "mcp-test-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-test-mcp"]
    }
  }
}

Config file location: ~/.codeium/windsurf/mcp_config.json

Or access via: Windsurf Settings → Cascade → Plugins

Configuration:

{
  "mcpServers": {
    "mcp-test-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-test-mcp"]
    }
  }
}

Requires VS Code 1.99+ with chat.agent.enabled setting enabled.

Config file location:

  • Workspace: .vscode/mcp.json

  • Global: Run MCP: Open User Configuration from Command Palette

Configuration:

{
  "servers": {
    "mcpTestMcp": {
      "command": "npx",
      "args": ["-y", "mcp-test-mcp"]
    }
  }
}

Note: VS Code uses servers instead of mcpServers and recommends camelCase naming.

Config file location: ~/.codex/config.toml

Add via CLI:

codex mcp add mcp-test-mcp -- npx -y mcp-test-mcp

Or add manually to config.toml:

[mcp_servers.mcp-test-mcp]
command = "npx"
args = ["-y", "mcp-test-mcp"]

To use the execute_prompt_with_llm tool, add environment variables to your configuration:

JSON format (Claude, Cursor, Windsurf, VS Code):

{
  "mcpServers": {
    "mcp-test-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-test-mcp"],
      "env": {
        "LLM_URL": "https://your-llm-endpoint.com/v1",
        "LLM_MODEL_NAME": "your-model-name",
        "LLM_API_KEY": "your-api-key"
      }
    }
  }
}

TOML format (Codex):

[mcp_servers.mcp-test-mcp]
command = "npx"
args = ["-y", "mcp-test-mcp"]

[mcp_servers.mcp-test-mcp.env]
LLM_URL = "https://your-llm-endpoint.com/v1"
LLM_MODEL_NAME = "your-model-name"
LLM_API_KEY = "your-api-key"
# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install from PyPI
pip install mcp-test-mcp

# Or install from source
git clone https://github.com/rdwj/mcp-test-mcp
cd mcp-test-mcp
pip install -e ".[dev]"

Command Line Options

The server supports multiple transports for different deployment scenarios:

# Default: stdio transport (for Claude Desktop/Code)
mcp-test-mcp

# Explicit stdio
mcp-test-mcp --transport stdio

# HTTP transport for web deployments
mcp-test-mcp --transport streamable-http
mcp-test-mcp --transport streamable-http --host 0.0.0.0 --port 8080

# Legacy SSE transport (for backward compatibility)
mcp-test-mcp --transport sse --port 9000

Options:

Flag

Short

Description

Default

--transport

-t

Transport type: stdio, streamable-http, sse

stdio

--host

-H

Host to bind (HTTP transports only)

127.0.0.1

--port

-p

Port to bind (HTTP transports only)

8000

Using with npx:

# HTTP server via npx
npx -y mcp-test-mcp --transport streamable-http --port 8080

Quick Start

Once configured, test MCP servers through natural conversation:

  • Connect: "Connect to my MCP server at /path/to/server"

  • Connect with auth: "Connect to https://api.example.com/mcp with auth token sk-..."

  • Connect via npx: "Connect to the server using command npx with args -y @modelcontextprotocol/server-everything"

  • Discover: "What tools does it have?"

  • Test: "Call the echo tool with message 'Hello'"

  • Status: "What's the connection status?"

  • Disconnect: "Disconnect from the server"

Available Tools

Connection Management

  • connect_to_server: Connect to a target MCP server. Supports multiple transport modes and authentication:

    • Auto-detect: Pass a URL for HTTP or a file path for stdio

    • Explicit stdio: Use command/args for npm/pip packages (e.g., command="npx", args=["-y", "some-package"])

    • Auth: Bearer tokens via auth="your-token" or OAuth via auth="oauth"

    • Headers: Custom HTTP headers via headers parameter

  • disconnect: Close active connection

  • get_connection_status: Check connection state and statistics

Tool Testing

  • list_tools: Get all tools with complete schemas

  • call_tool: Execute a tool with arguments

Resource Testing

  • list_resources: Get all resources with metadata

  • read_resource: Read resource content by URI

Prompt Testing

  • list_prompts: Get all prompts with argument schemas

  • get_prompt: Get rendered prompt with arguments

  • execute_prompt_with_llm: Execute prompts with actual LLM inference

Utility

  • health_check: Verify server is running

  • ping: Test connectivity (returns "pong")

  • echo: Echo a message back

  • add: Add two numbers

Environment Variables

Transport Configuration

These environment variables configure the server transport. CLI arguments take precedence.

Variable

Description

Default

MCP_TEST_TRANSPORT

Transport type: stdio, streamable-http, sse

stdio

MCP_TEST_HOST

Host to bind (HTTP transports only)

127.0.0.1

MCP_TEST_PORT

Port to bind (HTTP transports only)

8000

Priority: CLI argument > environment variable > default

Core

  • MCP_TEST_LOG_LEVEL: Logging level (DEBUG, INFO, WARNING, ERROR). Default: INFO

  • MCP_TEST_CONNECT_TIMEOUT: Connection timeout in seconds. Default: 30.0

LLM Integration (for execute_prompt_with_llm)

  • LLM_URL: LLM API endpoint URL

  • LLM_MODEL_NAME: Model name

  • LLM_API_KEY: API key

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=mcp_test_mcp --cov-report=html

# Format and lint
black src/ tests/
ruff check src/ tests/
mypy src/

Container Deployment

For deploying mcp-test-mcp in containers (e.g., OpenShift, Kubernetes):

FROM registry.redhat.io/ubi9/python-311:latest

WORKDIR /app

# Install mcp-test-mcp
RUN pip install --no-cache-dir mcp-test-mcp

# Expose HTTP port
EXPOSE 8000

# Run with streamable-http transport
CMD ["mcp-test-mcp", "--transport", "streamable-http", "--host", "0.0.0.0", "--port", "8000"]

Or use environment variables:

# kubernetes deployment snippet
env:
  - name: MCP_TEST_TRANSPORT
    value: "streamable-http"
  - name: MCP_TEST_HOST
    value: "0.0.0.0"
  - name: MCP_TEST_PORT
    value: "8000"

Documentation

License

MIT License - see LICENSE for details.

Resources

Available Tools

14 tools
addAddA

Add two numbers together.

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesFirst number
bYesSecond number

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description clearly states the operation and implies the return value (the sum). No side effects or edge cases are mentioned, but none are expected for a pure arithmetic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-integer addition function, the description provides sufficient information for the agent to call it correctly. No additional context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are described in the schema with 'First number' and 'Second number', achieving 100% coverage. The tool description does not add constraints or additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Add' and identifies the resource/action as 'two numbers,' clearly distinguishing this from sibling tools that handle connections and resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool relative to alternatives. It only states the operation itself, leaving the agent to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

call_toolCall ToolA

Execute a tool on the connected MCP server.

Calls a tool by name with the provided arguments and returns the result along with execution timing and metadata.

Returns: Dictionary with tool execution results including: - success: True if tool executed successfully - tool_call: Object with tool_name, arguments, result, and execution metadata - metadata: Request timing and server information

Raises: Returns error dict for various failure scenarios: - not_connected: No active connection - tool_not_found: Tool doesn't exist on server - invalid_arguments: Arguments don't match tool schema - execution_error: Tool execution failed

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the tool to execute on the target MCP server
argumentsYesDictionary of arguments to pass to the tool

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well by enumerating success fields and common failure modes such as not_connected, tool_not_found, invalid_arguments, and execution_error. It does not mention potential side effects, but the error list gives a solid behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized with clear Returns and Raises sections, making it easy to scan. It is slightly verbose with repeated metadata wording, but not enough to hurt usability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the description covers invocation, success output, and failure modes, which is sufficient for an agent to call it correctly. It does not specify output types in detail, but the listed fields are adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover both parameters at 100%, so the description adds little beyond what is already in the schema. The parameter names and descriptions are clear, but no extra semantic detail or usage nuance is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it executes a tool on the connected MCP server, distinguishing it from sibling tools like list_tools and list_resources. The verb 'execute' and resource 'tool' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly indicates when to use it—when you need to invoke a tool by name with arguments—but does not explicitly contrast it with alternatives like list_tools for discovery or get_prompt for prompts. The error cases hint at prerequisites but no direct when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_to_serverConnect To ServerA

Connect to an MCP server for testing.

Establishes a connection to a target MCP server using the appropriate transport protocol (stdio for file paths, streamable-http for URLs, or explicit stdio via command parameter). Only one connection can be active at a time.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the stdio subprocess.
envNoEnvironment variables for the stdio subprocess.
urlYesServer URL (http://..., https://...) or file path for stdio transport
argsNoArguments for the stdio command (e.g. ['-y', 'some-package']).
authNoAuthentication config. Bearer token string, 'oauth', {'type': 'bearer', 'token': '...'}, or {'type': 'oauth', 'scopes': [...], 'client_id': '...', 'client_secret': '...'}. Credentials are never logged or stored.
commandNoExplicit stdio command to run (e.g. 'python', 'node', 'npx'). When provided, connects via StdioTransport instead of auto-detection.
headersNoOptional HTTP headers for authenticated connections. Ignored for stdio.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It discloses the transport selection behavior and the single-connection constraint, but does not mention what happens if a connection is already active (error, auto-disconnect, etc.) or failure modes. Credentials handling is documented in the schema, not the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three focused sentences with no wasted words. It front-loads the purpose and then provides essential transport logic and constraint information. It is well-structured and easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters and an output schema, so return values are covered. The description covers the core connection behavior and transport selection, but lacks details on edge cases like existing connections or authentication requirements. These are partially addressed in the schema, but the description could be more complete on behavioral nuances.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds some value by explaining how the url and command parameters determine the transport protocol, which ties these parameters together. However, most parameter details are already thoroughly described in the schema, so the description's additional contribution is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool connects to an MCP server for testing, with a specific verb and resource. It distinguishes itself from sibling tools like disconnect and get_connection_status by focusing on establishing a connection, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains transport selection logic (stdio for file paths, streamable-http for URLs, explicit stdio via command) and notes that only one connection can be active at a time, implying the need to disconnect before reconnecting. However, it does not explicitly name alternatives or conditions for when not to use this tool, though the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disconnectDisconnectA

Close the current MCP server connection.

Safely disconnects from the active MCP server and clears all connection state and statistics. This method is safe to call even if no connection exists.

Returns: Dictionary with disconnection details including: - success: Always True - message: Human-readable status message - was_connected: Whether a connection existed before disconnect - metadata: Request timing information and previous connection info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining behavior. It discloses that it disconnects, clears state and statistics, is safe when no connection exists, and returns a result dictionary. This is transparent, though it does not mention potential side effects beyond connection state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and uses clear structure, including a return-value summary. The first two sentences are slightly redundant ('Close...' vs. 'Safely disconnects...'), but overall the description is well organized and not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, an output schema, and no annotations, the description is reasonably complete: it explains what the tool does, safety behavior, and return content. It could be slightly stronger by explicitly relating to connect_to_server or get_connection_status, but the context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is complete, so there is no parameter information needing explanation. The baseline for a zero-parameter tool is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool closes/disconnects the current MCP server connection and clears connection state and statistics. This distinguishes it from sibling tools like connect_to_server and get_connection_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides the useful note that it is safe to call even when no connection exists, implying idempotent usage. However, it does not explicitly compare with sibling tools or state when to prefer this over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

echoEchoA

Echo back a message.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe message to echo back

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of explaining behavior. 'Echo back a message' clearly implies a read-only operation that returns the input unchanged. It is transparent enough for a trivial tool, though it does not explicitly state that no side effects occur.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words. It is perfectly structured for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description is complete. It does not need to explain return values, and there are no complex behaviors or edge cases that require elaboration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the parameter 'message' with a matching description. The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function (echo back a message) with a specific verb and resource. It is distinct from sibling tools like 'ping' or 'add', leaving no ambiguity about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, nor any conditions or exclusions. While the simple nature of the tool makes it obvious, the lack of any contextual usage instructions keeps this at a medium score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_prompt_with_llmExecute Prompt With LlmA

Execute a prompt with an LLM and return the response.

This tool performs the complete workflow:

  1. Retrieves the prompt from the connected MCP server with prompt_arguments

  2. Optionally fills template variables in the prompt messages

  3. Sends the prompt messages to an LLM

  4. Returns the LLM's response along with metadata

Supports two prompt patterns:

  • Standard MCP prompts: Pass arguments via prompt_arguments, server handles substitution

  • Template variables: Use fill_variables to replace {variable} placeholders in messages

ParametersJSON Schema
NameRequiredDescriptionDefault
llm_configNoLLM configuration (url, model, api_key, etc.)
prompt_nameYesName of the prompt to execute
fill_variablesNoTemplate variables to fill in prompt messages (JSON object or string)
prompt_argumentsNoArguments to pass to the MCP prompt (JSON object or string)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not mention potential side effects such as external LLM calls, network usage, cost, or failure modes. This leaves important behavioral aspects undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise and well-structured with a short summary and a numbered workflow. It could be slightly tighter but remains focused and easy to follow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives enough context to understand the basic execution flow and return type, but lacks information about error handling, prerequisites, or side effects. It is adequate for a tool of moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters with descriptions. The tool description adds context about the two prompt patterns but does not significantly extend beyond the schema's own parameter explanations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Execute') and object ('a prompt with an LLM'), and distinguishes it from sibling tools like get_prompt and call_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the overall workflow and the two supported prompt patterns, giving useful context. It does not explicitly contrast with sibling tools, but the execution-focused wording makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_connection_statusGet Connection StatusA

Check the current MCP server connection state.

Returns detailed information about the active connection including server information, transport type, connection duration, and usage statistics.

Returns: Dictionary with connection status including: - success: Always True - connected: Boolean indicating if currently connected - connection: Full ConnectionState if connected, None otherwise - message: Human-readable status message - metadata: Request timing and connection duration info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It thoroughly documents the return structure (success, connected, connection, message, metadata), but does not mention potential error behavior or connectivity caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct: two sentences plus a bulleted return list. No redundant information or fluff; all content directly supports the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description includes a detailed return format, which is helpful. Although an output schema exists (per context signals), the description still adds useful context about the fields. For a simple status check, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the schema (empty properties) is fully covered. The description correctly says nothing about parameters; there is nothing to add beyond the schema, making this a perfect alignment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states a specific verb and resource: 'Check the current MCP server connection state.' This distinguishes it from other tools like health_check or ping by focusing on connection state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when connection status is needed, but does not explicitly differentiate from similar siblings like health_check, ping, or connect_to_server. No alternative guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_promptGet PromptA

Get a rendered prompt from the connected MCP server.

Retrieves a prompt by name with the provided arguments and returns the rendered prompt messages.

Returns: Dictionary with rendered prompt including: - success: True if prompt was retrieved successfully - prompt: Object with name, description, and rendered messages - metadata: Request timing and server information

Raises: Returns error dict for various failure scenarios: - not_connected: No active connection - prompt_not_found: Prompt doesn't exist on server - invalid_arguments: Arguments don't match prompt schema - execution_error: Prompt retrieval failed

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the prompt to retrieve
argumentsYesDictionary of arguments to pass to the prompt

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return structure (success, prompt, metadata) and enumerates error scenarios (not_connected, prompt_not_found, invalid_arguments, execution_error). It does not mention side effects (likely none as it's a getter) but covers the key behavioral aspects an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with a clear opening statement, followed by Returns and Raises sections. It is front-loaded with the core purpose. While somewhat lengthy, the information is organized and each section serves a purpose, so it earns its place without being wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers return format and error cases comprehensively. It mentions the need for a connection and lists specific error keys. For a simple retrieval tool with a simple input schema, this is sufficient. It does not elaborate on argument format beyond 'dictionary', but that is acceptable given the flexibility implied by additionalProperties. The presence of an output schema (implied by the return description) reduces the burden on the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both 'name' and 'arguments' are documented in the schema. The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate. It does not explain the structure or expected values of the arguments dictionary beyond the schema's 'additionalProperties: true'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action: 'Get a rendered prompt from the connected MCP server' and 'Retrieves a prompt by name with the provided arguments and returns the rendered prompt messages.' This distinguishes it from siblings like list_prompts (which lists prompts) and call_tool (which calls tools) by focusing on rendering a specific prompt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (requires a connection, uses prompt name and arguments) but does not explicitly contrast it with alternatives such as execute_prompt_with_llm or list_prompts. It doesn't say when to use this tool versus others, nor does it provide exclusions. The context is clear but guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkHealth CheckB

Health check endpoint that verifies the server is running.

Returns: Dictionary with status and server information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions it returns a dictionary with status and server information, but does not state whether the operation is side-effect free, what error behavior occurs if the server is down, or any rate limits or authentication needs. For a health check, these omissions are significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences with no filler. The core purpose is front-loaded, and the return type is mentioned briefly. Every word earns its place, and the structure is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters) and the presence of an output schema, the description is mostly complete. It states what the tool does and what it returns. However, it lacks any mention of edge cases or whether it is a read-only operation, which would be useful since annotations are absent. Still, for a trivial health check, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters and schema description coverage is 100%, so the baseline is 4. There is no parameter information to add, and the description correctly stays silent. The description does not need to compensate for any missing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear purpose: 'Health check endpoint that verifies the server is running.' It is not a tautology and conveys the specific function. However, it does not explicitly differentiate from similar siblings like ping or get_connection_status, so it misses a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention that ping might be a lighter check or that get_connection_status offers more detail. There is no 'when not to use' or explicit routing to siblings, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_promptsList PromptsA

List all prompts available on the connected MCP server.

Retrieves comprehensive information about all prompts exposed by the target server, including names, descriptions, and complete argument schemas to enable accurate prompt invocation.

Returns: Dictionary with prompt listing including: - success: True on successful retrieval - prompts: List of prompt objects with name, description, and arguments schema - metadata: Total count, server info, timing information

Raises: Returns error dict if not connected or retrieval fails

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden. It discloses the return shape (success, prompts, metadata) and error behavior on connection failure or retrieval failure. It does not explicitly state that the operation is read-only, though the 'list' and 'retrieves' wording implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with separate purpose, returns, and raises sections. It is slightly redundant, repeating 'all prompts' and 'server' across sentences, but overall it is focused and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a simple, parameterless listing tool: it specifies what is returned, the included fields, and error behavior. Since an output schema exists, detailed return-value documentation is not required, and the prose sufficiently covers the tool's purpose and failure modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description adds no parameter-level detail because none is needed; it instead clarifies that the tool returns all prompts without filtering. This is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all prompts') and the target resource ('available on the connected MCP server'). It also distinguishes the tool from siblings by emphasizing enumeration of all prompts with names and argument schemas, rather than fetching a single prompt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear that this tool is for listing all prompts and gathering invocation metadata, which is useful context. However, it does not explicitly contrast with related sibling tools like get_prompt or list_tools, so guidance on when *not* to use it is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_resourcesList ResourcesA

List all resources available on the connected MCP server.

Retrieves comprehensive information about all resources exposed by the target server, including URIs, names, descriptions, and MIME types to enable accurate resource access.

Returns: Dictionary with resource listing including: - success: True on successful retrieval - resources: List of resource objects with uri, name, description, mimeType - metadata: Total count, server info, timing information

Raises: Returns error dict if not connected or retrieval fails

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return format (success, resources, metadata), includes error behavior ('RETURNS error dict if not connected or retrieval fails'), and implies a read-only operation. This is transparent enough for a listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly concise and well-structured with sections for action, return, and errors. However, there is minor redundancy between 'List all resources' and 'Retrieves comprehensive information about all resources...', which slightly detracts from precision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential context: what it does, what it returns (including a success flag and metadata), and error conditions. It lacks mention of pagination or limits, but for a resource-listing operation on an MCP server, this is reasonably complete given there is no formal output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters), so schema description coverage is 100% vacuously. The baseline of 3 applies; the description adds no parameter-specific details because there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('all resources available on the connected MCP server'), and distinguishes it from sibling tools like list_tools and list_prompts by focusing solely on resources. It also details what information is returned (URIs, names, descriptions, MIME types).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly explains what the tool does but does not explicitly state when to use it over alternatives (e.g., list_tools, read_resource). It implies its purpose but lacks direct comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_toolsList ToolsA

List all tools available on the connected MCP server.

Retrieves comprehensive information about all tools exposed by the target server, including full input schemas to enable accurate tool invocation.

Returns: Dictionary with tool listing including: - success: True on successful retrieval - tools: List of tool objects with name, description, and full input_schema - metadata: Total count, server info, timing information

Raises: Returns error dict if not connected or retrieval fails

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral transparency. It clearly states that the return value includes success status, the list of tools, metadata, and it explicitly mentions an error dict if not connected or if retrieval fails. This gives a good picture of expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, stating the core purpose first, then the return information and error behavior. It contains no unnecessary filler or redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides everything an agent needs to understand what the tool does, what it returns, and how it behaves on failure. Given that there are no parameters and no annotations, this is complete for practical usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, and the input schema is an empty object with no required fields. There are no parameter semantics to explain, so the description fully satisfies this dimension.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to list all tools available on the connected MCP server. It uses a specific verb ('list'), a clear resource ('tools'), and a scope ('connected server'), which distinguishes it from sibling tools like call_tool, list_resources, and list_prompts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that the tool returns all available tools with input schemas to enable accurate invocation, making its use case clear. It does not explicitly contrast with alternative tools, but the 'all tools available' scope is sufficient to guide an agent when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingPingA

Simple ping tool that responds with 'pong'.

Useful for testing basic connectivity and server responsiveness.

Returns: The string 'pong'

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the behavioral burden. It fully discloses the output ('pong') and implies a read-only, non-destructive nature. It does not mention error handling or latency, but for such a simple tool the behavior is adequately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: a one-sentence purpose, a usage hint, and the return value. The key information is front-loaded, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and a simple string output, the description is complete. It states what the tool does and what it returns. An agent has all necessary information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema coverage is vacuously 100%. The baseline for zero parameters is 4, and the description adds no unnecessary detail. Nothing further is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'responds with pong'. It identifies the tool as a connectivity test, which distinguishes it from siblings like echo or health_check. The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states that it is useful for testing connectivity and server responsiveness, which gives context. However, it does not explicitly contrast with alternatives like health_check or echo, nor does it say when not to use it. The usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_resourceRead ResourceA

Read a specific resource from the connected MCP server.

Reads a resource by URI and returns its content along with metadata.

Returns: Dictionary with resource content including: - success: True if resource was read successfully - resource: Object with uri, mimeType, and content - metadata: Content size and request timing

Raises: Returns error dict for various failure scenarios: - not_connected: No active connection - resource_not_found: Resource doesn't exist on server - execution_error: Resource read failed

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the resource to read (e.g., 'config://settings')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses return structure (success, resource, metadata) and errata (not_connected, resource_not_found, execution_error), giving the agent a realistic model of behavior. It does not mention permissions or side effects, but for a read tool the returned behavior and error cases are well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with a short lead sentence, a Returns section, and an error section, making it scannable. There is some redundancy with the presence of an output schema, but the text adds plain-language meaning for the errors and the overall structure earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema, the description covers input semantics, return structure, and common failure modes, including the requirement of an active connection. It omits list_resources for discovering URIs, but the current description is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, uri, already has full schema coverage with a type, requirement, and example. The description adds no new semantics beyond restating that the URI identifies the resource, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Read a specific resource... by URI') and clearly distinguishes it from siblings like list_resources, which lists resources, and call_tool, which invokes tools. The intent is immediately unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames the tool as reading a resource from the connected MCP server by URI, so an agent knows when to use it. It does not explicitly say 'use list_resources to discover URIs' or explicitly exclude alternatives, so it earns strong clear-context score rather than a full when/whynot/alternatives score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.5.2
    • Changedadd3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / a / description
        Added value: +"First number"
      • addedInput schema / properties / b / description
        Added value: +"Second number"
    • Changedcall_tool1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedconnect_to_server7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / args
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Arguments for the stdio command (e.g. ['-y', 'some-package'])."
        +}
      • addedInput schema / properties / auth
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Authentication config. Bearer token string, 'oauth', {'type': 'bearer', 'token': '...'}, or {'type': 'oauth', 'scopes': [...], 'client_id': '...', 'client_secret': '...'}. Credentials are never logged or stored."
        +}
      • addedInput schema / properties / command
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Explicit stdio command to run (e.g. 'python', 'node', 'npx'). When provided, connects via StdioTransport instead of auto-detection."
        +}
      • addedInput schema / properties / cwd
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Working directory for the stdio subprocess."
        +}
      • addedInput schema / properties / env
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Environment variables for the stdio subprocess."
        +}
      • addedInput schema / properties / headers
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional HTTP headers for authenticated connections. Ignored for stdio."
        +}
    • Changeddisconnect1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedecho2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / message / description
        Added value: +"The message to echo back"
    • Changedexecute_prompt_with_llm1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_connection_status1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget_prompt1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhealth_check1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_prompts1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_resources1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlist_tools1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedping1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedread_resource1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  2. 14 tool updates
    • First observedadd
    • First observedcall_tool
    • First observedconnect_to_server
    • First observeddisconnect
    • First observedecho
    • First observedexecute_prompt_with_llm
    • First observedget_connection_status
    • First observedget_prompt
    • First observedhealth_check
    • First observedlist_prompts
    • First observedlist_resources
    • First observedlist_tools
    • First observedping
    • First observedread_resource

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: connection lifecycle (connect, disconnect, status), introspection (list tools/resources/prompts), execution (call_tool, read_resource, get_prompt), and a few trivial test utilities (ping, echo, add). No two tools appear to do the same thing, and the descriptions reinforce their uniqueness.

Naming Consistency3/5

The majority of tools follow a verb_noun pattern (e.g., list_tools, read_resource, connect_to_server), but there are exceptions like 'disconnect', 'ping', 'echo', and 'add' which are bare verbs or single nouns. This mix is noticeable, though the exceptions are trivial and arguably acceptable for test utilities.

Tool Count4/5

At 14 tools, the server provides a comprehensive but focused surface for testing MCP interactions. The count includes both essential operations (connect, list, call, read) and a few trivial tools (ping, echo, add) that serve diagnostic purposes. It is not excessive for the stated goal of an MCP test server.

Completeness4/5

The tool set covers the full lifecycle of interacting with an MCP server: connection management, introspection of all primitives (tools, resources, prompts), execution of each type, and a high-level workflow (execute_prompt_with_llm). Missing operations like resource update/delete are not typically required for a test harness, so the surface is sufficiently complete.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to programmatically inspect, test, and validate other MCP servers by exposing MCP Workbench capabilities as structured tools. It supports automated test spec generation, execution, and detailed failure analysis to ensure server reliability.
    4
    7 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that generates, runs, and triages tests by introspecting Python modules or web pages, using structured LLM outputs for scenario generation and failure analysis.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A universal AI-powered testing server built on the Model Context Protocol (MCP). Allows AI agents to inspect, execute, test, monitor, debug, and report on software projects.
    3
    GNU Lesser General Public v2.1 only