Skip to main content
Glama
dbsxortime

jobs-tools-knowledgebase

by dbsxortime
README.md
# Jobs-tools-knowledgeBase

MongoDB Atlas 기반 Notion 스타일 지식베이스 관리 MCP(Model Context Protocol) 도구입니다.

## 🎯 기능

- **사용자 워크스페이스 격리**: 고유 키로 데이터 분리 보안
- **프로젝트 관리**: 여러 프로젝트 생성 및 관리
- **페이지 CRUD**: 마크다운 형식의 페이지 생성/수정/삭제
- **트리 구조**: Notion처럼 부모-자식 계층 구조 지원
- **검색 기능**: 제목과 본문에서 텍스트 검색
- **MongoDB Atlas 무료 티어**: 클라우드 기반, 무료로 사용 가능

## 📦 설치 및 설정

### 1단계: MongoDB Atlas 설정

1. [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) 무료 계정 생성
2. 무료 클러스터 생성 (M0 Sandbox)
3. Database User 생성
4. Network Access에서 현재 IP 추가 (또는 `0.0.0.0/0` 모든 IP 허용)
5. 연결 문자열 복사:
   ```
   mongodb+srv://<username>:<password>@<cluster>.mongodb.net/?retryWrites=true&w=majority
   ```

### 2단계: 환경 변수 설정

프로젝트 루트에 `.env` 파일 생성:

```bash
# User Key (처음에는 비워둠 - 도구가 생성해줍니다)
JOBS_TOOLS_USER_KEY=

# MongoDB Atlas 연결 정보
MONGODB_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/?retryWrites=true&w=majority
MONGODB_DB=jobs_tools_knowledge
```

### 3단계: MCP 설정 파일에 추가

사용 중인 MCP 클라이언트의 설정 파일 또는 프로젝트 루트 `mcp.json`에 다음을 추가하세요:

**macOS (예시)**:
`~/Library/Application Support/YourClient/config.json`

```json
{
  "mcpServers": {
    "knowledgeBase": {
      "command": "npx",
      "args": ["-y", "jobs-tools-knowledgebase"],
      "env": {
        "JOBS_TOOLS_USER_KEY": "",
        "MONGODB_URI": "mongodb+srv://...",
        "MONGODB_DB": "jobs_tools_knowledge"
      }
    }
  }
}
```

**Windows** (예시):
`%APPDATA%\\YourClient\\config.json`

```json
{
  "mcpServers": {
    "knowledgeBase": {
      "command": "npx.cmd",
      "args": ["-y", "jobs-tools-knowledgebase"],
      "env": {
        "JOBS_TOOLS_USER_KEY": "",
        "MONGODB_URI": "mongodb+srv://...",
        "MONGODB_DB": "jobs_tools_knowledge"
      }
    }
  }
}
```

### 4단계: 초기 설정

MCP 클라이언트에서 아래 문구로 초기화하세요:

```
업무 세팅하자
```

→ 사용자 키 생성 → 환경 변수에 저장 → 클라이언트 재시작

```
업무 시작하자
```

→ MongoDB 연결 확인
→ 프로젝트 및 페이지 사용 시작!

#### 처음 실행 시 자동 응답 예시 (env에 키가 없을 때)

처음 채팅을 시작하면 MCP가 `JOBS_TOOLS_USER_KEY` 여부를 확인합니다. 없으면 아래 형식으로 키와 안내 메시지를 반환합니다:

```json
{
  "userKey": "random-0ser-id",
  "message": "새 사용자 키를 발급했습니다. MCP 설정(env)의 JOBS_TOOLS_USER_KEY에 저장한 뒤, 클라이언트를 재시작하고 다시 대화를 시작해주세요."
}
```

OS별 env 저장 위치는 위의 MCP 설정 파일 예시(macOS/Windows)를 참고하세요. 재시작 후에는 키가 자동 인식되며, 이어서 MongoDB 연결 점검과 프로젝트 작업을 진행합니다.

## 🚀 사용법

### 초기 설정

```
업무 세팅하자
```

도구가 사용자 키를 생성하고 반환합니다. 이 키를 MCP 설정의 `JOBS_TOOLS_USER_KEY`에 저장하세요.

### MongoDB 연결 확인

```
MongoDB 연결 상태 확인해줘
```

### 프로젝트 생성

```
"개인 노트" 프로젝트 만들어줘
```

### 프로젝트 목록 조회

```
내 프로젝트 목록 보여줘
```

### 페이지 생성

```
"개인 노트" 프로젝트에 "회의록" 페이지 만들어줘
내용: # 2025-01-15 팀 미팅
- 참석자: A, B, C
- 안건: 프로젝트 계획
```

### 페이지 조회

```
프로젝트 [projectId]의 페이지 [pageId] 내용 보여줘
```

### 트리 구조 조회

```
"개인 노트" 프로젝트의 페이지 구조 보여줘
```

### 페이지 이동

```
페이지 [pageId]를 부모 [parentId] 아래로 이동해줘
```

### 페이지 검색

```
"개인 노트" 프로젝트에서 "회의록" 검색해줘
```

## 📋 API

### Jobs-tools-knowledgeBase-getOrCreateUserKey

사용자 키 가져오기 또는 생성

**입력:** 없음

**출력:**

- `userKey`: 사용자 고유 키
- `hint`: 안내 메시지

### Jobs-tools-knowledgeBase-checkMongo

MongoDB 연결 상태 확인

**입력:** 없음

**출력:**

- `ok`: 연결 성공 여부
- `message`: 상태 메시지

### Jobs-tools-knowledgeBase-createProject

프로젝트 생성

**입력:**

- `name` (string, 필수): 프로젝트 이름
- `description` (string, 선택): 프로젝트 설명

**출력:**

