Skip to main content
Glama
YuNaga224
by YuNaga224

create_relations

Define connections between knowledge graph entities using active voice relations to build structured networks in Obsidian.

Instructions

Create multiple new relations between entities in the knowledge graph. Relations should be in active voice

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
relationsYes

Implementation Reference

  • Core implementation of the createRelations tool: loads graph, checks for duplicates, updates source entity markdown files with new relations using addRelationToContent, and returns created relations.
    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)
    Tool registration in ListToolsRequestSchema handler: defines name, description, and input schema for create_relations tool.
    { 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"], }, },
  • MCP CallToolRequestSchema dispatch case: handles tool invocation by calling storageManager.createRelations and formatting response.
    case "create_relations": return { content: [{ type: "text", text: JSON.stringify(await storageManager.createRelations(args.relations as Relation[]), null, 2) }] };
  • Input schema definition for validating arguments to the create_relations tool.
    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"], },

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/YuNaga224/obsidian-memory-mcp'

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