@ainote/mcp 1.3.1 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README-ko.md +374 -374
- package/README.md +800 -777
- package/index.js +61 -56
- package/lib/auth/device-flow.js +285 -274
- package/lib/auth/mcp-key.js +40 -40
- package/lib/auth/oauth.js +18 -18
- package/lib/auth/refresh.js +78 -78
- package/lib/auth/strategy-factory.js +31 -31
- package/lib/auth/token-store.js +302 -286
- package/lib/cli/call.js +211 -0
- package/lib/cli/login.js +238 -238
- package/lib/cli/logout.js +39 -39
- package/lib/cli/signup.js +118 -118
- package/lib/cli/whoami.js +77 -77
- package/lib/core/api-client.js +1 -1
- package/lib/core/config-manager.js +106 -106
- package/lib/core/config.js +1 -1
- package/lib/core/mcp-server.js +2 -2
- package/lib/core/server-factory.js +82 -82
- package/lib/core/tool-registry.js +31 -31
- package/lib/tools/chatgpt-tools.js +93 -93
- package/lib/tools/dev-doc-tools.js +643 -643
- package/lib/tools/index.js +5 -5
- package/lib/tools/internal/claude-scanner.js +150 -150
- package/lib/tools/internal/encryption.js +88 -88
- package/lib/tools/internal/formatters.js +80 -80
- package/lib/tools/internal/keychain.js +98 -98
- package/lib/tools/internal/path-mapper.js +221 -221
- package/lib/tools/onboarding-tools.js +124 -124
- package/lib/tools/shared-tools.js +280 -280
- package/lib/utils/api-client.js +152 -152
- package/package.json +101 -101
- package/server.js +99 -99
package/README-ko.md
CHANGED
|
@@ -1,375 +1,375 @@
|
|
|
1
|
-
# AI Simple Note - 모델 컨텍스트 프로토콜 (MCP)
|
|
2
|
-
|
|
3
|
-
AI Simple Note의 모델 컨텍스트 프로토콜(MCP)은 외부 AI가 사용자의 개인적인 맥락을 이해하고, 이를 바탕으로 고도로 맞춤화된 정보를 제공할 수 있도록 설계된 혁신적인 프로토콜입니다. 이 저장소는 MCP의 기술적 구현 및 관련 문서를 제공합니다.
|
|
4
|
-
|
|
5
|
-
## 핵심 비전: 개인화된 AI 응답
|
|
6
|
-
|
|
7
|
-
MCP의 궁극적인 목표는 외부 AI가 사용자의 **개인적인 맥락(Context)**을 이해하고, 이를 바탕으로 고도로 맞춤화된 정보를 제공하는 것입니다. AI Simple Note에 기록된 사용자의 할 일, 일정, 메모 등은 AI에게 중요한 "기억"으로 작용합니다.
|
|
8
|
-
|
|
9
|
-
**예시 시나리오: "주말 날씨 어때?"**
|
|
10
|
-
|
|
11
|
-
* **AI 도입 이전 (일반적인 검색)**:
|
|
12
|
-
* 사용자가 "주말 날씨"를 검색하면, 주말 전체의 온도, 강수 확률, 습도 등 보편적인 기상 정보를 얻습니다.
|
|
13
|
-
* 사용자는 이 정보 속에서 자신의 계획(예: 테니스)에 맞는 시간대(예: 오전 7시-9시)의 날씨를 **스스로 해석하고 판단**해야 합니다.
|
|
14
|
-
|
|
15
|
-
* **AI Simple Note + MCP 도입 이후 (개인화된 응답)**:
|
|
16
|
-
1. **AI의 맥락 이해**: 외부 AI가 MCP를 통해 사용자의 AI Simple Note 데이터를 조회합니다.
|
|
17
|
-
* `[반복] 매주 토요일 오전 7:00: 테니스 클럽 모임 #운동`
|
|
18
|
-
* `[할일] 이번 주 토요일: 테니스화 구매하기`
|
|
19
|
-
* `[메모] 지난주 테니스: 날이 더워서 힘들었다. 다음엔 꼭 새벽에 쳐야지.`
|
|
20
|
-
2. **AI의 추론**: AI는 이 "기억"들을 바탕으로 "이 사용자는 주말 오전에 주로 테니스를 치는구나"라고 학습합니다.
|
|
21
|
-
3. **개인화된 답변 생성**: 사용자가 "주말 날씨 어때?"라고 질문하면, AI는 다음과 같이 사용자의 숨은 의도에 부합하는 답변을 우선적으로 제공합니다.
|
|
22
|
-
> "주말 오전에 주로 테니스를 치시죠! **이번 주 토요일 오전 7시부터 9시까지는 구름이 조금 끼지만, 기온은 22도로 테니스 치기 아주 좋은 날씨**가 예상됩니다. 비 소식은 없어요.
|
|
23
|
-
>
|
|
24
|
-
> 그 외 시간대에는 토요일 오후부터 소나기 가능성이 있으니 참고하세요. 일요일 오전은 맑지만 바람이 다소 강할 수 있습니다."
|
|
25
|
-
|
|
26
|
-
이처럼 MCP는 단순한 데이터 조회를 넘어, AI가 사용자의 라이프스타일을 이해하고 **진정한 개인 비서** 역할을 수행하게 만드는 핵심적인 다리 역할을 합니다.
|
|
27
|
-
|
|
28
|
-
## MCP 아키텍처 및 데이터 흐름
|
|
29
|
-
|
|
30
|
-
```mermaid
|
|
31
|
-
graph TD
|
|
32
|
-
subgraph 사용자 상호작용
|
|
33
|
-
A[사용자: AI Simple Note 앱에서 MCP 기능 활성화] --> B(AI Simple Note 앱: API 키 발급 요청)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
subgraph AI Simple Note 백엔드
|
|
37
|
-
B --> C{백엔드: API 키 생성 및 전달}
|
|
38
|
-
C --> D[AI Simple Note 앱: API 키 수신]
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
subgraph 외부 AI 서비스
|
|
42
|
-
D --> E[사용자: 발급받은 API 키를 외부 AI 서비스에 등록]
|
|
43
|
-
E --> F(외부 AI 서비스: MCP API 호출)
|
|
44
|
-
F --> G{AI Simple Note 백엔드: 사용자 데이터 요청}
|
|
45
|
-
G --> H[AI Simple Note 백엔드: 사용자 데이터 전달]
|
|
46
|
-
H --> I(외부 AI 서비스: 사용자 데이터 기반 개인화된 답변 생성)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
I --> J[사용자: 개인화된 답변 수신]
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
## MCP 엔드포인트 (예시)
|
|
53
|
-
|
|
54
|
-
Rails API가 MCP Gateway 역할을 수행하며, 외부 AI가 사용자의 데이터를 안전하게 조회하고 상호작용할 수 있도록 설계됩니다.
|
|
55
|
-
|
|
56
|
-
- `GET/POST/PUT/DELETE /api/v1/mcp/tasks` - 할일 CRUD
|
|
57
|
-
- `GET /api/v1/mcp/categories` - 카테고리 조회
|
|
58
|
-
|
|
59
|
-
## 보안 및 개인정보 보호
|
|
60
|
-
|
|
61
|
-
- **사용자 동의**: MCP를 통한 데이터 접근은 오직 사용자의 명시적인 동의 하에 이루어집니다.
|
|
62
|
-
- **데이터 주권**: 사용자의 데이터는 AI Simple Note 앱과 백엔드에 안전하게 저장되며, 외부 AI는 필요한 최소한의 정보에만 접근합니다.
|
|
63
|
-
- **암호화**: 모든 통신은 HTTPS/SSL을 통해 암호화됩니다.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
# AI Note MCP 서버
|
|
68
|
-
|
|
69
|
-
[](https://badge.fury.io/js/%40ainote%2Fmcp-server)
|
|
70
|
-
[](https://opensource.org/licenses/MIT)
|
|
71
|
-
|
|
72
|
-
Claude Desktop을 AI Note 작업 관리 시스템에 연결하는 MCP(Model Context Protocol) 서버입니다. 이 서버를 통해 Claude가 AI Note 작업을 직접 관리할 수 있으며, 자연어 대화를 통해 작업 생성, 수정, 관리가 가능합니다.
|
|
73
|
-
|
|
74
|
-
## 목차
|
|
75
|
-
|
|
76
|
-
- [기능](#기능)
|
|
77
|
-
- [사전 요구사항](#사전-요구사항)
|
|
78
|
-
- [설치](#설치)
|
|
79
|
-
- [설정](#설정)
|
|
80
|
-
- [사용법](#사용법)
|
|
81
|
-
- [사용 가능한 도구](#사용-가능한-도구)
|
|
82
|
-
- [API 참조](#api-참조)
|
|
83
|
-
- [개발](#개발)
|
|
84
|
-
- [문제 해결](#문제-해결)
|
|
85
|
-
- [기여하기](#기여하기)
|
|
86
|
-
- [라이선스](#라이선스)
|
|
87
|
-
|
|
88
|
-
## 기능
|
|
89
|
-
|
|
90
|
-
- 📝 **작업 관리**: Claude Desktop에서 직접 작업 생성, 수정, 삭제, 조회
|
|
91
|
-
- 🏷️ **카테고리 지원**: 카테고리를 통한 작업 구성
|
|
92
|
-
- 🔍 **고급 검색**: 내용, 상태 등을 기준으로 작업 검색
|
|
93
|
-
- ⭐ **우선순위 관리**: 중요한 작업 표시
|
|
94
|
-
- 📅 **마감일 지원**: 작업 마감일 설정 및 관리
|
|
95
|
-
- 🔒 **보안 API 연동**: API 키 인증을 통한 안전한 접근
|
|
96
|
-
|
|
97
|
-
## 사전 요구사항
|
|
98
|
-
|
|
99
|
-
- Node.js >= 16.0.0
|
|
100
|
-
- npm 또는 yarn
|
|
101
|
-
- AI Note API 접근 권한 (API 키 필요)
|
|
102
|
-
- MCP 지원이 활성화된 Claude Desktop
|
|
103
|
-
|
|
104
|
-
## 설치
|
|
105
|
-
|
|
106
|
-
### 옵션 1: npm에서 설치 (권장)
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm install -g @ainote/mcp
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 옵션 2: 소스코드로부터 설치
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
git clone https://github.com/ainote-dev/ainote-mcp.git
|
|
116
|
-
cd ainote-mcp-server
|
|
117
|
-
npm install
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## 업데이트
|
|
121
|
-
|
|
122
|
-
### npm에서 업데이트 (권장)
|
|
123
|
-
|
|
124
|
-
npm을 통해 설치한 경우 최신 버전으로 업데이트:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
npm update -g @ainote/mcp
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
특정 버전을 설치하려면:
|
|
131
|
-
|
|
132
|
-
```bash
|
|
133
|
-
npm install -g @ainote/mcp@1.0.2
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
### 소스코드에서 업데이트
|
|
137
|
-
|
|
138
|
-
소스코드로 설치한 경우:
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
cd ainote-mcp-server
|
|
142
|
-
git pull origin main
|
|
143
|
-
npm install
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
업데이트 후에는 **Claude Desktop을 재시작**하여 새 버전을 로드하세요.
|
|
147
|
-
|
|
148
|
-
## 설정
|
|
149
|
-
|
|
150
|
-
### 1. 환경 변수 설정
|
|
151
|
-
|
|
152
|
-
`.env` 파일을 생성하거나 다음 환경 변수를 설정하세요:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
# 필수
|
|
156
|
-
export AINOTE_API_KEY="여기에-api-키-입력"
|
|
157
|
-
|
|
158
|
-
# 선택사항 (기본값: 프로덕션 URL)
|
|
159
|
-
export AINOTE_API_URL="https://ainote-5muq.onrender.com"
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### 2. Claude Desktop 설정
|
|
163
|
-
|
|
164
|
-
Claude Desktop 설정 파일에 다음 내용을 추가하세요:
|
|
165
|
-
|
|
166
|
-
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
167
|
-
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
168
|
-
|
|
169
|
-
```json
|
|
170
|
-
{
|
|
171
|
-
"mcpServers": {
|
|
172
|
-
"ainote": {
|
|
173
|
-
"command": "npx",
|
|
174
|
-
"args": [
|
|
175
|
-
"-y",
|
|
176
|
-
"@ainote/mcp"
|
|
177
|
-
],
|
|
178
|
-
"env": {
|
|
179
|
-
"AINOTE_API_KEY": "YOUR_API_KEY",
|
|
180
|
-
"AINOTE_API_URL": "https://ainote-5muq.onrender.com"
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
전역 설치된 ainote-mcp를 사용하는 경우:
|
|
188
|
-
|
|
189
|
-
```json
|
|
190
|
-
{
|
|
191
|
-
"mcpServers": {
|
|
192
|
-
"ainote": {
|
|
193
|
-
"command": "ainote-mcp",
|
|
194
|
-
"env": {
|
|
195
|
-
"AINOTE_API_KEY": "YOUR_API_KEY",
|
|
196
|
-
"AINOTE_API_URL": "https://ainote-5muq.onrender.com"
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
### 3. Claude Desktop 재시작
|
|
204
|
-
|
|
205
|
-
설정 후 Claude Desktop을 재시작하여 MCP 서버를 로드하세요.
|
|
206
|
-
|
|
207
|
-
## 사용법
|
|
208
|
-
|
|
209
|
-
설정이 완료되면 Claude를 통해 AI Note 작업과 상호작용할 수 있습니다:
|
|
210
|
-
|
|
211
|
-
### 대화 예시
|
|
212
|
-
|
|
213
|
-
```
|
|
214
|
-
사용자: "내 대기 중인 작업들을 보여줘"
|
|
215
|
-
Claude: AI Note에서 대기 중인 작업들을 가져오겠습니다...
|
|
216
|
-
|
|
217
|
-
사용자: "금요일까지 분기 보고서 검토하는 새 작업을 만들어줘"
|
|
218
|
-
Claude: 금요일을 마감일로 하는 작업을 생성하겠습니다...
|
|
219
|
-
|
|
220
|
-
사용자: "작업 ID 123을 완료로 표시해줘"
|
|
221
|
-
Claude: 해당 작업을 완료로 표시하겠습니다...
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## 사용 가능한 도구
|
|
225
|
-
|
|
226
|
-
### list_tasks
|
|
227
|
-
|
|
228
|
-
필터링 옵션과 함께 AI Note에서 작업 목록을 조회합니다.
|
|
229
|
-
|
|
230
|
-
**매개변수:**
|
|
231
|
-
- `status` (선택사항): 상태별 필터 - "pending" 또는 "completed"
|
|
232
|
-
- `limit` (선택사항): 반환할 최대 작업 수 (기본값: 25, 최대: 500)
|
|
233
|
-
- `search` (선택사항): 작업 내용 검색 키워드
|
|
234
|
-
|
|
235
|
-
### create_task
|
|
236
|
-
|
|
237
|
-
AI Note에 새 작업을 생성합니다.
|
|
238
|
-
|
|
239
|
-
**매개변수:**
|
|
240
|
-
- `content` (필수): 작업 설명
|
|
241
|
-
- `is_important` (선택사항): 중요 표시 (boolean)
|
|
242
|
-
- `due_date` (선택사항): ISO 형식의 마감일
|
|
243
|
-
- `category_id` (선택사항): 할당할 카테고리 ID
|
|
244
|
-
|
|
245
|
-
### update_task
|
|
246
|
-
|
|
247
|
-
기존 작업을 수정합니다.
|
|
248
|
-
|
|
249
|
-
**매개변수:**
|
|
250
|
-
- `id` (필수): 작업 ID
|
|
251
|
-
- `content` (선택사항): 새로운 작업 내용
|
|
252
|
-
- `is_important` (선택사항): 중요 상태 업데이트
|
|
253
|
-
- `completed_at` (선택사항): 완료로 표시 (ISO 형식) 또는 null로 미완료 처리
|
|
254
|
-
|
|
255
|
-
### delete_task
|
|
256
|
-
|
|
257
|
-
작업을 소프트 삭제합니다.
|
|
258
|
-
|
|
259
|
-
**매개변수:**
|
|
260
|
-
- `id` (필수): 삭제할 작업 ID
|
|
261
|
-
|
|
262
|
-
### list_categories
|
|
263
|
-
|
|
264
|
-
사용 가능한 모든 카테고리를 조회합니다.
|
|
265
|
-
|
|
266
|
-
**매개변수:** 없음
|
|
267
|
-
|
|
268
|
-
## API 참조
|
|
269
|
-
|
|
270
|
-
MCP 서버는 다음 엔드포인트를 통해 AI Note API와 통신합니다:
|
|
271
|
-
|
|
272
|
-
- `GET /api/mcp/tasks` - 작업 목록 조회
|
|
273
|
-
- `POST /api/mcp/tasks` - 작업 생성
|
|
274
|
-
- `PUT /api/mcp/tasks/:id` - 작업 수정
|
|
275
|
-
- `DELETE /api/mcp/tasks/:id` - 작업 삭제
|
|
276
|
-
- `GET /api/mcp/categories` - 카테고리 목록 조회
|
|
277
|
-
|
|
278
|
-
모든 요청은 `Authorization` 헤더를 통한 API 키 인증이 필요합니다.
|
|
279
|
-
|
|
280
|
-
## 개발
|
|
281
|
-
|
|
282
|
-
### 로컬에서 실행하기
|
|
283
|
-
|
|
284
|
-
```bash
|
|
285
|
-
# 저장소 클론
|
|
286
|
-
git clone https://github.com/your-username/ainote-mcp-server.git
|
|
287
|
-
cd ainote-mcp-server
|
|
288
|
-
|
|
289
|
-
# 의존성 설치
|
|
290
|
-
npm install
|
|
291
|
-
|
|
292
|
-
# 서버 실행
|
|
293
|
-
npm start
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
### Claude Desktop으로 테스트
|
|
297
|
-
|
|
298
|
-
1. Claude Desktop 설정을 로컬 개발 서버를 가리키도록 업데이트
|
|
299
|
-
2. 테스트를 위한 환경 변수 설정
|
|
300
|
-
3. Claude Desktop 재시작
|
|
301
|
-
4. Claude Desktop 설정에서 MCP 연결 상태 확인
|
|
302
|
-
|
|
303
|
-
### 프로젝트 구조
|
|
304
|
-
|
|
305
|
-
```
|
|
306
|
-
ainote-mcp-server/
|
|
307
|
-
├── index.js # 메인 서버 구현
|
|
308
|
-
├── package.json # 패키지 설정
|
|
309
|
-
├── README.md # 영문 문서
|
|
310
|
-
├── README-ko.md # 한글 문서
|
|
311
|
-
└── LICENSE # MIT 라이선스
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
## 문제 해결
|
|
315
|
-
|
|
316
|
-
### 일반적인 문제
|
|
317
|
-
|
|
318
|
-
1. **"API 키를 찾을 수 없음" 오류**
|
|
319
|
-
- 환경 변수나 Claude 설정에 `AINOTE_API_KEY`가 설정되어 있는지 확인
|
|
320
|
-
- API 키가 유효하고 적절한 권한이 있는지 확인
|
|
321
|
-
|
|
322
|
-
2. **"연결 거부됨" 오류**
|
|
323
|
-
- API URL이 올바른지 확인
|
|
324
|
-
- 네트워크 연결 확인
|
|
325
|
-
- AI Note API 서버가 실행 중인지 확인
|
|
326
|
-
|
|
327
|
-
3. **"도구를 찾을 수 없음" 오류**
|
|
328
|
-
- 설정 변경 후 Claude Desktop 재시작
|
|
329
|
-
- Claude Desktop에서 MCP 서버가 올바르게 설정되었는지 확인
|
|
330
|
-
|
|
331
|
-
4. **작업이 표시되지 않음**
|
|
332
|
-
- API 키 권한 확인
|
|
333
|
-
- 올바른 상태(pending/completed)를 조회하고 있는지 확인
|
|
334
|
-
- 검색 매개변수 사용 시도
|
|
335
|
-
|
|
336
|
-
### 디버그 모드
|
|
337
|
-
|
|
338
|
-
디버그 로깅을 활성화하려면:
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
export DEBUG=mcp:*
|
|
342
|
-
```
|
|
343
|
-
|
|
344
|
-
## 기여하기
|
|
345
|
-
|
|
346
|
-
기여를 환영합니다! 다음 단계를 따라주세요:
|
|
347
|
-
|
|
348
|
-
1. 저장소 포크
|
|
349
|
-
2. 기능 브랜치 생성 (`git checkout -b feature/amazing-feature`)
|
|
350
|
-
3. 변경사항 커밋 (`git commit -m 'Add amazing feature'`)
|
|
351
|
-
4. 브랜치에 푸시 (`git push origin feature/amazing-feature`)
|
|
352
|
-
5. Pull Request 열기
|
|
353
|
-
|
|
354
|
-
### 개발 가이드라인
|
|
355
|
-
|
|
356
|
-
- 기존 코드 스타일 따르기
|
|
357
|
-
- 새 기능에 대한 테스트 추가
|
|
358
|
-
- 필요시 문서 업데이트
|
|
359
|
-
- PR 제출 전 모든 테스트 통과 확인
|
|
360
|
-
|
|
361
|
-
## 라이선스
|
|
362
|
-
|
|
363
|
-
이 프로젝트는 MIT 라이선스 하에 제공됩니다 - 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.
|
|
364
|
-
|
|
365
|
-
## 지원
|
|
366
|
-
|
|
367
|
-
- 📧 이메일: support@ainote.dev
|
|
368
|
-
- 🐛 이슈: [GitHub Issues](https://github.com/your-username/ainote-mcp-server/issues)
|
|
369
|
-
- 💬 Discord: [커뮤니티 참여](https://discord.gg/ainote)
|
|
370
|
-
|
|
371
|
-
## 감사의 말
|
|
372
|
-
|
|
373
|
-
- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)로 제작
|
|
374
|
-
- [AI Note](https://ainote.dev)에서 제공
|
|
1
|
+
# AI Simple Note - 모델 컨텍스트 프로토콜 (MCP)
|
|
2
|
+
|
|
3
|
+
AI Simple Note의 모델 컨텍스트 프로토콜(MCP)은 외부 AI가 사용자의 개인적인 맥락을 이해하고, 이를 바탕으로 고도로 맞춤화된 정보를 제공할 수 있도록 설계된 혁신적인 프로토콜입니다. 이 저장소는 MCP의 기술적 구현 및 관련 문서를 제공합니다.
|
|
4
|
+
|
|
5
|
+
## 핵심 비전: 개인화된 AI 응답
|
|
6
|
+
|
|
7
|
+
MCP의 궁극적인 목표는 외부 AI가 사용자의 **개인적인 맥락(Context)**을 이해하고, 이를 바탕으로 고도로 맞춤화된 정보를 제공하는 것입니다. AI Simple Note에 기록된 사용자의 할 일, 일정, 메모 등은 AI에게 중요한 "기억"으로 작용합니다.
|
|
8
|
+
|
|
9
|
+
**예시 시나리오: "주말 날씨 어때?"**
|
|
10
|
+
|
|
11
|
+
* **AI 도입 이전 (일반적인 검색)**:
|
|
12
|
+
* 사용자가 "주말 날씨"를 검색하면, 주말 전체의 온도, 강수 확률, 습도 등 보편적인 기상 정보를 얻습니다.
|
|
13
|
+
* 사용자는 이 정보 속에서 자신의 계획(예: 테니스)에 맞는 시간대(예: 오전 7시-9시)의 날씨를 **스스로 해석하고 판단**해야 합니다.
|
|
14
|
+
|
|
15
|
+
* **AI Simple Note + MCP 도입 이후 (개인화된 응답)**:
|
|
16
|
+
1. **AI의 맥락 이해**: 외부 AI가 MCP를 통해 사용자의 AI Simple Note 데이터를 조회합니다.
|
|
17
|
+
* `[반복] 매주 토요일 오전 7:00: 테니스 클럽 모임 #운동`
|
|
18
|
+
* `[할일] 이번 주 토요일: 테니스화 구매하기`
|
|
19
|
+
* `[메모] 지난주 테니스: 날이 더워서 힘들었다. 다음엔 꼭 새벽에 쳐야지.`
|
|
20
|
+
2. **AI의 추론**: AI는 이 "기억"들을 바탕으로 "이 사용자는 주말 오전에 주로 테니스를 치는구나"라고 학습합니다.
|
|
21
|
+
3. **개인화된 답변 생성**: 사용자가 "주말 날씨 어때?"라고 질문하면, AI는 다음과 같이 사용자의 숨은 의도에 부합하는 답변을 우선적으로 제공합니다.
|
|
22
|
+
> "주말 오전에 주로 테니스를 치시죠! **이번 주 토요일 오전 7시부터 9시까지는 구름이 조금 끼지만, 기온은 22도로 테니스 치기 아주 좋은 날씨**가 예상됩니다. 비 소식은 없어요.
|
|
23
|
+
>
|
|
24
|
+
> 그 외 시간대에는 토요일 오후부터 소나기 가능성이 있으니 참고하세요. 일요일 오전은 맑지만 바람이 다소 강할 수 있습니다."
|
|
25
|
+
|
|
26
|
+
이처럼 MCP는 단순한 데이터 조회를 넘어, AI가 사용자의 라이프스타일을 이해하고 **진정한 개인 비서** 역할을 수행하게 만드는 핵심적인 다리 역할을 합니다.
|
|
27
|
+
|
|
28
|
+
## MCP 아키텍처 및 데이터 흐름
|
|
29
|
+
|
|
30
|
+
```mermaid
|
|
31
|
+
graph TD
|
|
32
|
+
subgraph 사용자 상호작용
|
|
33
|
+
A[사용자: AI Simple Note 앱에서 MCP 기능 활성화] --> B(AI Simple Note 앱: API 키 발급 요청)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
subgraph AI Simple Note 백엔드
|
|
37
|
+
B --> C{백엔드: API 키 생성 및 전달}
|
|
38
|
+
C --> D[AI Simple Note 앱: API 키 수신]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
subgraph 외부 AI 서비스
|
|
42
|
+
D --> E[사용자: 발급받은 API 키를 외부 AI 서비스에 등록]
|
|
43
|
+
E --> F(외부 AI 서비스: MCP API 호출)
|
|
44
|
+
F --> G{AI Simple Note 백엔드: 사용자 데이터 요청}
|
|
45
|
+
G --> H[AI Simple Note 백엔드: 사용자 데이터 전달]
|
|
46
|
+
H --> I(외부 AI 서비스: 사용자 데이터 기반 개인화된 답변 생성)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
I --> J[사용자: 개인화된 답변 수신]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## MCP 엔드포인트 (예시)
|
|
53
|
+
|
|
54
|
+
Rails API가 MCP Gateway 역할을 수행하며, 외부 AI가 사용자의 데이터를 안전하게 조회하고 상호작용할 수 있도록 설계됩니다.
|
|
55
|
+
|
|
56
|
+
- `GET/POST/PUT/DELETE /api/v1/mcp/tasks` - 할일 CRUD
|
|
57
|
+
- `GET /api/v1/mcp/categories` - 카테고리 조회
|
|
58
|
+
|
|
59
|
+
## 보안 및 개인정보 보호
|
|
60
|
+
|
|
61
|
+
- **사용자 동의**: MCP를 통한 데이터 접근은 오직 사용자의 명시적인 동의 하에 이루어집니다.
|
|
62
|
+
- **데이터 주권**: 사용자의 데이터는 AI Simple Note 앱과 백엔드에 안전하게 저장되며, 외부 AI는 필요한 최소한의 정보에만 접근합니다.
|
|
63
|
+
- **암호화**: 모든 통신은 HTTPS/SSL을 통해 암호화됩니다.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
# AI Note MCP 서버
|
|
68
|
+
|
|
69
|
+
[](https://badge.fury.io/js/%40ainote%2Fmcp-server)
|
|
70
|
+
[](https://opensource.org/licenses/MIT)
|
|
71
|
+
|
|
72
|
+
Claude Desktop을 AI Note 작업 관리 시스템에 연결하는 MCP(Model Context Protocol) 서버입니다. 이 서버를 통해 Claude가 AI Note 작업을 직접 관리할 수 있으며, 자연어 대화를 통해 작업 생성, 수정, 관리가 가능합니다.
|
|
73
|
+
|
|
74
|
+
## 목차
|
|
75
|
+
|
|
76
|
+
- [기능](#기능)
|
|
77
|
+
- [사전 요구사항](#사전-요구사항)
|
|
78
|
+
- [설치](#설치)
|
|
79
|
+
- [설정](#설정)
|
|
80
|
+
- [사용법](#사용법)
|
|
81
|
+
- [사용 가능한 도구](#사용-가능한-도구)
|
|
82
|
+
- [API 참조](#api-참조)
|
|
83
|
+
- [개발](#개발)
|
|
84
|
+
- [문제 해결](#문제-해결)
|
|
85
|
+
- [기여하기](#기여하기)
|
|
86
|
+
- [라이선스](#라이선스)
|
|
87
|
+
|
|
88
|
+
## 기능
|
|
89
|
+
|
|
90
|
+
- 📝 **작업 관리**: Claude Desktop에서 직접 작업 생성, 수정, 삭제, 조회
|
|
91
|
+
- 🏷️ **카테고리 지원**: 카테고리를 통한 작업 구성
|
|
92
|
+
- 🔍 **고급 검색**: 내용, 상태 등을 기준으로 작업 검색
|
|
93
|
+
- ⭐ **우선순위 관리**: 중요한 작업 표시
|
|
94
|
+
- 📅 **마감일 지원**: 작업 마감일 설정 및 관리
|
|
95
|
+
- 🔒 **보안 API 연동**: API 키 인증을 통한 안전한 접근
|
|
96
|
+
|
|
97
|
+
## 사전 요구사항
|
|
98
|
+
|
|
99
|
+
- Node.js >= 16.0.0
|
|
100
|
+
- npm 또는 yarn
|
|
101
|
+
- AI Note API 접근 권한 (API 키 필요)
|
|
102
|
+
- MCP 지원이 활성화된 Claude Desktop
|
|
103
|
+
|
|
104
|
+
## 설치
|
|
105
|
+
|
|
106
|
+
### 옵션 1: npm에서 설치 (권장)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
npm install -g @ainote/mcp
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 옵션 2: 소스코드로부터 설치
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
git clone https://github.com/ainote-dev/ainote-mcp.git
|
|
116
|
+
cd ainote-mcp-server
|
|
117
|
+
npm install
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## 업데이트
|
|
121
|
+
|
|
122
|
+
### npm에서 업데이트 (권장)
|
|
123
|
+
|
|
124
|
+
npm을 통해 설치한 경우 최신 버전으로 업데이트:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm update -g @ainote/mcp
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
특정 버전을 설치하려면:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npm install -g @ainote/mcp@1.0.2
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 소스코드에서 업데이트
|
|
137
|
+
|
|
138
|
+
소스코드로 설치한 경우:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
cd ainote-mcp-server
|
|
142
|
+
git pull origin main
|
|
143
|
+
npm install
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
업데이트 후에는 **Claude Desktop을 재시작**하여 새 버전을 로드하세요.
|
|
147
|
+
|
|
148
|
+
## 설정
|
|
149
|
+
|
|
150
|
+
### 1. 환경 변수 설정
|
|
151
|
+
|
|
152
|
+
`.env` 파일을 생성하거나 다음 환경 변수를 설정하세요:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# 필수
|
|
156
|
+
export AINOTE_API_KEY="여기에-api-키-입력"
|
|
157
|
+
|
|
158
|
+
# 선택사항 (기본값: 프로덕션 URL)
|
|
159
|
+
export AINOTE_API_URL="https://ainote-5muq.onrender.com"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 2. Claude Desktop 설정
|
|
163
|
+
|
|
164
|
+
Claude Desktop 설정 파일에 다음 내용을 추가하세요:
|
|
165
|
+
|
|
166
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
167
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"mcpServers": {
|
|
172
|
+
"ainote": {
|
|
173
|
+
"command": "npx",
|
|
174
|
+
"args": [
|
|
175
|
+
"-y",
|
|
176
|
+
"@ainote/mcp"
|
|
177
|
+
],
|
|
178
|
+
"env": {
|
|
179
|
+
"AINOTE_API_KEY": "YOUR_API_KEY",
|
|
180
|
+
"AINOTE_API_URL": "https://ainote-5muq.onrender.com"
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
전역 설치된 ainote-mcp를 사용하는 경우:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"mcpServers": {
|
|
192
|
+
"ainote": {
|
|
193
|
+
"command": "ainote-mcp",
|
|
194
|
+
"env": {
|
|
195
|
+
"AINOTE_API_KEY": "YOUR_API_KEY",
|
|
196
|
+
"AINOTE_API_URL": "https://ainote-5muq.onrender.com"
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### 3. Claude Desktop 재시작
|
|
204
|
+
|
|
205
|
+
설정 후 Claude Desktop을 재시작하여 MCP 서버를 로드하세요.
|
|
206
|
+
|
|
207
|
+
## 사용법
|
|
208
|
+
|
|
209
|
+
설정이 완료되면 Claude를 통해 AI Note 작업과 상호작용할 수 있습니다:
|
|
210
|
+
|
|
211
|
+
### 대화 예시
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
사용자: "내 대기 중인 작업들을 보여줘"
|
|
215
|
+
Claude: AI Note에서 대기 중인 작업들을 가져오겠습니다...
|
|
216
|
+
|
|
217
|
+
사용자: "금요일까지 분기 보고서 검토하는 새 작업을 만들어줘"
|
|
218
|
+
Claude: 금요일을 마감일로 하는 작업을 생성하겠습니다...
|
|
219
|
+
|
|
220
|
+
사용자: "작업 ID 123을 완료로 표시해줘"
|
|
221
|
+
Claude: 해당 작업을 완료로 표시하겠습니다...
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## 사용 가능한 도구
|
|
225
|
+
|
|
226
|
+
### list_tasks
|
|
227
|
+
|
|
228
|
+
필터링 옵션과 함께 AI Note에서 작업 목록을 조회합니다.
|
|
229
|
+
|
|
230
|
+
**매개변수:**
|
|
231
|
+
- `status` (선택사항): 상태별 필터 - "pending" 또는 "completed"
|
|
232
|
+
- `limit` (선택사항): 반환할 최대 작업 수 (기본값: 25, 최대: 500)
|
|
233
|
+
- `search` (선택사항): 작업 내용 검색 키워드
|
|
234
|
+
|
|
235
|
+
### create_task
|
|
236
|
+
|
|
237
|
+
AI Note에 새 작업을 생성합니다.
|
|
238
|
+
|
|
239
|
+
**매개변수:**
|
|
240
|
+
- `content` (필수): 작업 설명
|
|
241
|
+
- `is_important` (선택사항): 중요 표시 (boolean)
|
|
242
|
+
- `due_date` (선택사항): ISO 형식의 마감일
|
|
243
|
+
- `category_id` (선택사항): 할당할 카테고리 ID
|
|
244
|
+
|
|
245
|
+
### update_task
|
|
246
|
+
|
|
247
|
+
기존 작업을 수정합니다.
|
|
248
|
+
|
|
249
|
+
**매개변수:**
|
|
250
|
+
- `id` (필수): 작업 ID
|
|
251
|
+
- `content` (선택사항): 새로운 작업 내용
|
|
252
|
+
- `is_important` (선택사항): 중요 상태 업데이트
|
|
253
|
+
- `completed_at` (선택사항): 완료로 표시 (ISO 형식) 또는 null로 미완료 처리
|
|
254
|
+
|
|
255
|
+
### delete_task
|
|
256
|
+
|
|
257
|
+
작업을 소프트 삭제합니다.
|
|
258
|
+
|
|
259
|
+
**매개변수:**
|
|
260
|
+
- `id` (필수): 삭제할 작업 ID
|
|
261
|
+
|
|
262
|
+
### list_categories
|
|
263
|
+
|
|
264
|
+
사용 가능한 모든 카테고리를 조회합니다.
|
|
265
|
+
|
|
266
|
+
**매개변수:** 없음
|
|
267
|
+
|
|
268
|
+
## API 참조
|
|
269
|
+
|
|
270
|
+
MCP 서버는 다음 엔드포인트를 통해 AI Note API와 통신합니다:
|
|
271
|
+
|
|
272
|
+
- `GET /api/mcp/tasks` - 작업 목록 조회
|
|
273
|
+
- `POST /api/mcp/tasks` - 작업 생성
|
|
274
|
+
- `PUT /api/mcp/tasks/:id` - 작업 수정
|
|
275
|
+
- `DELETE /api/mcp/tasks/:id` - 작업 삭제
|
|
276
|
+
- `GET /api/mcp/categories` - 카테고리 목록 조회
|
|
277
|
+
|
|
278
|
+
모든 요청은 `Authorization` 헤더를 통한 API 키 인증이 필요합니다.
|
|
279
|
+
|
|
280
|
+
## 개발
|
|
281
|
+
|
|
282
|
+
### 로컬에서 실행하기
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# 저장소 클론
|
|
286
|
+
git clone https://github.com/your-username/ainote-mcp-server.git
|
|
287
|
+
cd ainote-mcp-server
|
|
288
|
+
|
|
289
|
+
# 의존성 설치
|
|
290
|
+
npm install
|
|
291
|
+
|
|
292
|
+
# 서버 실행
|
|
293
|
+
npm start
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Claude Desktop으로 테스트
|
|
297
|
+
|
|
298
|
+
1. Claude Desktop 설정을 로컬 개발 서버를 가리키도록 업데이트
|
|
299
|
+
2. 테스트를 위한 환경 변수 설정
|
|
300
|
+
3. Claude Desktop 재시작
|
|
301
|
+
4. Claude Desktop 설정에서 MCP 연결 상태 확인
|
|
302
|
+
|
|
303
|
+
### 프로젝트 구조
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
ainote-mcp-server/
|
|
307
|
+
├── index.js # 메인 서버 구현
|
|
308
|
+
├── package.json # 패키지 설정
|
|
309
|
+
├── README.md # 영문 문서
|
|
310
|
+
├── README-ko.md # 한글 문서
|
|
311
|
+
└── LICENSE # MIT 라이선스
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## 문제 해결
|
|
315
|
+
|
|
316
|
+
### 일반적인 문제
|
|
317
|
+
|
|
318
|
+
1. **"API 키를 찾을 수 없음" 오류**
|
|
319
|
+
- 환경 변수나 Claude 설정에 `AINOTE_API_KEY`가 설정되어 있는지 확인
|
|
320
|
+
- API 키가 유효하고 적절한 권한이 있는지 확인
|
|
321
|
+
|
|
322
|
+
2. **"연결 거부됨" 오류**
|
|
323
|
+
- API URL이 올바른지 확인
|
|
324
|
+
- 네트워크 연결 확인
|
|
325
|
+
- AI Note API 서버가 실행 중인지 확인
|
|
326
|
+
|
|
327
|
+
3. **"도구를 찾을 수 없음" 오류**
|
|
328
|
+
- 설정 변경 후 Claude Desktop 재시작
|
|
329
|
+
- Claude Desktop에서 MCP 서버가 올바르게 설정되었는지 확인
|
|
330
|
+
|
|
331
|
+
4. **작업이 표시되지 않음**
|
|
332
|
+
- API 키 권한 확인
|
|
333
|
+
- 올바른 상태(pending/completed)를 조회하고 있는지 확인
|
|
334
|
+
- 검색 매개변수 사용 시도
|
|
335
|
+
|
|
336
|
+
### 디버그 모드
|
|
337
|
+
|
|
338
|
+
디버그 로깅을 활성화하려면:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
export DEBUG=mcp:*
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
## 기여하기
|
|
345
|
+
|
|
346
|
+
기여를 환영합니다! 다음 단계를 따라주세요:
|
|
347
|
+
|
|
348
|
+
1. 저장소 포크
|
|
349
|
+
2. 기능 브랜치 생성 (`git checkout -b feature/amazing-feature`)
|
|
350
|
+
3. 변경사항 커밋 (`git commit -m 'Add amazing feature'`)
|
|
351
|
+
4. 브랜치에 푸시 (`git push origin feature/amazing-feature`)
|
|
352
|
+
5. Pull Request 열기
|
|
353
|
+
|
|
354
|
+
### 개발 가이드라인
|
|
355
|
+
|
|
356
|
+
- 기존 코드 스타일 따르기
|
|
357
|
+
- 새 기능에 대한 테스트 추가
|
|
358
|
+
- 필요시 문서 업데이트
|
|
359
|
+
- PR 제출 전 모든 테스트 통과 확인
|
|
360
|
+
|
|
361
|
+
## 라이선스
|
|
362
|
+
|
|
363
|
+
이 프로젝트는 MIT 라이선스 하에 제공됩니다 - 자세한 내용은 [LICENSE](LICENSE) 파일을 참조하세요.
|
|
364
|
+
|
|
365
|
+
## 지원
|
|
366
|
+
|
|
367
|
+
- 📧 이메일: support@ainote.dev
|
|
368
|
+
- 🐛 이슈: [GitHub Issues](https://github.com/your-username/ainote-mcp-server/issues)
|
|
369
|
+
- 💬 Discord: [커뮤니티 참여](https://discord.gg/ainote)
|
|
370
|
+
|
|
371
|
+
## 감사의 말
|
|
372
|
+
|
|
373
|
+
- [Model Context Protocol SDK](https://github.com/modelcontextprotocol/sdk)로 제작
|
|
374
|
+
- [AI Note](https://ainote.dev)에서 제공
|
|
375
375
|
- [Claude Desktop](https://claude.ai/desktop)을 위해 제작
|