Skip to main content
Glama
exportGraphQL.ts2.09 kB
import axios from "axios"; import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; import { buildClientSchema, getIntrospectionQuery, printSchema } from "graphql"; // Configuration const ENDPOINT_URL = process.env.DATA_API_URL || "https://graph.web3.bio/graphql"; const OUTPUT_FILE = "./graphql.graphql"; /** * Exports GraphQL schema from web3.bio endpoint * This script fetches the GraphQL schema introspection and saves it as SDL */ async function exportGraphQLSchema() { try { const res = await axios.post( ENDPOINT_URL, { query: getIntrospectionQuery(), }, { headers: { "Content-Type": "application/json", }, } ); if (!res.data || !res.data.data) { throw new Error("Invalid response from GraphQL endpoint"); } const schema = buildClientSchema(res.data.data); const sdl = printSchema(schema); // Ensure output directory exists const outputPath = path.resolve(OUTPUT_FILE); const outputDir = path.dirname(outputPath); if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } console.log(`💾 Writing schema to: ${outputPath}`); fs.writeFileSync(outputPath, sdl, "utf8"); console.log("✅ GraphQL schema exported successfully!"); console.log(`📊 Schema size: ${(sdl.length / 1024).toFixed(2)} KB`); } catch (error) { console.error("❌ Failed to export GraphQL schema:"); if (axios.isAxiosError(error)) { console.error(`Network error: ${error.message}`); if (error.response) { console.error(`Status: ${error.response.status}`); console.error( `Response: ${JSON.stringify(error.response.data, null, 2)}` ); } } else { console.error(error instanceof Error ? error.message : String(error)); } process.exit(1); } } // Run the script if called directly const __filename = fileURLToPath(import.meta.url); if (process.argv[1] === __filename) { exportGraphQLSchema(); } export { exportGraphQLSchema };

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/fengshanshan/relate-account-mcp'

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