Skip to main content
Glama

get-boards

Retrieve Trello boards with customizable filtering, field selection, and list inclusion options for project management integration.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to include (e.g., "id,name,url"). Default: "id,name,url,closed,starred"
filterNoFilter boards by type: "open", "closed", "starred", "all". Default: "open"
limitNoMaximum number of boards to return (1-100). Default: 50
organizationNoInclude organization boards. Default: true
listsNoInclude lists: "open", "closed", "all", "none". Default: "none"

Implementation Reference

  • The asynchronous handler function that executes the 'get-boards' tool. It constructs Trello API query parameters based on input, fetches the user's boards, applies limits, and returns a structured JSON response or error message.
    async (params) => { try { // Default parameters to reduce response size const fields = params.fields || 'id,name,url,closed,starred'; const filter = params.filter || 'open'; const limit = params.limit || 50; const organization = params.organization !== false; const lists = params.lists || 'none'; // Build query parameters const queryParams = new URLSearchParams({ key: credentials.apiKey, token: credentials.apiToken, fields: fields, filter: filter, lists: lists, }); // Add organization parameter if needed if (organization) { queryParams.append('organization', 'true'); } const response = await fetch( `https://api.trello.com/1/members/me/boards?${queryParams}` ); const data = await response.json(); // Apply client-side limit if needed const limitedData = Array.isArray(data) ? data.slice(0, limit) : data; return { content: [ { type: 'text', text: JSON.stringify({ boards: limitedData, count: Array.isArray(limitedData) ? limitedData.length : 0, parameters_used: { fields, filter, limit, organization, lists }, note: 'Use fields parameter to customize response size. Available fields: id,name,desc,closed,starred,url,shortUrl,prefs,dateLastActivity,idOrganization' }, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting boards: ${error}`, }, ], isError: true, }; } } );
  • Zod schema defining the input parameters for the 'get-boards' tool, including optional fields for customization.
    { fields: z.string().optional().describe('Comma-separated list of fields to include (e.g., "id,name,url"). Default: "id,name,url,closed,starred"'), filter: z.string().optional().describe('Filter boards by type: "open", "closed", "starred", "all". Default: "open"'), limit: z.number().min(1).max(100).optional().describe('Maximum number of boards to return (1-100). Default: 50'), organization: z.boolean().optional().describe('Include organization boards. Default: true'), lists: z.string().optional().describe('Include lists: "open", "closed", "all", "none". Default: "none"'), },
  • Local registration of the 'get-boards' tool using server.tool(), including schema and handler, within the registerBoardsTools function.
    server.tool( 'get-boards', { fields: z.string().optional().describe('Comma-separated list of fields to include (e.g., "id,name,url"). Default: "id,name,url,closed,starred"'), filter: z.string().optional().describe('Filter boards by type: "open", "closed", "starred", "all". Default: "open"'), limit: z.number().min(1).max(100).optional().describe('Maximum number of boards to return (1-100). Default: 50'), organization: z.boolean().optional().describe('Include organization boards. Default: true'), lists: z.string().optional().describe('Include lists: "open", "closed", "all", "none". Default: "none"'), }, async (params) => { try { // Default parameters to reduce response size const fields = params.fields || 'id,name,url,closed,starred'; const filter = params.filter || 'open'; const limit = params.limit || 50; const organization = params.organization !== false; const lists = params.lists || 'none'; // Build query parameters const queryParams = new URLSearchParams({ key: credentials.apiKey, token: credentials.apiToken, fields: fields, filter: filter, lists: lists, }); // Add organization parameter if needed if (organization) { queryParams.append('organization', 'true'); } const response = await fetch( `https://api.trello.com/1/members/me/boards?${queryParams}` ); const data = await response.json(); // Apply client-side limit if needed const limitedData = Array.isArray(data) ? data.slice(0, limit) : data; return { content: [ { type: 'text', text: JSON.stringify({ boards: limitedData, count: Array.isArray(limitedData) ? limitedData.length : 0, parameters_used: { fields, filter, limit, organization, lists }, note: 'Use fields parameter to customize response size. Available fields: id,name,desc,closed,starred,url,shortUrl,prefs,dateLastActivity,idOrganization' }, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting boards: ${error}`, }, ], isError: true, }; } } );
  • src/index.ts:88-88 (registration)
    Top-level registration call in the main server setup that invokes registerBoardsTools to add the 'get-boards' tool (and other boards tools) to the MCP server.
    registerBoardsTools(server, credentials);

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/adriangrahldev/advanced-trello-mcp-server'

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