careerly-data-mcp 2.1.0 → 2.2.0

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/README.md CHANGED
@@ -1,6 +1,34 @@
1
- # Careerly GA4 MCP Server
1
+ # Careerly Data MCP Server
2
2
 
3
- Claude Code에서 자연어로 GA4 데이터를 분석하는 MCP(Model Context Protocol) 서버입니다.
3
+ Claude Code에서 **자연어로 GA4, BigQuery, Search Console 데이터를 분석**하는 MCP(Model Context Protocol) 서버입니다.
4
+
5
+ ## 왜 MCP를 쓰나요? (vs API 직접 호출)
6
+
7
+ ### 기존 방식의 문제점
8
+
9
+ ```
10
+ GA4 데이터 보고 싶다 → GA4 API 문서 읽기 → 인증 설정 → 코드 작성 → 결과 해석
11
+ BigQuery 분석하고 싶다 → SQL 작성 → UNNEST 문법 검색 → 쿼리 수정 → 결과 해석
12
+ ```
13
+
14
+ ### MCP 방식
15
+
16
+ ```
17
+ "지난 7일 세션수 보여줘" → 끝!
18
+ "page_view → post_detail_view 전환율 분석해줘" → 끝!
19
+ "검색어별 클릭수 보여줘" → 끝!
20
+ ```
21
+
22
+ ### 핵심 장점
23
+
24
+ | 기존 API 직접 호출 | MCP 사용 |
25
+ |------------------|---------|
26
+ | API 문서 읽고 코드 작성 필요 | 자연어로 질문하면 끝 |
27
+ | GA4 event_params 추출 = 복잡한 UNNEST SQL | `bq_event_params` 도구로 한 줄 |
28
+ | 퍼널 분석 = 10줄 이상 SQL | `bq_funnel` 도구로 자동 계산 |
29
+ | 결과는 숫자만 | **인사이트 + 다음 액션 제안**까지 |
30
+
31
+ ---
4
32
 
5
33
  ## 빠른 시작
6
34
 
