clickup-mcp-server
Version:
A Model Context Protocol (MCP) server that provides a standardized interface for AI assistants to interact with the ClickUp API
57 lines • 2.45 kB
JavaScript
import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
import { createClickUpClient } from '../clickup-client/index.js';
import { createTasksClient } from '../clickup-client/tasks.js';
// Create clients
const clickUpClient = createClickUpClient();
const tasksClient = createTasksClient(clickUpClient);
export function setupTaskResources(server) {
// Register task details resource
server.resource('task-details', new ResourceTemplate('clickup://task/{task_id}', { list: undefined }), {
description: 'Get detailed information about a specific ClickUp task, including its name, description, assignees, status, and dates.'
}, async (uri, params) => {
try {
const task_id = params.task_id;
console.log('[TaskResources] Fetching task:', task_id);
const task = await tasksClient.getTask(task_id);
console.log('[TaskResources] Got task:', task);
return {
contents: [
{
uri: uri.toString(),
mimeType: 'application/json',
text: JSON.stringify(task, null, 2),
},
],
};
}
catch (error) {
console.error('[TaskResources] Error fetching task:', error);
throw new Error(`Error fetching task: ${error.message}`);
}
});
// Add some example static resources for discoverability
server.resource('example-task', 'clickup://task/86rkjvttt', {
description: 'An example task resource demonstrating the task details format.'
}, async (uri) => {
try {
const task_id = '86rkjvttt';
console.log('[TaskResources] Fetching example task:', task_id);
const task = await tasksClient.getTask(task_id);
console.log('[TaskResources] Got task:', task);
return {
contents: [
{
uri: uri.toString(),
mimeType: 'application/json',
text: JSON.stringify(task, null, 2),
},
],
};
}
catch (error) {
console.error('[TaskResources] Error fetching example task:', error);
throw new Error(`Error fetching example task: ${error.message}`);
}
});
}
//# sourceMappingURL=task-resources.js.map