Skip to main content
Glama
canvas-client.ts1.32 kB
import fetch from "node-fetch"; // Canvas API credentials let canvasApiToken: string | null = process.env.CANVAS_API_TOKEN || null; let canvasDomain: string | null = process.env.CANVAS_DOMAIN || null; // Base URL for Canvas API export const getBaseUrl = () => { if (!canvasDomain) { throw new Error("Canvas domain not set. Please check CANVAS_DOMAIN environment variable."); } return `https://${canvasDomain}/api/v1`; }; // Helper function for API requests with proper typing export async function canvasApiRequest<T>(path: string, method = 'GET', body?: any): Promise<T> { if (!canvasApiToken) { throw new Error("Canvas API token not set. Please check CANVAS_API_TOKEN environment variable."); } const url = `${getBaseUrl()}${path}`; const response = await fetch(url, { method, headers: { 'Authorization': `Bearer ${canvasApiToken}`, 'Content-Type': 'application/json', }, body: body ? JSON.stringify(body) : undefined, }); if (!response.ok) { const error = await response.text(); throw new Error(`Canvas API error: ${response.status} - ${error}`); } return response.json() as Promise<T>; } // Getters for credentials (for validation purposes) export const getCanvasApiToken = () => canvasApiToken; export const getCanvasDomain = () => canvasDomain;

Implementation Reference

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/brendan-ch/canvas-mcp'

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