@@ -8,110 +36,234 @@ Claude Code에서 자연어로 GA4 데이터를 분석하는 MCP(Model Context P
8
36
  # 1. Service Account JSON 키 파일이 있는 폴더에서 실행
9
37
  cd /path/to/your/project
10
38
 
11
- # 2. 설정 실행 (키 파일 자동 탐지 + Claude Code 자동 등록!)
12
- npx careerly-ga4-mcp setup
39
+ # 2. 설정 실행 (키 파일 자동 탐지 + Claude Code 자동 등록)
40
+ npx careerly-data-mcp setup
13
41
 
14
42
  # 3. Claude Code 재시작 후 /mcp 확인!
15
43
  ```
16
44
 
17
45
  ### 자동 설정 기능
18
46
 
19
- `setup` 명령어는 다음을 자동으로 처리합니다:
20
-
21
- 1. **Service Account 키 파일 자동 탐지** - 현재 폴더에서 JSON 파일 스캔
22
- 2. **GA4 연결 테스트** - Property ID와 키 파일 검증
23
- 3. **Claude Code MCP 자동 등록** - `claude mcp add` 명령어로 자동 설정
47
+ `setup` 명령어가 알아서 처리합니다:
24
48
 
25
- ```
26
- Careerly GA4 MCP Server
27
- ─────────────────────────────────────
28
-
29
- ✔ GA4 Property ID 517059569
30
- ✔ 1개의 Service Account 키 파일 발견
31
- ✔ 사용할 키 파일 선택 my-project-key.json (my-project-id)
32
- ✔ 연결 성공!
33
- ✔ Claude Code MCP 서버 등록 완료
49
+ 1. **Service Account 키 파일 자동 탐지** - 폴더에서 JSON 파일 스캔
50
+ 2. **GA4 + BigQuery 연결 테스트** - Property ID와 키 파일 검증
51
+ 3. **Claude Code MCP 자동 등록** - 재시작만 하면 바로 사용 가능
34
52
 
35
- ✓ 설정 완료!
36
- ```
53
+ ---
37
54
 
38
- ## 사전 준비
55
+ ## 사전 준비 (관리자)
39
56
 
40
57
  ### 1. Google Cloud 설정
41
58
 
42
59
  1. [Google Cloud Console](https://console.cloud.google.com/)에서 프로젝트 생성
43
60
  2. **Google Analytics Data API** 활성화
44
- 3. **서비스 계정** 생성 후 JSON 키 다운로드
61
+ 3. **BigQuery API** 활성화
62
+ 4. **Search Console API** 활성화
63
+ 5. **서비스 계정** 생성 후 JSON 키 다운로드
45
64
 
46
65
  ### 2. GA4 권한 설정
47
66
 
48
- 1. [GA4 Admin](https://analytics.google.com/) > 속성 설정 > 속성 액세스 관리
49
- 2. 서비스 계정 이메일 추가 (뷰어/읽기 전용 권한)
67
+ - GA4 Admin > 속성 설정 > 속성 액세스 관리
68
+ - 서비스 계정 이메일 추가 (뷰어 권한)
50
69
 
51
- > **Tip**: Service Account 이메일은 JSON 키 파일의 `client_email` 필드에서 확인할 수 있습니다.
70
+ ### 3. BigQuery 권한 설정
52
71
 
53
- ## 기능
72
+ - IAM & Admin > 서비스 계정에 **BigQuery 데이터 뷰어** 역할 추가
54
73
 
55
- | Tool | 설명 |
56
- |------|------|
57
- | `ga4_query` | GA4 데이터 조회 + 인사이트 생성 |
58
- | `ga4_metadata` | 지표/차원 목록 확인 |
59
- | `ga4_status` | 연결 상태 확인 |
74
+ ### 4. Search Console 권한 설정 (선택)
75
+
76
+ - [Search Console](https://search.google.com/search-console) > 설정 > 사용자 권한
77
+ - 서비스 계정 이메일 추가 (전체 권한 또는 제한된 권한)
78
+
79
+ ---
80
+
81
+ ## 제공 도구 (Tools)
82
+
83
+ ### GA4 Data API 도구
84
+
85
+ | Tool | 설명 | 언제 쓰나요? |
86
+ |------|------|------------|
87
+ | `ga4_query` | GA4 데이터 조회 + 인사이트 | 세션, 사용자, 전환 등 기본 지표 |
88
+ | `ga4_metadata` | 지표/차원 목록 | 어떤 데이터를 볼 수 있는지 확인 |
89
+ | `ga4_status` | 연결 상태 확인 | 연결 문제 진단 |
90
+
91
+ ### BigQuery 기본 도구
92
+
93
+ | Tool | 설명 | 언제 쓰나요? |
94
+ |------|------|------------|
95
+ | `bq_query` | BigQuery 테이블 조회 | 일반 테이블 데이터 조회 |
96
+ | `bq_metadata` | 스키마/테이블 목록 | 데이터 구조 파악 |
97
+ | `bq_status` | 연결 상태 확인 | 연결 문제 진단 |
98
+ | `bq_ga4_events` | GA4 Export 이벤트 조회 | event_params 자동 추출 |
99
+
100
+ ### BigQuery 고급 도구 (v2.1.0)
101
+
102
+ | Tool | 설명 | 언제 쓰나요? |
103
+ |------|------|------------|
104
+ | `bq_raw_sql` | SQL 직접 실행 | 복잡한 JOIN, 윈도우 함수 등 |
105
+ | `bq_event_params` | 이벤트 파라미터 추출 | page_location, page_title 등 쉽게 추출 |
106
+ | `bq_user_journey` | 사용자 여정 분석 | 특정 사용자가 어떤 행동을 했는지 |
107
+ | `bq_funnel` | 퍼널 분석 | 단계별 전환율 자동 계산 |
108
+
109
+ ### Google Search Console 도구 (v2.2.0 신규)
110
+
111
+ | Tool | 설명 | 언제 쓰나요? |
112
+ |------|------|------------|
113
+ | `gsc_query` | 검색 분석 데이터 조회 | 검색어/페이지별 클릭, 노출, CTR, 순위 |
114
+ | `gsc_status` | 연결 상태 확인 | 연결 문제 진단 |
115
+ | `gsc_sites` | 등록된 사이트 목록 | 접근 가능한 사이트 확인 |
116
+
117
+ ---
60
118
 
61
119
  ## 사용 예시
62
120
 
63
- Claude Code에서 자연어로 질문:
121
+ Claude Code에서 자연어로 질문하세요:
122
+
123
+ ### 기본 질의
64
124
 
65
125
  ```
66
126
  "지난 7일 세션수 보여줘"
67
127
  "채널별 전환수 알려줘"
68
128
  "어제 대비 오늘 트래픽 어때?"
69
129
  "랜딩 페이지별 이탈률 분석해줘"
70
- "캠페인별 성과 비교해줘"
71
130
  ```
72
131
 
132
+ ### 고급 질의 (v2.1.0)
133
+
134
+ ```
135
+ "page_view 이벤트에서 page_location 파라미터 추출해줘"
136
+ "사용자 ID 12345678의 행동 여정 보여줘"
137
+ "page_view → post_detail_view → post_create_start 퍼널 분석해줘"
138
+ "디바이스별 전환율 비교해줘"
139
+ ```
140
+
141
+ ### Search Console 질의 (v2.2.0)
142
+
143
+ ```
144
+ "최근 28일 검색어별 클릭수 보여줘"
145
+ "클릭률이 낮은 페이지 찾아줘"
146
+ "모바일 vs 데스크톱 검색 성과 비교해줘"
147
+ "순위가 높은데 CTR이 낮은 키워드 분석해줘"
148
+ ```
149
+
150
+ ### 실제 결과 예시 (퍼널 분석)
151
+
152
+ ```
153
+ ## 요약
154
+ page_view → post_create_start 전환율: 2.3% | 1,215 → 28명
155
+
156
+ ## 인사이트
157
+ 1. 전체 전환율: 2.3% (1,215명 중 28명 완료)
158
+ 2. 최대 이탈 구간: page_view → post_detail_view (89.8% 이탈)
159
+ 3. post_detail_view → post_create_start: 22.8% 전환 (개선 필요)
160
+
161
+ ## 퍼널 시각화
162
+ 1. page_view ██████████████████████████████ 1,215명 (100%)
163
+ 2. post_detail_view ███░░░░░░░░░░░░░░░░░░░░░░░░░░░ 123명 (10.1%)
164
+ 3. post_create_start █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 28명 (2.3%)
165
+ ```
166
+
167
+ ---
168
+
169
+ ## v2.2.0 주요 업데이트 (최신)
170
+
171
+ ### Google Search Console 통합
172
+
173
+ - **3개 새 도구 추가**: `gsc_query`, `gsc_status`, `gsc_sites`
174
+ - 검색어/페이지별 클릭수, 노출수, CTR, 평균 순위 분석
175
+ - 국가별, 디바이스별 필터링 지원
176
+ - 16개월 이전 데이터까지 조회 가능
177
+
178
+ ### 새 환경변수
179
+
180
+ | 변수 | 설명 |
181
+ |------|------|
182
+ | `GSC_SITE_URL` | 기본 사이트 URL (예: `https://example.com/` 또는 `sc-domain:example.com`) |
183
+
184
+ ### GSC 권한 설정
185
+
186
+ 1. Search Console > 설정 > 사용자 및 권한
187
+ 2. Service Account 이메일 추가 (전체 권한 또는 제한된 권한)
188
+
189
+ ---
190
+
191
+ ## v2.1.0 주요 업데이트
192
+
193
+ ### 버그 수정
194
+
195
+ - `bq_ga4_events` GROUP BY 오류 해결
196
+ - 이제 metrics 있을 때/없을 때 모두 정상 동작
197
+
198
+ ### 새 기능
199
+
200
+ - **복합 필터 지원**: `filterLogic: "AND" | "OR"` 옵션 추가
201
+ - **Raw SQL 실행**: 복잡한 쿼리도 직접 작성 가능 (SELECT만 허용)
202
+
203
+ ### 새 도구 4개 추가
204
+
205
+ | 도구 | 하는 일 |
206
+ |------|--------|
207
+ | `bq_raw_sql` | SQL 직접 실행 (UNNEST, JOIN 등) |
208
+ | `bq_event_params` | event_params 쉽게 추출 |
209
+ | `bq_user_journey` | 사용자별 이벤트 시퀀스 분석 |
210
+ | `bq_funnel` | 전환 퍼널 자동 계산 |
211
+
212
+ ---
213
+
73
214
  ## CLI 명령어
74
215
 
75
216
  ```bash
76
217
  # 인터랙티브 메뉴
77
- npx careerly-ga4-mcp
218
+ npx careerly-data-mcp
78
219
 
79
- # 초기 설정 (자동 키 파일 탐지 + Claude Code 자동 등록)
80
- npx careerly-ga4-mcp setup
220
+ # 초기 설정
221
+ npx careerly-data-mcp setup
81
222
 
82
- # 서버 정보 확인
83
- npx careerly-ga4-mcp info
223
+ # 연결 테스트
224
+ npx careerly-data-mcp test-connection
84
225
 
85
- # GA4 연결 테스트
86
- npx careerly-ga4-mcp test-connection
226
+ # 서버 정보
227
+ npx careerly-data-mcp info
87
228
 
88
229
  # MCP 서버 시작 (수동)
89
- npx careerly-ga4-mcp serve
230
+ npx careerly-data-mcp serve
90
231
  ```
91
232
 
92
- ## 인터랙티브 메뉴
233
+ > **별칭**: `careerly-ga4-mcp`, `careerly-ga4`도 동일하게 동작합니다.
93
234
 
94
- ```bash
95
- npx careerly-ga4-mcp
96
- ```
235
+ ---
97
236
 
98
- ```
99
- Careerly GA4 MCP Server
100
- ─────────────────────────────────────
237
+ ## 문제 해결
101
238
 
102
- Status: ✓ connected
103
- Property ID: 123456789
104
- Credentials: ~/project/service-account.json
105
- Tools: 3 tools
239
+ ### MCP 서버가 `/mcp`에 안 보여요
240
+
241
+ 1. Claude Code 완전 종료 후 재시작
242
+ 2. `claude mcp list`로 등록 확인
243
+ 3. `npx careerly-data-mcp setup` 재실행
244
+
245
+ ### PERMISSION_DENIED 에러
246
+
247
+ **GA4 권한 문제:**
248
+ - GA4 Admin > 속성 액세스 관리 > Service Account 이메일 추가
249
+
250
+ **BigQuery 권한 문제:**
251
+ - IAM & Admin > Service Account에 "BigQuery 데이터 뷰어" 역할 추가
252
+
253
+ ### MCP 제거
106
254
 
107
- ? 선택하세요
108
- View tools
109
- Reconnect
110
- Test connection
111
- Disable
255
+ ```bash
256
+ # CLI로 삭제
257
+ claude mcp remove careerly-ga4 -s user
258
+
259
+ # 또는 메뉴에서
260
+ npx careerly-data-mcp
261
+ # → Disable 선택
112
262
  ```
113
263
 
114
- ## 수동 설정
264
+ ---
265
+
266
+ ## 수동 설정 (선택)
115
267
 
116
268
  ### Claude CLI로 추가
117
269
 
@@ -119,112 +271,54 @@ Tools: 3 tools
119
271
  claude mcp add careerly-ga4 \
120
272
  -s user \
121
273
  -e GA4_PROPERTY_ID=123456789 \
122
- -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json \
123
- -- npx -y careerly-ga4-mcp serve
274
+ -e BQ_PROJECT_ID=your-project-id \
275
+ -e GSC_SITE_URL=https://example.com/ \
276
+ -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json \
277
+ -- npx -y careerly-data-mcp serve
124
278
  ```
125
279
 
126
280
  ### 설정 파일 직접 수정
127
281
 
128
- `~/.claude/settings.local.json`에 직접 추가:
282
+ `~/.claude/settings.local.json`:
129
283
 
130
284
  ```json
131
285
  {
132
286
  "mcpServers": {
133
287
  "careerly-ga4": {
134
288
  "command": "npx",
135
- "args": ["-y", "careerly-ga4-mcp", "serve"],
289
+ "args": ["-y", "careerly-data-mcp", "serve"],
136
290
  "env": {
137
291
  "GA4_PROPERTY_ID": "123456789",
138
- "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/service-account.json"
292
+ "BQ_PROJECT_ID": "your-project-id",
293
+ "GSC_SITE_URL": "https://example.com/",
294
+ "GOOGLE_APPLICATION_CREDENTIALS": "/path/to/key.json"
139
295
  }
140
296
  }
141
297
  }
142
298
  }
143
299
  ```
144
300
 
145
- ## 문제 해결
301
+ ---
146
302
 
147
- ### MCP 서버가 `/mcp`에 안 보여요
148
-
149
- 1. Claude Code를 완전히 종료 후 재시작
150
- 2. 설정 확인: `claude mcp list`
151
- 3. 재설정: `npx careerly-ga4-mcp setup`
152
-
153
- ### PERMISSION_DENIED 에러
154
-
155
- GA4에 Service Account 권한이 없습니다:
156
-
157
- 1. GA4 Admin > 속성 설정 > 속성 액세스 관리
158
- 2. Service Account 이메일 추가 (JSON의 `client_email`)
159
- 3. 역할: 뷰어 (읽기 전용)
160
-
161
- ### 설정 삭제
162
-
163
- ```bash
164
- # Claude CLI로 삭제
165
- claude mcp remove careerly-ga4 -s user
166
-
167
- # 또는 인터랙티브 메뉴에서
168
- npx careerly-ga4-mcp
169
- # → Disable 선택
170
- ```
303
+ ## 보안 원칙
171
304
 
172
- ## Tool 스키마
305
+ - `bq_raw_sql`은 **SELECT/WITH 문만 허용** (INSERT, DELETE 등 차단)
306
+ - Service Account 키 파일은 **개인 로컬에서만 관리**
307
+ - 민감 데이터 접근 시 권한 최소화 원칙 적용
173
308
 
174
- ### ga4_query
175
-
176
- ```typescript
177
- {
178
- metrics: string[] // 필수: ["sessions", "totalUsers", "conversions"]
179
- dimensions?: string[] // 선택: ["date", "sessionDefaultChannelGroup"]
180
- startDate?: string // 기본: "7daysAgo"
181
- endDate?: string // 기본: "today"
182
- datePreset?: string // "last_7_days", "last_30_days" 등
183
- limit?: number // 기본: 10
184
- }
185
- ```
186
-
187
- ### 지표 (Metrics)
188
-
189
- | 지표 | 설명 |
190
- |------|------|
191
- | `sessions` | 세션 수 |
192
- | `totalUsers` | 전체 사용자 |
193
- | `newUsers` | 신규 사용자 |
194
- | `activeUsers` | 활성 사용자 |
195
- | `bounceRate` | 이탈률 |
196
- | `conversions` | 전환 수 |
197
- | `screenPageViews` | 페이지뷰 |
198
- | `engagementRate` | 참여율 |
199
-
200
- ### 차원 (Dimensions)
201
-
202
- | 차원 | 설명 |
203
- |------|------|
204
- | `date` | 날짜 |
205
- | `sessionDefaultChannelGroup` | 채널 |
206
- | `sessionSourceMedium` | 소스/매체 |
207
- | `sessionCampaignName` | 캠페인 |
208
- | `landingPage` | 랜딩 페이지 |
209
- | `deviceCategory` | 디바이스 |
210
- | `country` | 국가 |
309
+ ---
211
310
 
212
311
  ## 개발
213
312
 
214
313
  ```bash
215
- # 의존성 설치
216
- npm install
217
-
218
- # 빌드
219
- npm run build
220
-
221
- # 개발 모드
222
- npm run dev
223
-
224
- # 타입 체크
225
- npm run typecheck
314
+ npm install # 의존성 설치
315
+ npm run build # 빌드
316
+ npm run dev # 개발 모드 (watch)
317
+ npm run typecheck # 타입 체크
226
318
  ```
227
319
 
320
+ ---
321
+
228
322
  ## 라이선스
229
323
 
230
324
  MIT
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * setup 명령어 - GUI 스타일
3
- * GA4 + BigQuery 설정 + Claude Code 자동 설정
3
+ * GA4 + BigQuery + Search Console 설정 + Claude Code 자동 설정
4
4
  */
5
5
  /**
6
6
  * GA4 설정
@@ -20,9 +20,17 @@ export declare function runBigQuerySetup(): Promise<{
20
20
  connected: boolean;
21
21
  }>;
22
22
  /**
23
- * 통합 설정 (GA4 + BigQuery)
23
+ * 통합 설정 (GA4 + BigQuery + GSC)
24
24
  */
25
25
  export declare function runSetup(): Promise<void>;
26
+ /**
27
+ * Search Console 설정
28
+ */
29
+ export declare function runGSCSetup(existingCredentialsPath?: string): Promise<{
30
+ siteUrl: string;
31
+ credentialsPath: string;
32
+ connected: boolean;
33
+ }>;
26
34
  /**
27
35
  * 인터랙티브 메뉴
28
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqSH;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAgED;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CA4FD;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAoJ9C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmIxD"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwTH;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAgED;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CA4FD;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAgL9C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,uBAAuB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CA2ID;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4JxD"}