Skip to main content
Glama
doc-resources.ts3.1 kB
import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js'; import { createClickUpClient } from '../clickup-client/index.js'; import { createDocsClient } from '../clickup-client/docs.js'; // Create clients const clickUpClient = createClickUpClient(); const docsClient = createDocsClient(clickUpClient); export function setupDocResources(server: McpServer): void { // Register doc content resource server.resource( 'doc-content', new ResourceTemplate('clickup://workspace/{workspace_id}/doc/{doc_id}', { list: undefined }), { description: 'Get the content of a specific ClickUp doc, combining all pages into a single document.' }, async (uri, params) => { try { const workspace_id = params.workspace_id as string; const doc_id = params.doc_id as string; console.log('[DocResources] Getting doc:', doc_id, 'from workspace:', workspace_id); // Get the pages of the doc const pages = await docsClient.getDocPages(workspace_id, doc_id); // Combine the content of all pages let combinedContent = ''; if (Array.isArray(pages)) { for (const page of pages) { if (page.content) { combinedContent += page.content + '\n\n'; } } } return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: combinedContent || 'No content found in this doc.', }, ], }; } catch (error: any) { console.error('[DocResources] Error fetching doc:', error); throw new Error(`Error fetching doc: ${error.message}`); } } ); // Add some example static resources for discoverability server.resource( 'example-doc', 'clickup://workspace/9011839976/doc/8cjbgz8-911', { description: 'An example doc resource demonstrating the doc content format.' }, async (uri) => { try { const workspace_id = '9011839976'; const doc_id = '8cjbgz8-911'; console.log('[DocResources] Getting example doc:', doc_id, 'from workspace:', workspace_id); // Get the pages of the doc const pages = await docsClient.getDocPages(workspace_id, doc_id); // Combine the content of all pages let combinedContent = ''; if (Array.isArray(pages)) { for (const page of pages) { if (page.content) { combinedContent += page.content + '\n\n'; } } } return { contents: [ { uri: uri.toString(), mimeType: 'application/json', text: combinedContent || 'No content found in this doc.', }, ], }; } catch (error: any) { console.error('[DocResources] Error fetching example doc:', error); throw new Error(`Error fetching example doc: ${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