Get Item Relations
get_item_relationsRetrieve all incoming and outgoing associations for a specified item, including dependency, blocking, and derivation links.
Instructions
Get all relations (associations) for a Codebeamer item. Shows incoming and outgoing links like 'depends on', 'blocks', 'derived from', etc.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| itemId | Yes | Numeric item ID |
Implementation Reference
- src/tools/item-details.ts:53-56 (handler)The actual handler function for the 'get_item_relations' MCP tool. Calls client.getItemRelations(itemId) and formats the result via formatRelations().
async ({ itemId }) => { const page = await client.getItemRelations(itemId); return { content: [{ type: "text", text: formatRelations(page) }] }; }, - src/tools/item-details.ts:38-57 (registration)Registration of the 'get_item_relations' tool on the MCP server, defining its name, title, description, and input schema (itemId).
server.registerTool( "get_item_relations", { title: "Get Item Relations", description: "Get all relations (associations) for a Codebeamer item. " + "Shows incoming and outgoing links like 'depends on', 'blocks', 'derived from', etc.", inputSchema: { itemId: z .number() .int() .positive() .describe("Numeric item ID"), }, }, async ({ itemId }) => { const page = await client.getItemRelations(itemId); return { content: [{ type: "text", text: formatRelations(page) }] }; }, ); - src/tools/item-details.ts:45-51 (schema)Input schema for the 'get_item_relations' tool: a single required positive integer 'itemId'.
inputSchema: { itemId: z .number() .int() .positive() .describe("Numeric item ID"), }, - Client method getItemRelations() that calls the Codebeamer API GET /items/{id}/relations and returns a CbItemRelationsPage.
// Item details getItemRelations(id: number): Promise<CbItemRelationsPage> { return this.http.get(`/items/${id}/relations`, { resource: `relations for item ${id}`, }); } - The formatRelations() helper that formats the CbItemRelationsPage into a human-readable markdown table of outgoing and incoming associations.
export function formatRelations(page: CbItemRelationsPage): string { const outgoing = page.outgoingAssociations ?? []; const incoming = page.incomingAssociations ?? []; const total = outgoing.length + incoming.length; if (total === 0) return "_No associations found._"; const lines: string[] = [`## Associations (${total})`]; if (outgoing.length > 0) { lines.push("", `### Outgoing (${outgoing.length})`, "", ...relationsTable(outgoing)); } if (incoming.length > 0) { lines.push("", `### Incoming (${incoming.length})`, "", ...relationsTable(incoming)); } return lines.join("\n"); }