Skip to main content
Glama

link_memories

Connect related memories in a knowledge graph to establish relationships between concepts. Define connections using relation types like depends_on, implements, or references.

Instructions

메모리 간 관계를 연결합니다 (지식 그래프).

키워드: 연결해, 관계 설정, 링크, connect memories, link, relate

사용 예시:

  • "project-architecture와 design-patterns를 연결해"

  • "이 두 메모리를 related_to로 링크해"

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sourceKeyYes소스 메모리 키
targetKeyYes타겟 메모리 키
relationTypeYes관계 유형 (related_to, depends_on, implements, extends, uses)
strengthNo관계 강도 (0.0 ~ 1.0, 기본값: 1.0)
bidirectionalNo양방향 관계 여부 (기본값: false)

Implementation Reference

  • The primary handler function for the 'link_memories' tool. It parses arguments, verifies source and target memories exist, calls MemoryManager.linkMemories to create the relationship (and bidirectional if requested), and returns a formatted success or error message.
    export async function linkMemories(args: LinkMemoriesArgs): Promise<ToolResult> {
      try {
        const { sourceKey, targetKey, relationType, strength = 1.0, bidirectional = false } = args;
        const memoryManager = MemoryManager.getInstance();
    
        // Verify both memories exist
        const sourceMemory = memoryManager.recall(sourceKey);
        const targetMemory = memoryManager.recall(targetKey);
    
        if (!sourceMemory) {
          return {
            content: [{
              type: 'text',
              text: `✗ 소스 메모리를 찾을 수 없습니다: ${sourceKey}`
            }]
          };
        }
    
        if (!targetMemory) {
          return {
            content: [{
              type: 'text',
              text: `✗ 타겟 메모리를 찾을 수 없습니다: ${targetKey}`
            }]
          };
        }
    
        // Create the link
        const success = memoryManager.linkMemories(sourceKey, targetKey, relationType, strength);
    
        if (!success) {
          return {
            content: [{
              type: 'text',
              text: `✗ 관계 연결에 실패했습니다`
            }]
          };
        }
    
        // Create bidirectional link if requested
        if (bidirectional) {
          memoryManager.linkMemories(targetKey, sourceKey, relationType, strength);
        }
    
        const result = `✓ 메모리 관계가 연결되었습니다
    
    **소스**: ${sourceKey}
    **타겟**: ${targetKey}
    **관계 유형**: ${relationType}
    **강도**: ${strength}
    **양방향**: ${bidirectional ? '예' : '아니오'}
    
    이제 get_memory_graph로 관계를 시각화할 수 있습니다.`;
    
        return {
          content: [{
            type: 'text',
            text: result
          }]
        };
      } catch (error) {
        return {
          content: [{
            type: 'text',
            text: `✗ 오류: ${error instanceof Error ? error.message : '알 수 없는 오류'}`
          }]
        };
      }
    }
  • ToolDefinition object defining the 'link_memories' tool, including name, description, inputSchema with properties for sourceKey, targetKey, relationType, strength, bidirectional, and annotations.
    export const linkMemoriesDefinition: ToolDefinition = {
      name: 'link_memories',
      description: `메모리 간 관계를 연결합니다 (지식 그래프).
    
    키워드: 연결해, 관계 설정, 링크, connect memories, link, relate
    
    사용 예시:
    - "project-architecture와 design-patterns를 연결해"
    - "이 두 메모리를 related_to로 링크해"`,
      inputSchema: {
        type: 'object',
        properties: {
          sourceKey: {
            type: 'string',
            description: '소스 메모리 키'
          },
          targetKey: {
            type: 'string',
            description: '타겟 메모리 키'
          },
          relationType: {
            type: 'string',
            description: '관계 유형 (related_to, depends_on, implements, extends, uses)',
            enum: ['related_to', 'depends_on', 'implements', 'extends', 'uses', 'references', 'part_of']
          },
          strength: {
            type: 'number',
            description: '관계 강도 (0.0 ~ 1.0, 기본값: 1.0)',
            minimum: 0,
            maximum: 1
          },
          bidirectional: {
            type: 'boolean',
            description: '양방향 관계 여부 (기본값: false)'
          }
        },
        required: ['sourceKey', 'targetKey', 'relationType']
      },
      annotations: {
        title: 'Link Memories',
        audience: ['user', 'assistant'],
        readOnlyHint: false,
        destructiveHint: false,
        idempotentHint: true,
        openWorldHint: false
      }
    };
  • src/index.ts:169-169 (registration)
    Registration of the linkMemories handler function in the toolHandlers object, used for dynamic dispatch in CallToolRequestSchema.
    'link_memories': linkMemories,
  • src/index.ts:102-102 (registration)
    Inclusion of linkMemoriesDefinition in the tools array, used for ListToolsRequestSchema to expose the tool schema.
    linkMemoriesDefinition,
  • Core MemoryManager.linkMemories method that inserts or updates the relationship record in the memory_relations SQLite table, called by the tool handler.
    public linkMemories(
      sourceKey: string,
      targetKey: string,
      relationType: string,
      strength: number = 1.0,
      metadata?: Record<string, any>
    ): boolean {
      const timestamp = new Date().toISOString();
      const metadataJson = metadata ? JSON.stringify(metadata) : null;
    
      try {
        const stmt = this.db.prepare(`
          INSERT OR REPLACE INTO memory_relations
          (sourceKey, targetKey, relationType, strength, metadata, timestamp)
          VALUES (?, ?, ?, ?, ?, ?)
        `);
        stmt.run(sourceKey, targetKey, relationType, strength, metadataJson, timestamp);
        return true;
      } catch (error) {
        return false;
      }
    }

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/su-record/hi-ai'

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