Skip to main content
Glama

MCP Test Server

A comprehensive Model Context Protocol (MCP) server designed specifically for testing MCP scanners and validating MCP implementations. This server provides a rich set of tools, resources, and prompts to exercise various aspects of the MCP specification.

πŸ” Scanner Compatible: This repository is fully configured to be detected by the APIsec MCP Audit Scanner.

⚑ Quick Start: Want to test scanner detection immediately? See QUICK_START.md

Scanner Detection Documentation

Features

πŸ› οΈ Tools

The server exposes multiple tools with varying complexity levels:

  • echo - Basic string echo for testing simple parameter handling

  • add_numbers - Numeric operations testing

  • format_json - JSON object handling and formatting

  • list_operations - Array/list manipulation (sort, reverse, count, join)

  • complex_schema - Nested object schemas with various types

  • timestamp - Tools with optional parameters only

πŸ“¦ Resources

Multiple resource types for testing resource discovery and reading:

  • static-text - Plain text resource

  • json-data - Structured JSON data

  • markdown-doc - Formatted markdown documentation

  • config - Configuration file example

πŸ’¬ Prompts

Sample prompts to test prompt capabilities:

  • test-prompt - Basic prompt with required argument

  • debug-prompt - Multi-argument prompt with optional parameters

Installation

From Source

# Clone the repository git clone <repository-url> cd mcp-test # Install the package pip install .

Development Installation

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

Usage

Running the Server

Command Line

After installation, run the server directly:

mcp-test-server

Python Module

Alternatively, run as a Python module:

python server.py

Testing with MCP Client

The server uses stdio transport, so you can test it with any MCP-compatible client:

import asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def test_mcp_server(): server_params = StdioServerParameters( command="mcp-test-server", args=[], ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # List available tools tools = await session.list_tools() print(f"Available tools: {[t.name for t in tools.tools]}") # Call a tool result = await session.call_tool("echo", {"message": "Hello MCP!"}) print(f"Result: {result}") if __name__ == "__main__": asyncio.run(test_mcp_server())

Configuration for MCP Clients

Add to your MCP client configuration (e.g., Claude Desktop config):

{ "mcpServers": { "mcp-test": { "command": "mcp-test-server" } } }

Or with explicit Python path:

{ "mcpServers": { "mcp-test": { "command": "python", "args": ["-m", "server"] } } }

Testing MCP Scanners

This server is ideal for testing MCP scanner tools because it provides:

  1. Diverse Tool Schemas - From simple strings to complex nested objects

  2. Multiple Resource Types - Different MIME types and content structures

  3. Edge Cases - Tools with no required parameters, optional fields, enums

  4. Standard Compliance - Follows MCP specification strictly

  5. Scanner Detection - Multiple configuration files for detection testing

Scanner Detection

This repository is configured to be detected by MCP scanner tools like the APIsec MCP Audit Scanner.

Detection files included:

  • mcp.json - Claude Desktop style configuration

  • mcp.yaml - YAML format configuration

  • .mcp/config.json - Hidden directory config

  • package.json - npm dependencies with @modelcontextprotocol/sdk

  • requirements.txt - Python dependencies with modelcontextprotocol

πŸ“– See for detailed scanner testing instructions.

Scanner Test Checklist

  • Discovers all 6 tools

  • Parses complex nested schemas correctly

  • Identifies all 4 resources with correct URIs

  • Handles tools with optional-only parameters

  • Recognizes prompt capabilities

  • Correctly interprets enum constraints

  • Handles array and object types

Project Structure

mcp-test/ β”œβ”€β”€ server.py # Main MCP server implementation β”œβ”€β”€ pyproject.toml # Package configuration β”œβ”€β”€ package.json # npm metadata (for scanner detection) β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ README.md # This file β”œβ”€β”€ SCANNER_GUIDE.md # Scanner detection guide β”œβ”€β”€ .gitignore # Git ignore rules β”œβ”€β”€ LICENSE # MIT License β”œβ”€β”€ mcp.json # MCP configuration (Claude Desktop style) β”œβ”€β”€ mcp.yaml # MCP configuration (YAML format) β”œβ”€β”€ mcp-config.json # Example client configuration β”œβ”€β”€ .mcp/ # MCP metadata directory β”‚ β”œβ”€β”€ config.json # Scanner-detectable config β”‚ └── mcp.json # MCP metadata β”œβ”€β”€ examples/ # Example usage scripts β”‚ β”œβ”€β”€ README.md β”‚ β”œβ”€β”€ test_client.py β”‚ └── scanner_test.py └── tests/ # Unit tests β”œβ”€β”€ __init__.py └── test_server.py

Requirements

  • Python 3.10 or higher

  • mcp >= 0.9.0

Development

Running Tests

pytest tests/

Code Style

This project follows PEP 8 guidelines. Format code with:

black server.py

API Reference

Tools

echo

  • Input: message (string, required)

  • Output: Echoes the input message

  • Purpose: Test basic string parameter handling

add_numbers

  • Input: a (number), b (number)

  • Output: Sum of the two numbers

  • Purpose: Test numeric parameter handling

format_json

  • Input: data (object), indent (number, default: 2)

  • Output: Formatted JSON string

  • Purpose: Test object parameter handling

list_operations

  • Input: items (array), operation (enum), separator (string, optional)

  • Output: Result of list operation

  • Purpose: Test array handling and enum constraints

complex_schema

  • Input: Nested object with user info and options

  • Output: Processed data structure

  • Purpose: Test complex nested schema parsing

timestamp

  • Input: format (enum, optional)

  • Output: Current timestamp in specified format

  • Purpose: Test tools with all-optional parameters

Resources

All resources use URIs in the format mcp://test/{resource-name}:

  • mcp://test/static-text - Plain text content

  • mcp://test/json-data - Structured JSON

  • mcp://test/markdown-doc - Markdown documentation

  • mcp://test/config - Configuration data

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT License - see LICENSE file for details

Support

For issues, questions, or contributions, please open an issue on the repository.

Changelog

v0.1.0 (Initial Release)

  • Basic MCP server implementation

  • 6 diverse tools for testing

  • 4 resource types

  • 2 sample prompts

  • Complete documentation


Note: This is a testing server. Do not use in production environments.

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Anika536/mcp-test'

If you have feedback or need assistance with the MCP directory API, please join our Discord server