Skip to main content
Glama
0xjcf
by 0xjcf

export-knowledge-graph

Extract and export a codebase's knowledge graph from a repository URL in JSON, Mermaid, DOT, or Cypher format to visualize dependencies and relationships for analysis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
repositoryUrlYes
formatNojson

Implementation Reference

  • The handler implementation for the 'export-knowledge-graph' MCP tool. It queries the full knowledge graph for the repository and exports it in the specified format (json, mermaid, dot, cypher) using the exportKnowledgeGraph helper.
    server.tool(
      "export-knowledge-graph",
      {
        repositoryUrl: z.string(),
        format: z.enum(["json", "mermaid", "dot", "cypher"]).default("json")
      },
      async ({ repositoryUrl, format }) => {
        try {
          // First query the graph to get all nodes and relationships
          const results = await queryKnowledgeGraph({
            query: "MATCH (n)-[r]-(m) WHERE n.repository = $repositoryUrl RETURN n, r, m",
            repositoryUrl
          });
          
          // Export in requested format
          const exported = await exportKnowledgeGraph(results, format);
          
          return {
            content: [{
              type: "text",
              text: exported,
              _metadata: format === "mermaid" ? { format: "mermaid" } : undefined
            }]
          };
        } catch (error) {
          return {
            content: [{
              type: "text",
              text: `Error exporting knowledge graph: ${(error as Error).message}`
            }],
            isError: true
          };
        }
      }
    );
  • Input schema for the export-knowledge-graph tool using Zod validation.
      repositoryUrl: z.string(),
      format: z.enum(["json", "mermaid", "dot", "cypher"]).default("json")
    },
  • Registration of the export-knowledge-graph tool on the MCP server within registerKnowledgeGraphFeatures.
    // Tool to export the knowledge graph
    server.tool(
      "export-knowledge-graph",
      {
        repositoryUrl: z.string(),
        format: z.enum(["json", "mermaid", "dot", "cypher"]).default("json")
      },
      async ({ repositoryUrl, format }) => {
        try {
          // First query the graph to get all nodes and relationships
          const results = await queryKnowledgeGraph({
            query: "MATCH (n)-[r]-(m) WHERE n.repository = $repositoryUrl RETURN n, r, m",
            repositoryUrl
          });
          
          // Export in requested format
          const exported = await exportKnowledgeGraph(results, format);
          
          return {
            content: [{
              type: "text",
              text: exported,
              _metadata: format === "mermaid" ? { format: "mermaid" } : undefined
            }]
          };
        } catch (error) {
          return {
            content: [{
              type: "text",
              text: `Error exporting knowledge graph: ${(error as Error).message}`
            }],
            isError: true
          };
        }
      }
    );
  • Helper function that performs the actual export formatting, called by the tool handler. Dispatches to format-specific exporters.
    export async function exportKnowledgeGraph(results: GraphQueryResult, format: string): Promise<string> {
      const { nodes, relationships } = results;
      
      switch (format) {
        case "json":
          return JSON.stringify({ nodes, relationships }, null, 2);
        
        case "mermaid":
          return exportToMermaid(nodes, relationships);
        
        case "dot":
          return exportToDot(nodes, relationships);
        
        case "cypher":
          return exportToCypher(nodes, relationships);
        
        default:
          throw new Error(`Unsupported export format: ${format}`);
      }
    }

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/0xjcf/MCP_CodeAnalysis'

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