知识图谱管理服务器

一个基于TypeScript实现的MCP服务器,用于管理实体和关系的知识图谱,提供实体管理、关系跟踪、时间观察记录和强大搜索功能。

  • by YUChoe
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 YUChoe/knowledge-graph-mcp-server

使用说明

知识图谱MCP服务器

韩语 | 英语


英语

用TypeScript实现的MCP(模型上下文协议)服务器,用于管理具有实体和关系的知识图。跟踪实体之间的关系,记录随时间的观察结果,并提供强大的搜索功能。

主要特点

  • 实体管理:创建、检索和删除具有名称、类型和观察值的实体
  • 关系管理:创建和删除实体之间的方向关系
  • 观测系统:添加和删除对实体的基于时间的观察
  • 搜索功能:按名称、类型或观察值搜索实体
  • 坚持:通过JSON文件进行永久数据存储
  • 并发控制:安全并发操作处理
  • MCP协议:符合标准MCP协议

用法

MCP客户端配置

将服务器添加到Kiro或其他MCP客户端配置文件中:

{
  "mcpServers": {
    "knowledge-graph": {
      "command": "npx",
      "args": [
        "-y",
        "github:YUChoe/knowledge-graph-mcp-server"
      ]
    }
  }
}

要指定项目路径,请执行以下操作:

{
  "mcpServers": {
    "knowledge-graph": {
      "command": "npx",
      "args": [
        "-y",
        "github:YUChoe/knowledge-graph-mcp-server",
        "C:\\Users\\user\\src\\projectdir"
      ]
    }
  }
}

存储位置

  • 指定项目路径: <project-path>/knowledge-graph.json
  • 未指定路径: ~/knowledge-graph.json (用户主目录)

API 文档

服务器提供9个MCP工具:

1.create_entities

创建新实体。

参数:

{
  entities: Array<{
    name: string;           // Unique entity name
    entityType: string;     // Entity type
    observations: string[]; // Initial observations
  }>
}

例子:

{
  "entities": [
    {
      "name": "TypeScript",
      "entityType": "programming-language",
      "observations": [
        "Provides static type system",
        "Superset of JavaScript"
      ]
    }
  ]
}

2.创建关系

创建实体之间的关系。

参数:

{
  relations: Array<{
    from: string;          // Source entity name
    to: string;            // Target entity name
    relationType: string;  // Relation type (active voice)
  }>
}

3.附加观察

将观察结果添加到现有实体中。

参数:

{
  observations: Array<{
    entityName: string;  // Entity name
    contents: string[];  // Observations to add
  }>
}

4.删除内容

删除实体和所有关联关系。

参数:

{
  entityNames: string[]  // Array of entity names to delete
}

5.删除观察

从实体中删除具体观察结果。

参数:

{
  deletions: Array<{
    entityName: string;     // Entity name
    observations: string[]; // Observations to delete
  }>
}

6.删除相关内容

删除特定关系。

参数:

{
  relations: Array<{
    from: string;
    to: string;
    relationType: string;
  }>
}

7.读图

阅读整个知识图谱。

参数: 无

8.搜索节点

按名称、类型或观察值搜索实体。

参数:

{
  query: string  // Search query string
}

9.开放节点

按名称检索特定实体。

参数:

{
  names: string[]  // Array of entity names to retrieve
}

错误处理

所有错误都会返回英文和韩文消息:

Error: Entity with name "TypeScript" already exists
"TypeScript" 이름을 가진 엔티티가 이미 존재합니다

常见错误类型

  • 重复实体:同名实体已存在
  • 未找到实体:找不到引用的实体
  • 无效参数:缺少必需的参数或类型不匹配
  • 文件系统错误:存储文件读/写失败

发展

运行测试

# Run all tests
npm test

# Test watch mode
npm run test:watch

项目结构

src/
├── types.ts                    # Type definitions
├── graph-storage.ts            # Storage layer
├── knowledge-graph-manager.ts  # Business logic
├── mcp-server.ts              # MCP server implementation
└── bin/
    └── index.ts               # CLI entry point

tests/
├── unit/                      # Unit tests
├── property/                  # Property-based tests
└── integration/               # Integration tests

测试策略

该项目采用双重测试方法:

  • 单元测试:验证具体示例和边缘案例
  • 基于属性的测试:使用快速检查验证通用属性

许可证

麻省理工学院

贡献

欢迎问题和拉取请求。


韩语

用TypeScript实现的模型上下文协议(MCP)服务器,管理由实体和关系组成的知识图。跟踪实体之间的关系,记录观察时间,并提供强大的搜索功能。

主要功能

  • 实体管理:创建、查询、删除实体,包括名称、类型和观察
  • 关系管理:创建和删除图元之间的定向关系
  • 观察系统:添加和删除实体的逐小时观察
  • 搜索功能:通过名称、类型和观察内容搜索实体
  • 永久性:通过JSON文件永久存储数据
  • 并发控制:安全的并发操作处理
  • MCP协议:符合标准MCP协议

使用方法

MCP客户端设置

将服务器添加到Kiro或其他MCP客户端的配置文件:

{
  "mcpServers": {
    "knowledge-graph": {
      "command": "npx",
      "args": [
        "-y",
        "github:YUChoe/knowledge-graph-mcp-server"
      ]
    }
  }
}

要指定特定项目路径,请:

