Skip to main content
Glama
Derrbal
by Derrbal

get_case_fields

Retrieve available custom fields for test cases to ensure proper data structure and field mapping in TestRail test management systems.

Instructions

Returns a list of available test case custom fields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • MCP tool handler function for 'get_case_fields'. Calls the service layer getCaseFields(), handles errors with specific messages, and returns JSON-formatted result or error.
    async () => { logger.debug('Get case fields tool called'); try { const result = await getCaseFields(); logger.debug(`Get case fields tool completed successfully. Found ${result.length} fields`); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (err) { logger.error({ err }, 'Get case fields tool failed'); const e = err as { type?: string; status?: number; message?: string }; let message = 'Unexpected error'; if (e?.type === 'auth') message = 'Authentication failed: check TESTRAIL_USER/API_KEY'; else if (e?.type === 'rate_limited') message = 'Rate limited by TestRail; try again later'; else if (e?.type === 'server') message = 'TestRail server error'; else if (e?.type === 'network') message = 'Network error contacting TestRail'; else if (e?.message) message = e.message; return { content: [ { type: 'text', text: message }, ], isError: true, }; } },
  • Input schema for the get_case_fields tool: no parameters required (empty schema).
    { title: 'Get TestRail Case Fields', description: 'Returns a list of available test case custom fields.', inputSchema: {}, },
  • src/server.ts:895-933 (registration)
    Registration of the 'get_case_fields' MCP tool using server.registerTool, including name, metadata/schema, and handler function.
    server.registerTool( 'get_case_fields', { title: 'Get TestRail Case Fields', description: 'Returns a list of available test case custom fields.', inputSchema: {}, }, async () => { logger.debug('Get case fields tool called'); try { const result = await getCaseFields(); logger.debug(`Get case fields tool completed successfully. Found ${result.length} fields`); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (err) { logger.error({ err }, 'Get case fields tool failed'); const e = err as { type?: string; status?: number; message?: string }; let message = 'Unexpected error'; if (e?.type === 'auth') message = 'Authentication failed: check TESTRAIL_USER/API_KEY'; else if (e?.type === 'rate_limited') message = 'Rate limited by TestRail; try again later'; else if (e?.type === 'server') message = 'TestRail server error'; else if (e?.type === 'network') message = 'Network error contacting TestRail'; else if (e?.message) message = e.message; return { content: [ { type: 'text', text: message }, ], isError: true, }; } }, );
  • Service layer function getCaseFields that fetches raw fields from client and maps to summary format (CaseFieldSummary[]). Called by MCP handler.
    export async function getCaseFields(): Promise<CaseFieldSummary[]> { const fields: TestRailCaseFieldDto[] = await testRailClient.getCaseFields(); return fields.map((field) => ({ id: field.id, label: field.label, name: field.name, system_name: field.system_name, type_id: field.type_id, description: field.description, display_order: field.display_order, configs: field.configs, })); }
  • Client layer HTTP call to TestRail API endpoint '/get_case_fields', with response validation, logging, and error normalization. Called by service layer.
    async getCaseFields(): Promise<TestRailCaseFieldDto[]> { try { const res = await this.http.get('/get_case_fields'); logger.info({ status: res.status, dataType: typeof res.data, dataIsArray: Array.isArray(res.data) }, 'TestRail getCaseFields response info'); if (res.status >= 200 && res.status < 300) { if (Array.isArray(res.data)) { return res.data as TestRailCaseFieldDto[]; } else { logger.error({ status: res.status, responseData: res.data, dataType: typeof res.data }, 'TestRail getCaseFields returned non-array response'); throw Object.assign(new Error('API returned non-array response'), { response: { status: 200 } // Make it look like a server error }); } } throw Object.assign(new Error(`HTTP ${res.status}`), { response: res }); } catch (err) { const normalized = this.normalizeError(err); const safeDetails = this.getSafeErrorDetails(err); logger.error({ err: normalized, details: safeDetails }, 'TestRail getCaseFields failed'); throw normalized; } }

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/Derrbal/testrail-mcp'

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