Model Context Protocol server for TestIO Customer API integration
Project description
TestIO MCP Server
AI-first Model Context Protocol server for TestIO Customer API
Query TestIO test status, bugs, and activity metrics through AI tools like Claude and Cursorโno UI required.
โ ๏ธ Disclaimer: This software is provided "AS IS" with no warranty or support obligations. See License & Disclaimer for details.
What Is This?
TestIO MCP Server is a Model Context Protocol (MCP) server that provides read-only access to the TestIO Customer API. It enables non-developer stakeholders (CSMs, PMs, QA leads) to query test information using natural language through AI assistants like Claude Desktop or Cursor.
Key Features:
- ๐ 8 MCP Tools - Health check, test status, bug reporting, database management, sync monitoring
- ๐พ Local Data Store - SQLite-based persistent cache with incremental sync, background refresh, and query interface
- ๐๏ธ Service Layer Architecture - Framework-agnostic business logic, reusable across transports
- ๐ Security-First - Token sanitization, strict input validation, comprehensive secret scanning
- โก Performance - Local queries (~10ms), incremental sync, WAL mode for concurrent reads
- ๐ Strict Type Safety - mypy --strict enforced, Pydantic v2 validation throughout
Use Cases:
- CSMs: "What's the status of test 109363?" โ Get comprehensive test details in seconds
- TLs: "Show me critical functional bugs for test 109363" โ Filter bugs by type, severity, status
- CSMs: "Generate a status report for tests 109363, 109364" โ Export markdown/text/json summaries
Quick Start
Installation
# 1. Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Run interactive setup
uvx testio-mcp setup
# 3. Start server (config auto-loads from ~/.testio-mcp.env)
uvx testio-mcp serve --transport http
Setup command features:
- Interactive prompts for:
- TestIO subdomain and API token
- Customer ID (default: 1)
- Log format (text/JSON) and level (INFO/DEBUG/WARNING)
- Optional product filtering (reduce sync scope)
- API token validation with retry/force-save options
- Automatic backup of existing configuration
- Secure file permissions (user read/write only)
- Clear next steps after completion
๐ Configuration Auto-Loading:
- Production/Users:
~/.testio-mcp.env(created by setup, auto-loaded)- Development:
.envin repo root (for testing, local dev)- Custom: Use
--env-file /path/to/custom.envto overrideNo
--env-fileflag needed for normal usage!
Access your data three ways:
- MCP Protocol:
http://localhost:8080/mcp(Claude, Cursor) - REST API:
http://localhost:8080/api/*(curl, web apps) - Swagger Docs:
http://localhost:8080/docs(interactive API explorer)
See .env.example for configuration options.
Alternative: stdio mode (Single Client)
For using only one MCP client at a time:
# Add to Claude Code
claude mcp add testio-mcp -- uvx testio-mcp
See MCP_SETUP.md for detailed client configuration.
API Access
TestIO MCP Server provides three ways to access your data:
1. MCP Protocol (AI Clients)
Connect Claude Code, Cursor, or other MCP clients to http://localhost:8080/mcp
Best for: Natural language queries through AI assistants
2. REST API (Web Apps, curl)
Standard REST endpoints at http://localhost:8080/api/*:
GET /api/tests/{test_id}- Get test detailsGET /api/tests?product_id=123- List testsGET /api/products- List productsPOST /api/reports/ebr- Generate executive bug reports
Best for: Web applications, scripts, integrations
3. Interactive Swagger Docs
Open http://localhost:8080/docs in your browser to:
- Browse all available endpoints
- Test API calls interactively
- View request/response schemas
- Generate client code
Best for: API exploration, testing, documentation
Recommended: Run in hybrid mode (--api-mode hybrid) to enable all three access methods simultaneously.
CLI Usage
Basic commands:
# Show version
uvx testio-mcp --version
# Start HTTP mode (supports multiple clients)
uvx testio-mcp serve --transport http
# Check database sync status
uvx testio-mcp sync --status
See CLAUDE.md for complete CLI reference and advanced usage.
Database Sync
Automatic Sync:
- Initial sync on server startup (non-blocking, server remains available)
- Background refresh every 15 minutes (configurable via
TESTIO_REFRESH_INTERVAL_SECONDS) - Incremental updates - Only fetches new and mutable tests (status not "archived")
Manual Control:
# Check sync status
uvx testio-mcp sync --status
# Sync recent data
uvx testio-mcp sync --since yesterday
# Force full refresh
uvx testio-mcp sync --force
See CLAUDE.md for advanced sync patterns and troubleshooting.
MCP Client Configuration
stdio mode (Single Client):
claude mcp add testio-mcp -- uvx testio-mcp
HTTP mode (Multiple Clients):
{
"mcpServers": {
"testio-mcp": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}
For REST API usage: Open http://localhost:8080/docs for interactive Swagger documentation.
See MCP_SETUP.md for detailed client configuration.
Features
- Hybrid MCP + REST API - Access via MCP protocol, REST endpoints, or interactive Swagger docs
- SQLite Local Cache - Fast local queries (~10ms), automatic sync, incremental updates
- 8 MCP Tools - Also available via REST API (see
/docsfor complete list) - Type-Safe - mypy --strict, Pydantic v2 validation throughout
- HTTP Transport - Multi-client support, background sync, health monitoring
Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Tools / REST Endpoints โ
โ (Transport Layer) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Transformers (Anti-Corruption Layer) โ
โ - Converts service dicts to API models โ
โ - Maps 'id' โ 'test_id' (semantic) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Service Layer (Business Logic) โ
โ - TestService, ProductService, etc. โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Infrastructure (HTTP & SQLite) โ
โ - TestIOClient, PersistentCache โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
See docs/architecture/ARCHITECTURE.md for details.
Documentation
- CLAUDE.md - Development guide (testing, CLI reference, adding tools)
- MCP_SETUP.md - Client configuration by platform
- docs/architecture/ - Architecture, ADRs, security, performance
- CHANGELOG.md - Version history and migration guides
Configuration
See .env.example for all configuration options including:
- API credentials
- Database settings (path, refresh interval, date filtering)
- HTTP & concurrency limits
- Logging configuration
- Tool enable/disable
License
Proprietary License - See LICENSE for terms.
This software is provided "AS IS" without warranty. Free to use, no modification/redistribution permitted.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file testio_mcp-0.2.3.tar.gz.
File metadata
- Download URL: testio_mcp-0.2.3.tar.gz
- Upload date:
- Size: 126.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15587ba2ccc259136139bd9d28d739f661058facdf2f5ada3796ae2b3231ad4d
|
|
| MD5 |
70666d4ed4382d60a68986edc888af7b
|
|
| BLAKE2b-256 |
25f8a8b39c491e85f6ec3390193e195aca4c72f5c6e36b5b4a205da9d32f1e06
|
File details
Details for the file testio_mcp-0.2.3-py3-none-any.whl.
File metadata
- Download URL: testio_mcp-0.2.3-py3-none-any.whl
- Upload date:
- Size: 146.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2a8c8ce7d72757ae933d4fae82f75f9c13d3813b50d6a5c2ad5cdef3ab81296
|
|
| MD5 |
c70d02a9601105f4e78b8596a49d2c52
|
|
| BLAKE2b-256 |
d842216100f03f186a96db883c7112935dd14386bb35f5fb7363386d78520d07
|