create_relations
Define and establish multiple relationships between entities in a knowledge graph to enhance data connections and structure. Supports active voice for clear relation mapping.
Instructions
Create multiple new relations between entities in the knowledge graph. Relations should be in active voice
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| relations | Yes |
Implementation Reference
- Core handler implementing the create_relations tool: deduplicates relations, updates source entity markdown files by adding relation lines.async createRelations(relations: Relation[]): Promise<Relation[]> { const graph = await this.loadGraph(); const newRelations: Relation[] = []; for (const relation of relations) { // Check if relation already exists const exists = graph.relations.some(r => r.from === relation.from && r.to === relation.to && r.relationType === relation.relationType ); if (exists) continue; // Update the source entity file const fromPath = getEntityPath(relation.from); try { const content = await fs.readFile(fromPath, 'utf-8'); const updatedContent = addRelationToContent(content, relation); await fs.writeFile(fromPath, updatedContent, 'utf-8'); newRelations.push(relation); } catch (error) { if (error instanceof Error && 'code' in error && (error as any).code === 'ENOENT') { throw new Error(`Entity ${relation.from} not found`); } throw error; } } return newRelations; }
- index.ts:55-76 (registration)Registers the create_relations tool in ListToolsRequestSchema handler, including schema.{ name: "create_relations", description: "Create multiple new relations between entities in the knowledge graph. Relations should be in active voice", inputSchema: { type: "object", properties: { relations: { type: "array", items: { type: "object", properties: { from: { type: "string", description: "The name of the entity where the relation starts" }, to: { type: "string", description: "The name of the entity where the relation ends" }, relationType: { type: "string", description: "The type of the relation" }, }, required: ["from", "to", "relationType"], }, }, }, required: ["relations"], }, },
- index.ts:213-214 (handler)MCP server switch case that handles tool calls to create_relations by invoking storageManager.case "create_relations": return { content: [{ type: "text", text: JSON.stringify(await storageManager.createRelations(args.relations as Relation[]), null, 2) }] };
- types.ts:7-11 (schema)TypeScript interface defining the Relation structure used by the tool.export interface Relation { from: string; to: string; relationType: string; }