Skip to main content
Glama

basecamp_list_kanban_cards

Retrieve cards from a kanban column in Basecamp projects to track task progress and manage workflow visibility.

Instructions

List cards in a kanban column.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bucket_idYesBasecamp resource identifier
column_idYes

Implementation Reference

  • The main handler function for the tool. It initializes the Basecamp client, fetches all kanban cards from the specified column using paged listing, serializes person data for creator and assignees, extracts relevant fields including steps status, formats as pretty JSON text content, and handles errors gracefully.
    async (params) => { try { const client = await initializeBasecampClient(); const cards = await asyncPagedToArray({ fetchPage: client.cardTableCards.list, request: { params: { bucketId: params.bucket_id, columnId: params.column_id }, query: {}, }, }); return { content: [ { type: "text", text: JSON.stringify( cards.map((c) => ({ id: c.id, title: c.title, due_on: c.due_on, url: c.app_url, comments_count: c.comments_count, created_at: c.created_at, creator: serializePerson(c.creator), assignees: c.assignees.map(serializePerson), steps: c.steps?.map((s) => ({ title: s.title, completed: s.completed, })), })), null, 2, ), }, ], }; } catch (error) { return { content: [{ type: "text", text: handleBasecampError(error) }], }; } },
  • The server.registerTool call that defines and registers the 'basecamp_list_kanban_cards' tool, including its schema (requiring bucket_id and column_id), metadata annotations, title, description, and references the handler function.
    server.registerTool( "basecamp_list_kanban_cards", { title: "List Kanban Cards", description: "List cards in a kanban column.", inputSchema: { bucket_id: BasecampIdSchema, column_id: BasecampIdSchema, }, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true, }, }, async (params) => { try { const client = await initializeBasecampClient(); const cards = await asyncPagedToArray({ fetchPage: client.cardTableCards.list, request: { params: { bucketId: params.bucket_id, columnId: params.column_id }, query: {}, }, }); return { content: [ { type: "text", text: JSON.stringify( cards.map((c) => ({ id: c.id, title: c.title, due_on: c.due_on, url: c.app_url, comments_count: c.comments_count, created_at: c.created_at, creator: serializePerson(c.creator), assignees: c.assignees.map(serializePerson), steps: c.steps?.map((s) => ({ title: s.title, completed: s.completed, })), })), null, 2, ), }, ], }; } catch (error) { return { content: [{ type: "text", text: handleBasecampError(error) }], }; } }, );
  • src/index.ts:66-66 (registration)
    Top-level invocation of registerKanbanTools(server) in the main server file, which registers the kanban tools group including 'basecamp_list_kanban_cards'.
    registerKanbanTools(server);
  • Input schema for the tool, using shared BasecampIdSchema for numeric IDs of bucket and column.
    inputSchema: { bucket_id: BasecampIdSchema, column_id: BasecampIdSchema, },

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/stefanoverna/basecamp-mcp'

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