Skip to main content
Glama
angrysky56

Narrative Graph MCP

createNarrativeTree.ts1.89 kB
// Tool implementation for creating narrative trees import { createNarrative } from "../core/rtm-builder.js"; import { RTMTreeBuilder } from "../core/rtm-builder.js"; import { createDefaultParameters } from "../core/rtm-ensemble.js"; interface CreateNarrativeTreeParams { text: string; title: string; type?: 'story' | 'article' | 'dialogue' | 'technical' | 'other'; maxBranchingFactor?: number; maxRecallDepth?: number; } // Tool implementation export default async function createNarrativeTree(params: CreateNarrativeTreeParams) { try { // Create narrative from text const narrative = createNarrative( params.text, params.title, params.type || 'other' ); // Create RTM parameters const parameters = { ...createDefaultParameters(), maxBranchingFactor: params.maxBranchingFactor || 4, maxRecallDepth: params.maxRecallDepth || 6 }; // Build the tree const builder = new RTMTreeBuilder(parameters); const tree = builder.buildTree(narrative); // Get tree statistics const stats = { totalNodes: tree.nodes.size, totalClauses: narrative.clauses.length, maxDepth: Math.max(...Array.from(tree.nodes.values()).map(n => n.level)), parameters: parameters }; return { content: [{ type: "text", text: JSON.stringify({ success: true, treeId: tree.id, narrativeId: narrative.id, statistics: stats, message: `Created RTM tree with ${stats.totalNodes} nodes from ${stats.totalClauses} clauses` }, null, 2) }], }; } catch (error) { return { content: [{ type: "text", text: JSON.stringify({ success: false, error: error instanceof Error ? error.message : "Unknown error occurred" }, null, 2) }], }; } }

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/angrysky56/narrative-graph-mcp'

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