List Trackers
list_trackersRetrieve all trackers (Requirements, Bugs, Test Cases, etc.) in a Codebeamer project by providing the numeric project ID. Use the returned tracker IDs to access items or details.
Instructions
List all trackers (Requirements, Bugs, Test Cases, etc.) in a Codebeamer project. Use the returned tracker IDs to list items or get tracker details.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Numeric project ID | |
| page | No | Page number (starts at 1) | |
| pageSize | No | Items per page (max 100) |
Implementation Reference
- src/tools/trackers.ts:13-45 (handler)Handler function for the list_trackers tool. Calls client.listTrackers() and formats the result.
server.registerTool( "list_trackers", { title: "List Trackers", description: "List all trackers (Requirements, Bugs, Test Cases, etc.) in a Codebeamer project. " + "Use the returned tracker IDs to list items or get tracker details.", inputSchema: { projectId: z .number() .int() .positive() .describe("Numeric project ID"), page: z .number() .int() .min(1) .default(1) .describe("Page number (starts at 1)"), pageSize: z .number() .int() .min(1) .max(100) .default(25) .describe("Items per page (max 100)"), }, }, async ({ projectId, page, pageSize }) => { const result = await client.listTrackers(projectId, page, pageSize); return { content: [{ type: "text", text: formatTrackerList(result) }] }; }, ); - src/tools/trackers.ts:15-39 (schema)Schema definition for list_trackers input: projectId (number), page (optional, default 1), pageSize (optional, default 25).
{ title: "List Trackers", description: "List all trackers (Requirements, Bugs, Test Cases, etc.) in a Codebeamer project. " + "Use the returned tracker IDs to list items or get tracker details.", inputSchema: { projectId: z .number() .int() .positive() .describe("Numeric project ID"), page: z .number() .int() .min(1) .default(1) .describe("Page number (starts at 1)"), pageSize: z .number() .int() .min(1) .max(100) .default(25) .describe("Items per page (max 100)"), }, - src/tools/trackers.ts:9-45 (registration)Registration of the list_trackers tool via server.registerTool() inside the registerTrackerTools function.
export function registerTrackerTools( server: McpServer, client: CodebeamerClient, ): void { server.registerTool( "list_trackers", { title: "List Trackers", description: "List all trackers (Requirements, Bugs, Test Cases, etc.) in a Codebeamer project. " + "Use the returned tracker IDs to list items or get tracker details.", inputSchema: { projectId: z .number() .int() .positive() .describe("Numeric project ID"), page: z .number() .int() .min(1) .default(1) .describe("Page number (starts at 1)"), pageSize: z .number() .int() .min(1) .max(100) .default(25) .describe("Items per page (max 100)"), }, }, async ({ projectId, page, pageSize }) => { const result = await client.listTrackers(projectId, page, pageSize); return { content: [{ type: "text", text: formatTrackerList(result) }] }; }, ); - Client method listTrackers() that makes the HTTP GET request to /projects/{projectId}/trackers.
async listTrackers( projectId: number, page: number, pageSize: number, ): Promise<CbTracker[]> { const raw = await this.http.get<unknown>(`/projects/${projectId}/trackers`, { params: { page, pageSize }, resource: `trackers for project ${projectId}`, }); return toArray(raw); } - Formatter that renders the list of CbTracker objects into a Markdown table.
export function formatTrackerList(trackers: CbTracker[]): string { const header = `## Trackers (${trackers.length} total)\n`; if (trackers.length === 0) return `${header}\n_No trackers found._`; const rows = trackers.map( (t) => `| ${t.id} | ${t.name} | ${t.type?.name ?? "-"} | ${t.keyName ?? "-"} |`, ); return [ header, "| ID | Name | Type | Key |", "|----|------|------|-----|", ...rows, ].join("\n"); }