- Testcollab Mcp Server
Testcollab Mcp Server
Manage test cases directly from Claude, Cursor, Windsurf, and other MCP-compatible AI coding assistants. TestCollab serves as a governance layer and truth engine for AI-generated code - your test cases define what "correct" means, so when AI writes or modifies code, it has a clear source of truth to validate against.
Features:
• List test cases with filtering and sorting
• Create new test cases
• Update existing test cases
• Pagination support for large test suites
Content
TestCollab MCP Server
MCP (Model Context Protocol) server that exposes TestCollab test management functionality to AI assistants like Claude.
Features
V1.0 (Current)
- Test Case Management
list_test_cases- List test cases with filtering, sorting, and paginationcreate_test_case- Create test cases with steps and custom fieldsupdate_test_case- Update existing test cases
Planned
- Delete test cases
- Suite management
- Test plan management
- Test execution recording
Installation
cd tc-mcp-server
npm install
npm run build
Configuration
Create a .env file or set environment variables:
# Required: API token from TestCollab user profile
TC_API_TOKEN=your-api-token-here
# Optional: API base URL (default: http://localhost:1337)
TC_API_URL=http://localhost:1337
# Optional: Default project ID (eliminates need to specify project_id in every request)
TC_DEFAULT_PROJECT=16
| Variable | Required | Description |
|---|---|---|
TC_API_TOKEN | Yes | API token from TestCollab user profile |
TC_API_URL | No | API base URL (default: http://localhost:1337) |
TC_DEFAULT_PROJECT | No | Default project ID - if set, project_id becomes optional in tool calls |
Usage
With Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"testcollab": {
"command": "node",
"args": ["/path/to/tc-mcp-server/dist/index.js"],
"env": {
"TC_API_URL": "http://localhost:1337",
"TC_API_TOKEN": "your-api-token",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}
With Claude Code
Add to your Claude Code settings (.claude/settings.json):
{
"mcpServers": {
"testcollab": {
"command": "node",
"args": ["./tc-mcp-server/dist/index.js"],
"env": {
"TC_API_URL": "http://localhost:1337",
"TC_API_TOKEN": "your-api-token",
"TC_DEFAULT_PROJECT": "16"
}
}
}
}
With Codex
[mcp_servers.testcollab]
url = "http://localhost:3100/mcp"
http_headers = { "X-TC-Default-Project" = "17", X-TC-API-Token = "", X-TC-API-URL = "http://localhost:1337" }
# (optional) for high security - use env var
#env_http_headers = { "X-TC-Token" = "TESTCOLLAB_MCP_TOKEN" }
Manual Testing
# Start the server directly (for debugging)
TC_API_TOKEN=your-token npm run dev
# Or with built version
TC_API_TOKEN=your-token npm start
Available Tools
list_test_cases
List test cases from a project with optional filtering.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | No* | Project ID (*required if TC_DEFAULT_PROJECT not set) |
suite_id | number | No | Filter by suite |
filter | object | No | Filter conditions |
sort | array | No | Sort specification |
limit | number | No | Max results (1-100, default: 50) |
offset | number | No | Skip N results (default: 0) |
Filter Example:
{
"project_id": 1,
"filter": {
"priority": {
"filterType": "number",
"type": "greaterThanOrEqual",
"filter": 1
},
"title": {
"filterType": "text",
"type": "contains",
"filter": "login"
}
},
"sort": [{ "colId": "updated_at", "sort": "desc" }],
"limit": 25
}
Response:
{
"rows": [...],
"totalCount": 150,
"filteredCount": 25
}
create_test_case
Create a new test case with optional custom fields.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | No* | Project ID (*required if TC_DEFAULT_PROJECT not set) |
title | string | Yes | Test case title |
suite_id | number | No | Suite to place test case in |
description | string | No | HTML-formatted description |
priority | number | No | 0=Low, 1=Normal, 2=High (default: 1) |
steps | array | No | Test steps array |
tags | array | No | Array of tag IDs |
requirements | array | No | Array of requirement IDs |
custom_fields | array | No | Array of custom field values |
attachments | array | No | Array of attachment file IDs |
Example:
{
"title": "Verify login with valid credentials",
"suite_id": 123,
"priority": 2,
"description": "<p>Test user login</p>",
"steps": [
{ "step": "Navigate to login page", "expected_result": "Page loads" },
{ "step": "Enter valid credentials", "expected_result": "Fields accept input" },
{ "step": "Click Login", "expected_result": "User logged in" }
],
"custom_fields": [
{ "id": 5, "name": "env_dropdown", "value": 1, "valueLabel": "staging" }
]
}
Response:
{
"success": true,
"message": "Test case created successfully",
"testCase": {
"id": 1234,
"title": "Verify login with valid credentials",
"project": { "id": 16, "name": "My Project" },
"suite": { "id": 123, "title": "Login Suite" },
"priority": "2"
}
}
update_test_case
Update an existing test case.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
id | number | Yes | Test case ID to update |
project_id | number | No* | Project ID (*required if TC_DEFAULT_PROJECT not set) |
title | string | No | New title |
suite_id | number | No | Move to different suite |
description | string | No | HTML-formatted description |
priority | number | No | 0=Low, 1=Normal, 2=High |
steps | array | No | Replace all steps |
tags | array | No | Replace all tags (array of tag IDs) |
requirements | array | No | Replace all requirements (array of requirement IDs) |
custom_fields | array | No | Update custom field values |
attachments | array | No | Replace attachments (array of file IDs) |
Example:
{
"id": 1234,
"title": "Updated: Verify login with valid credentials",
"priority": 2,
"steps": [
{ "step": "Navigate to login page", "expected_result": "Page loads" },
{ "step": "Enter valid credentials", "expected_result": "Fields accept input" },
{ "step": "Click Login", "expected_result": "User logged in" },
{ "step": "Verify dashboard", "expected_result": "Dashboard displayed" }
]
}
Response:
{
"success": true,
"message": "Test case updated successfully",
"testCase": {
"id": 1234,
"title": "Updated: Verify login with valid credentials",
"project": { "id": 16, "name": "My Project" },
"suite": { "id": 123, "title": "Login Suite" },
"priority": "2"
}
}
Development
# Install dependencies
npm install
# Run in development mode (with hot reload)
npm run dev
# Build
npm run build
# Run tests
npm test
# Type check
npm run typecheck
# Lint
npm run lint
Project Structure
tc-mcp-server/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── config.ts # Configuration
│ ├── client/
│ │ └── api-client.ts # TestCollab API client
│ ├── tools/
│ │ ├── index.ts # Tool registry
│ │ ├── test-cases/
│ │ │ ├── index.ts
│ │ │ └── list.ts # list_test_cases tool
│ │ └── suites/
│ │ └── index.ts
│ └── types/
│ └── index.ts # Type definitions
├── tests/
│ ├── unit/
│ └── integration/
├── package.json
├── tsconfig.json
└── README.md
Documentation
- Installation Guide - Step-by-step setup for Claude Code and Claude Desktop
- Use Cases - Common scenarios and example prompts for chatbot integration
License
UNLICENSED - Private
Server Config
{
"mcpServers": {
"testcollab": {
"url": "https://mcp.testcollab.io/mcp",
"transport": "sse"
}
}
}Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
CursorThe AI Code Editor
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
DeepChatYour AI Partner on Desktop
Serper MCP ServerA Serper MCP Server
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
ChatWiseThe second fastest AI chatbot™
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题;
Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
WindsurfThe new purpose-built IDE to harness magic
Playwright McpPlaywright MCP server
Tavily Mcp
Amap Maps高德地图官方 MCP Server
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.