Skip to main content
Glama
list-resources.ts4.23 kB
import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'; import { createClickUpClient } from '../clickup-client/index.js'; import { createListsClient } from '../clickup-client/lists.js'; // Create clients const clickUpClient = createClickUpClient(); const listsClient = createListsClient(clickUpClient); export function setupListResources(server: McpServer): void { // Register space lists resource server.resource( 'space-lists', new ResourceTemplate('clickup://space/{space_id}/lists', { list: undefined }), { description: 'Get all lists directly in a ClickUp space (not in folders), including their names and settings.' }, async (uri, params) => { try { const space_id = params.space_id as string; console.log('[ListResources] Fetching lists for space:', space_id); const result = await listsClient.getListsFromSpace(space_id); console.log('[ListResources] Got lists:', result); return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(result, null, 2), }, ], }; } catch (error: any) { console.error('[ListResources] Error fetching space lists:', error); throw new Error(`Error fetching space lists: ${error.message}`); } } ); // Register list details resource server.resource( 'list-details', new ResourceTemplate('clickup://list/{list_id}', { list: undefined }), { description: 'Get detailed information about a specific ClickUp list, including its name, settings, and metadata.' }, async (uri, params) => { try { const list_id = params.list_id as string; console.log('[ListResources] Fetching list:', list_id); const list = await listsClient.getList(list_id); console.log('[ListResources] Got list:', list); return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(list, null, 2), }, ], }; } catch (error: any) { console.error('[ListResources] Error fetching list:', error); throw new Error(`Error fetching list: ${error.message}`); } } ); // Add some example static resources for discoverability server.resource( 'example-list', 'clickup://list/901109776097', { description: 'An example list resource demonstrating the list details format.' }, async (uri) => { try { const list_id = '901109776097'; console.log('[ListResources] Fetching example list:', list_id); const list = await listsClient.getList(list_id); console.log('[ListResources] Got list:', list); return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(list, null, 2), }, ], }; } catch (error: any) { console.error('[ListResources] Error fetching example list:', error); throw new Error(`Error fetching example list: ${error.message}`); } } ); server.resource( 'example-space-lists', 'clickup://space/90113637923/lists', { description: 'An example space lists resource demonstrating the list data format.' }, async (uri) => { try { const space_id = '90113637923'; console.log('[ListResources] Fetching lists for example space:', space_id); const result = await listsClient.getListsFromSpace(space_id); console.log('[ListResources] Got lists:', result); return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(result, null, 2), }, ], }; } catch (error: any) { console.error('[ListResources] Error fetching example space lists:', error); throw new Error(`Error fetching example space lists: ${error.message}`); } } ); }

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/nsxdavid/clickup-mcp-server'

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