mcp-daily-tasks
Version:
MCP para manejar tareas y resúmenes con integración ClickUp.
40 lines (37 loc) • 1.41 kB
text/typescript
const CLICKUP_API_KEY = process.env.CLICKUP_API_KEY || '';
const CLICKUP_API_BASE = "https://api.clickup.com/api/v2";
export function getClickupHeaders() {
return {
accept: "application/json",
Authorization: CLICKUP_API_KEY
};
}
export function buildQueryString(params: Record<string, any> = {}) {
if (!params || Object.keys(params).length === 0) return "";
const query = Object.entries(params).reduce((acc, [key, value]) => {
if (Array.isArray(value)) {
acc[key] = value.join(",");
} else if (typeof value === "boolean") {
acc[key] = value ? "true" : "false";
} else if (value !== undefined && value !== null) {
acc[key] = value.toString();
}
return acc;
}, {} as Record<string, string>);
return "?" + new URLSearchParams(query).toString();
}
export async function fetchClickup(endpoint: string, params?: Record<string, any>) {
const url = `${CLICKUP_API_BASE}${endpoint}${buildQueryString(params)}`;
try {
const response = await fetch(url, {
method: "GET",
headers: getClickupHeaders(),
});
if (!response.ok) {
throw new Error(`Error ${response.status}: ${response.statusText}`);
}
return await response.json();
} catch (error) {
return null;
}
}