Skip to main content
Glama
jihoho12
by jihoho12
README.md
# Knowledge MCP
Air 프레임워크(https://docs.airmcp.dev/) 로 만든
배운 CS 지식을 **그래프 구조**로 자동 정리·병합하는 MCP 서버입니다.

Claude Desktop에서 자연어로 지식을 말하면, 핵심 개념(Entity)과 관계(Relation)를 추출해서 SQLite 기반 지식 그래프에 저장합니다. 같은 개념이 다시 나오면 기존 노드에 병합합니다.

## 해결하는 문제

- **지식 파편화**: 같은 개념에 대해 시차를 두고 배운 정보가 하나의 노드에 누적
- **컨텍스트 비대화**: 전체 대화를 넘기지 않고, 관련 노드만 꺼내서 토큰 절약
- **할루시네이션 방지**: 정제된 지식 베이스를 기반으로 LLM 답변 품질 향상

## 아키텍처

```
사용자 → Claude(Entity/Relation 추출) → MCP(저장) → SQLite(WAL 모드)
```

MCP 내부에 별도 LLM이 없습니다. Claude가 추출과 판단을, MCP가 저장과 조회를 담당합니다.

## 도구

| 도구 | 설명 |
|------|------|
| `ingest_knowledge` | Entity/Relation JSON을 받아 그래프에 upsert |
| `list_nodes` | 키워드 검색, 카테고리 필터, 페이지네이션 |
| `merge_nodes` | 중복 노드 병합 (alias 이전, edge 중복 처리) |
| `update_node` | 노드 속성 직접 수정 |
| `delete_node` | 노드 soft delete (cascade 옵션) |
| `delete_edge` | 관계 soft delete (ID 또는 조건) |

## 설치

```bash
git clone https://github.com/jihoho12/MyKnowledgeMCP.git
cd MyKnowledgeMCP
uv sync
```

## Claude Desktop 연동

`claude_desktop_config.json`에 추가:

```json
{
  "mcpServers": {
    "knowledge": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/MyKnowledgeMCP", "python", "-m", "knowledge_mcp.server"]
    }
  }
}
```

## 사용 예시

Claude Desktop에서 자연어로:

```
"HTTP는 TCP 위에서 동작하는 애플리케이션 계층 프로토콜이야. 정리해줘."
→ Claude가 Entity/Relation 추출 → ingest_knowledge 호출

"네트워크 관련 지식 보여줘"
→ list_nodes(category="network")

"'서버'랑 'Server' 같은 개념이니까 합쳐줘"
→ merge_nodes(node_a="서버", node_b="Server")
```

## 기술 스택

| 구성 요소 | 선택 |
|-----------|------|
| MCP 서버 | Python + FastMCP |
| 저장소 | SQLite (WAL 모드) |
| 패키지 관리 | uv |
| Entity 추출 | Claude (대화 중인 LLM) |

## 설정

`config.toml`에서 카테고리 목록, DB 경로, summary 통합 임계값을 변경할 수 있습니다.

```toml
[knowledge]
categories = ["general", "network", "os", "database", "web", "security", "language", "algorithm", "architecture", "devops"]
summary_consolidation_threshold = 500
```

## 테스트

48개 테스트 전체 통과 (기능 28 + 고급 20)

- 도구별 정상/에러 경로
- 동시성 (WAL 멀티스레드)
- 대량 데이터 성능 (500 노드)
- 데이터 무결성 (SQL injection, 특수문자, 외래키)
- 복구 (DB 손상, 백업/복원)

## 라이선스

MIT

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation (delete node, delete edge, ingest, list, merge, update) with clear boundaries. No two tools overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., delete_edge, list_nodes). No mixing of conventions.

Tool Count5/5

6 tools is well-scoped for a knowledge graph server, covering creation, deletion, update, list, and merge without being too sparse or too heavy.

Completeness3/5

Basic CRUD for nodes is covered, but edges lack update and list operations. There is no dedicated get tool for individual nodes or edges, which may hinder agents.