MCP Test MCP
This MCP server enables AI assistants to test and interact with other MCP servers through comprehensive testing and debugging tools.
Connection Management: Connect to MCP servers via STDIO (file paths) or HTTP/HTTPS URLs with auto-detect protocols, check connection status with detailed statistics and server information, and disconnect safely from active connections.
Tool Testing: List all available tools with complete input schemas and execute tools with custom arguments, receiving detailed results with timing metadata.
Resource Testing: List all resources with URIs, names, descriptions, and MIME types, then read both text and binary content by URI.
Prompt Testing: List all prompts with argument schemas, get rendered prompts with custom arguments, and execute prompts end-to-end with actual LLM inference supporting template variable substitution, custom LLM configuration (URL, model, API key, temperature, max tokens), and automatic JSON response parsing.
Utility Functions: Perform health checks, test connectivity with ping/pong, echo messages for basic functionality testing, and add numbers for simple calculations.
Key Use Cases: Test MCP server implementations during development, debug tool execution and resource access, validate prompt templates with real LLM responses, monitor connection health and usage statistics, and discover capabilities of unknown MCP servers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Test MCPconnect to the weather server and list its available tools"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-test-mcp
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.jsonWindows:
%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-mcpConfig file location:
Global:
~/.cursor/mcp.jsonProject:
.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.jsonGlobal: Run
MCP: Open User Configurationfrom 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-mcpOr 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 9000Options:
Flag | Short | Description | Default |
|
| Transport type: |
|
|
| Host to bind (HTTP transports only) |
|
|
| Port to bind (HTTP transports only) |
|
Using with npx:
# HTTP server via npx
npx -y mcp-test-mcp --transport streamable-http --port 8080Quick 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/argsfor npm/pip packages (e.g.,command="npx",args=["-y", "some-package"])Auth: Bearer tokens via
auth="your-token"or OAuth viaauth="oauth"Headers: Custom HTTP headers via
headersparameter
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 |
| Transport type: |
|
| Host to bind (HTTP transports only) |
|
| Port to bind (HTTP transports only) |
|
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
Testing Guide - Complete guide with LLM integration examples
License
MIT License - see LICENSE for details.
Resources
Available Tools
14 toolsaddAddA
Add two numbers together.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | First number | |
| b | Yes | Second number |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the tool to execute on the target MCP server | |
| arguments | Yes | Dictionary of arguments to pass to the tool |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for the stdio subprocess. | |
| env | No | Environment variables for the stdio subprocess. | |
| url | Yes | Server URL (http://..., https://...) or file path for stdio transport | |
| args | No | Arguments for the stdio command (e.g. ['-y', 'some-package']). | |
| auth | No | Authentication config. Bearer token string, 'oauth', {'type': 'bearer', 'token': '...'}, or {'type': 'oauth', 'scopes': [...], 'client_id': '...', 'client_secret': '...'}. Credentials are never logged or stored. | |
| command | No | Explicit stdio command to run (e.g. 'python', 'node', 'npx'). When provided, connects via StdioTransport instead of auto-detection. | |
| headers | No | Optional HTTP headers for authenticated connections. Ignored for stdio. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message to echo back |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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:
Retrieves the prompt from the connected MCP server with prompt_arguments
Optionally fills template variables in the prompt messages
Sends the prompt messages to an LLM
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
| Name | Required | Description | Default |
|---|---|---|---|
| llm_config | No | LLM configuration (url, model, api_key, etc.) | |
| prompt_name | Yes | Name of the prompt to execute | |
| fill_variables | No | Template variables to fill in prompt messages (JSON object or string) | |
| prompt_arguments | No | Arguments to pass to the MCP prompt (JSON object or string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the prompt to retrieve | |
| arguments | Yes | Dictionary of arguments to pass to the prompt |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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'
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | URI of the resource to read (e.g., 'config://settings') |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
14 tool updates
v0.5.2- Changed
add3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / a / descriptionAdded value: +"First number" - added
Input schema / properties / b / descriptionAdded value: +"Second number"
- Changed
call_tool1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
connect_to_server7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / argsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Arguments for the stdio command (e.g. ['-y', 'some-package'])." +} - added
Input schema / properties / authAdded 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." +} - added
Input schema / properties / commandAdded 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." +} - added
Input schema / properties / cwdAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Working directory for the stdio subprocess." +} - added
Input schema / properties / envAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Environment variables for the stdio subprocess." +} - added
Input schema / properties / headersAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional HTTP headers for authenticated connections. Ignored for stdio." +}
- Changed
disconnect1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
echo2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / message / descriptionAdded value: +"The message to echo back"
- Changed
execute_prompt_with_llm1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_connection_status1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_prompt1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
health_check1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_prompts1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_resources1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_tools1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
ping1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
read_resource1 field changed- added
Input schema / additionalPropertiesAdded value: +false
14 tool updates
- First observed
add - First observed
call_tool - First observed
connect_to_server - First observed
disconnect - First observed
echo - First observed
execute_prompt_with_llm - First observed
get_connection_status - First observed
get_prompt - First observed
health_check - First observed
list_prompts - First observed
list_resources - First observed
list_tools - First observed
ping - First observed
read_resource
TDQS
Scored across 14 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA standardized MCP server designed for testing integration with the Des MCP Server Testing API. It allows AI agents to interact with testing endpoints using tools implemented via the Model Context Protocol.-
- AlicenseAqualityCmaintenanceEnables 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.47 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceAn 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.1MIT
- AlicenseNot gradedqualityBmaintenanceA 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.3GNU Lesser General Public v2.1 only