Sponsored by Deepsite.site

Testcollab Mcp Server

Created By
TCSoftInc11 days ago
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 pagination
    • create_test_case - Create test cases with steps and custom fields
    • update_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
VariableRequiredDescription
TC_API_TOKENYesAPI token from TestCollab user profile
TC_API_URLNoAPI base URL (default: http://localhost:1337)
TC_DEFAULT_PROJECTNoDefault 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:

NameTypeRequiredDescription
project_idnumberNo*Project ID (*required if TC_DEFAULT_PROJECT not set)
suite_idnumberNoFilter by suite
filterobjectNoFilter conditions
sortarrayNoSort specification
limitnumberNoMax results (1-100, default: 50)
offsetnumberNoSkip 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:

NameTypeRequiredDescription
project_idnumberNo*Project ID (*required if TC_DEFAULT_PROJECT not set)
titlestringYesTest case title
suite_idnumberNoSuite to place test case in
descriptionstringNoHTML-formatted description
prioritynumberNo0=Low, 1=Normal, 2=High (default: 1)
stepsarrayNoTest steps array
tagsarrayNoArray of tag IDs
requirementsarrayNoArray of requirement IDs
custom_fieldsarrayNoArray of custom field values
attachmentsarrayNoArray 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:

NameTypeRequiredDescription
idnumberYesTest case ID to update
project_idnumberNo*Project ID (*required if TC_DEFAULT_PROJECT not set)
titlestringNoNew title
suite_idnumberNoMove to different suite
descriptionstringNoHTML-formatted description
prioritynumberNo0=Low, 1=Normal, 2=High
stepsarrayNoReplace all steps
tagsarrayNoReplace all tags (array of tag IDs)
requirementsarrayNoReplace all requirements (array of requirement IDs)
custom_fieldsarrayNoUpdate custom field values
attachmentsarrayNoReplace 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.