Skip to main content
Glama
space.ts3.15 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod"; import { handleApiResponse, getManagementHeaders, buildManagementUrl, createPaginationParams } from "../utils/api"; import type { PaginationParams } from '../types/index'; export function registerSpaceTools(server: McpServer) { // Get space information server.tool( "get-space", "Gets information about the current Storyblok space", {}, async () => { try { const endpoint = buildManagementUrl(''); const response = await fetch( endpoint, { headers: getManagementHeaders() } ); const data = await handleApiResponse(response, endpoint); return { content: [ { type: "text", text: JSON.stringify(data, null, 2) } ] }; } catch (error) { return { isError: true, content: [ { type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` } ] }; } } ); // Fetch folders server.tool( "fetch-folders", "Fetches folders from Storyblok space", {}, async () => { try { const endpoint = `${buildManagementUrl('/stories')}?is_folder=true`; const response = await fetch( endpoint, { headers: getManagementHeaders() } ); const data = await handleApiResponse(response, endpoint); return { content: [ { type: "text", text: JSON.stringify(data, null, 2) } ] }; } catch (error) { return { isError: true, content: [ { type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` } ] }; } } ); // Fetch datasources server.tool( "fetch-datasources", "Fetches datasources from Storyblok space", { page: z.number().optional().describe("Page number for pagination (default: 1)"), per_page: z.number().optional().describe("Number of datasources per page (default: 25, max: 100)") }, async ({ page = 1, per_page = 25 }: PaginationParams) => { try { const params = createPaginationParams(page, per_page); const endpoint = `${buildManagementUrl('/datasources')}?${params}`; const response = await fetch( endpoint, { headers: getManagementHeaders() } ); const data = await handleApiResponse(response, endpoint); return { content: [ { type: "text", text: JSON.stringify(data, null, 2) } ] }; } catch (error) { return { isError: true, content: [ { type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` } ] }; } } ); }

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/arb-ec/mcp-storyblok-server'

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