{
  "mcpServers": {
    "knowledge-graph": {
      "command": "npx",
      "args": [
        "-y",
        "github:YUChoe/knowledge-graph-mcp-server",
        "C:\\Users\\user\\src\\projectdir"
      ]
    }
  }
}

存储位置

  • 指定项目路径时: <project-path>/knowledge-graph.json
  • 未指定路径: ~/knowledge-graph.json (用户主目录)

API文档

服务器提供9种MCP工具:

1.create_entities

创建新图元。

参数:

{
  entities: Array<{
    name: string;           // 엔티티의 고유 이름
    entityType: string;     // 엔티티 타입
    observations: string[]; // 초기 관찰 내용
  }>
}

示例:

{
  "entities": [
    {
      "name": "TypeScript",
      "entityType": "programming-language",
      "observations": [
        "정적 타입 시스템을 제공합니다",
        "JavaScript의 상위 집합입니다"
      ]
    }
  ]
}

回复:

[
  {
    "name": "TypeScript",
    "entityType": "programming-language",
    "observations": [
      "정적 타입 시스템을 제공합니다",
      "JavaScript의 상위 집합입니다"
    ]
  }
]

2.创建关系

创建图元之间的关系。

参数:

{
  relations: Array<{
    from: string;          // 시작 엔티티 이름
    to: string;            // 종료 엔티티 이름
    relationType: string;  // 관계 타입 (능동태)
  }>
}

示例:

{
  "relations": [
    {
      "from": "TypeScript",
      "to": "JavaScript",
      "relationType": "compiles-to"
    }
  ]
}

回复:

[
  {
    "from": "TypeScript",
    "to": "JavaScript",
    "relationType": "compiles-to"
  }
]

3.附加观察

向现有图元添加观察。

参数:

{
  observations: Array<{
    entityName: string;  // 엔티티 이름
    contents: string[];  // 추가할 관찰 내용
  }>
}

示例:

{
  "observations": [
    {
      "entityName": "TypeScript",
      "contents": [
        "Microsoft에서 개발했습니다",
        "2012년에 처음 출시되었습니다"
      ]
    }
  ]
}

4.删除内容

删除与实体相关的所有关系。

参数:

{
  entityNames: string[]  // 삭제할 엔티티 이름 배열
}

示例:

{
  "entityNames": ["TypeScript"]
}

5.删除观察

从实体中删除特定观察。

参数:

{
  deletions: Array<{
    entityName: string;     // 엔티티 이름
    observations: string[]; // 삭제할 관찰 내용
  }>
}

示例:

{
  "deletions": [
    {
      "entityName": "TypeScript",
      "observations": ["2012년에 처음 출시되었습니다"]
    }
  ]
}

6.删除相关内容

删除特定关系。

参数:

{
  relations: Array<{
    from: string;
    to: string;
    relationType: string;
  }>
}

示例:

{
  "relations": [
    {
      "from": "TypeScript",
      "to": "JavaScript",
      "relationType": "compiles-to"
    }
  ]
}

7.读图

查看整个知识图。

参数: 无

回复:

{
  "entities": [
    {
      "name": "TypeScript",
      "entityType": "programming-language",
      "observations": ["정적 타입 시스템을 제공합니다"]
    }
  ],
  "relations": [
    {
      "from": "TypeScript",
      "to": "JavaScript",
      "relationType": "compiles-to"
    }
  ]
}

8.搜索节点

按名称、类型和观察内容搜索实体。

参数:

{
  query: string  // 검색 쿼리 문자열
}

示例:

{
  "query": "typescript"
}

回复:

[
  {
    "name": "TypeScript",
    "entityType": "programming-language",
    "observations": ["정적 타입 시스템을 제공합니다"]
  }
]

9.开放节点

按名称查询特定实体。

参数:

{
  names: string[]  // 조회할 엔티티 이름 배열
}

示例:

{
  "names": ["TypeScript", "JavaScript"]
}

回复:

[
  {
    "name": "TypeScript",
    "entityType": "programming-language",
    "observations": ["정적 타입 시스템을 제공합니다"]
  },
  {
    "name": "JavaScript",
    "entityType": "programming-language",
    "observations": ["동적 타입 언어입니다"]
  }
]

错误处理

所有错误都附带英文信息和韩语说明:

Error: Entity with name "TypeScript" already exists
"TypeScript" 이름을 가진 엔티티가 이미 존재합니다

主要错误类型

  • 重复图元:同名实体已存在
  • 无实体:找不到引用的图元
  • 无效参数:缺少必需参数或类型不匹配
  • 文件系统错误:无法读取/写入保存文件

开发

运行测试

# 모든 테스트 실행
npm test

# 테스트 watch 모드
npm run test:watch

项目结构

src/
├── types.ts                    # 타입 정의
├── graph-storage.ts            # 저장소 계층
├── knowledge-graph-manager.ts  # 비즈니스 로직
├── mcp-server.ts              # MCP 서버 구현
└── bin/
    └── index.ts               # CLI 진입점

tests/
├── unit/                      # 단위 테스트
├── property/                  # 속성 기반 테스트
└── integration/               # 통합 테스트

测试策略

项目使用双重测试方法:

  • 测试单位:验证特定示例和Edge案例
  • 基于属性的测试:使用fast-check验证通用属性

许可证

麻省理工学院

贡献

欢迎发布和完整请求。