- `projectId`: 생성된 프로젝트 ID

### Jobs-tools-knowledgeBase-listProjects

프로젝트 목록 조회

**입력:** 없음

**출력:**

- `projects`: 프로젝트 배열
  - `projectId`: 프로젝트 ID
  - `name`: 프로젝트 이름
  - `description`: 프로젝트 설명
  - `createdAt`: 생성 시간

### Jobs-tools-knowledgeBase-upsertPage

페이지 생성 또는 갱신

**입력:**

- `projectId` (string, 필수): 프로젝트 ID
- `pageId` (string, 선택): 페이지 ID (갱신 시 필요)
- `title` (string, 필수): 페이지 제목
- `content` (string, 필수): 페이지 내용 (마크다운)
- `parentId` (string, 선택): 부모 페이지 ID
- `order` (number, 선택): 정렬 순서
- `tags` (string[], 선택): 태그 배열

**출력:**

- `pageId`: 생성/갱신된 페이지 ID

### Jobs-tools-knowledgeBase-getPage

페이지 조회

**입력:**

- `projectId` (string, 필수): 프로젝트 ID
- `pageId` (string, 필수): 페이지 ID

**출력:**

- `page`: 페이지 정보
  - `pageId`: 페이지 ID
  - `title`: 제목
  - `content`: 내용
  - `parentId`: 부모 페이지 ID
  - `order`: 정렬 순서
  - `tags`: 태그 배열
  - `createdAt`: 생성 시간
  - `updatedAt`: 수정 시간

### Jobs-tools-knowledgeBase-deletePage

페이지 삭제

**입력:**

- `projectId` (string, 필수): 프로젝트 ID
- `pageId` (string, 필수): 페이지 ID

**출력:**

- `deleted`: 삭제 성공 여부

### Jobs-tools-knowledgeBase-getTree

페이지 트리 구조 조회

**입력:**

- `projectId` (string, 필수): 프로젝트 ID

**출력:**

- `tree`: 트리 구조 배열 (재귀적)
  - `pageId`: 페이지 ID
  - `title`: 제목
  - `order`: 정렬 순서
  - `children`: 자식 페이지 배열

### Jobs-tools-knowledgeBase-movePage

페이지 이동

**입력:**

- `projectId` (string, 필수): 프로젝트 ID
- `pageId` (string, 필수): 페이지 ID
- `newParentId` (string, 필수): 새 부모 페이지 ID (루트는 null)
- `newOrder` (number, 선택): 새 정렬 순서

**출력:**

- `moved`: 이동 성공 여부

### Jobs-tools-knowledgeBase-search

페이지 검색 (제목 및 본문)

**입력:**

- `projectId` (string, 필수): 프로젝트 ID
- `query` (string, 필수): 검색어

**출력:**

- `results`: 검색 결과 배열
  - `pageId`: 페이지 ID
  - `title`: 페이지 제목
  - `snippet`: 검색어 주변 텍스트 스니펫

## 🔧 개발자 정보

### 기술 스택

- **언어**: JavaScript (ES Modules)
- **프레임워크**: Model Context Protocol SDK
- **데이터베이스**: MongoDB Atlas
- **스키마 검증**: Zod

### 로컬 개발

```bash
# 저장소 클론
git clone [repository-url]
cd Jobs-tools-knowledgeBase

# 의존성 설치
npm install

# 환경 변수 설정
cp env.example .env
# .env 파일 수정

# 개발 모드 실행
npm run dev
```

### Lint

```bash
npm run lint
npm run lint:fix
```

## 📄 라이선스

MIT License

## ❓ 문제 해결

### 도구가 로드되지 않는 경우

1. MCP 설정 파일의 JSON 문법이 올바른지 확인
2. MCP 클라이언트를 완전히 재시작
3. 터미널에서 `npx -y jobs-tools-knowledgebase` 명령이 작동하는지 확인

### MongoDB 연결 실패

1. MongoDB Atlas에서 IP가 허용되었는지 확인
2. 연결 문자열의 사용자명/비밀번호 확인
3. 네트워크 방화벽 설정 확인

### 사용자 키 관련 오류

1. `JOBS_TOOLS_USER_KEY`가 환경 변수에 설정되었는지 확인
2. 최초 실행 시 `getOrCreateUserKey` 도구로 키 생성
3. 생성된 키를 MCP 설정의 env에 저장 후 재시작

## 🤝 기여

이슈나 풀 리퀘스트를 환영합니다!

## 📞 연락처

- Author: JobsTools
- Repository: [GitHub 링크]

TDQS

B3/5.0

Scored across 30 tools

Disambiguation2/5

Multiple tools overlap significantly, especially createGuideNote vs createZettelkastenNote and the lifecycle trio of promoteToLongTerm, archiveNote, and autoManageNotes. User context deletion tools (deleteUserContext, deleteUserContextItem, resetUserProfile) also have unclear boundaries.

Naming Consistency3/5

The function parts follow a camelCase verb_noun pattern, but there are notable deviations like 'search' (vague), 'checkMongo' (system check), and 'getTree' (incomplete object). The long server-name prefix is consistent, but the overall naming feels cluttered and somewhat inconsistent.

Tool Count2/5

30 tools is beyond the 'heavy' threshold (25+). The server attempts to cover three distinct domains (pages/projects, Zettelkasten, user profile), which expands the surface unnecessarily. This count risks overwhelming agents with too many choices.

Completeness3/5

The tool set covers many CRUD operations for pages, projects, and user context, plus advanced Zettelkasten features. However, there is no direct get/update Zettelkasten note tool (only network view and search), and no get/list notes for the general knowledge base, leaving notable gaps in the basic note lifecycle.

Maintenance

ActivityInactive
ResponsivenessNo issues