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
| Name | Required | Description | Default |
|---|---|---|---|
| repositoryUrl | Yes | ||
| format | No | json |
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") },
- src/features/knowledge-graph/index.ts:107-142 (registration)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}`); } }