| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- javascript
- Flutter
- Coroutine
- kotlin
- Firebase
- 장자명언
- 소울칼리버6
- ASMR
- 명심보감
- 생성AI
- Freesound
- 명언모음
- 오늘의역사
- Android
- 코틀린
- androidx
- gemini-cli
- DART
- Linux
- jetpack compose
- 파이썬
- ChatGPT
- 명상명언
- 명언
- 이모지메모
- 좋은글필사하기
- Gemini
- FSM
- 공부집중
- 오픈소스
Archives
- Today
- Total
Vintage appMaker의 Tech Blog
[gemini cli] mcp를 활용한 크롬 히스토리 분석 본문
1. 목적
Python FastMCP를 활용하여 크롬브라우저 접속정보 분석
2. Python FastMCP
크롬 브라우저의 로컬 Database를 검색하여 접속한 주소를 분석한다.
- pip install fastmcp
- history_server.py를 다음과 같이 작성
import os
import sqlite3
import shutil
import tempfile
from datetime import datetime, timedelta
from mcp.server.fastmcp import FastMCP
import json
# 1. MCP 서버 초기화
mcp = FastMCP("Chrome History Reader")
def get_chrome_history_path():
"""OS별 크롬 히스토리 파일 경로 반환"""
home = os.path.expanduser("~")
# Windows 기준 (Mac의 경우 아래 주석 해제)
path = os.path.join(home, 'AppData', 'Local', 'Google', 'Chrome', 'User Data', 'Default', 'History')
# Mac용 경로 예시:
# path = os.path.join(home, 'Library', 'Application Support', 'Google', 'Chrome', 'Default', 'History')
return path
@mcp.tool()
def read_chrome_history(limit: int = 10) -> str:
"""
크롬 브라우저의 최근 방문 기록(제목, URL, 시간)을 가져옵니다.
:param limit: 가져올 기록의 개수 (기본값 10)
"""
history_path = get_chrome_history_path()
if not os.path.exists(history_path):
return "에러: 크롬 히스토리 파일을 찾을 수 없습니다. 경로를 확인하세요."
# 크롬이 실행 중일 때 DB 잠김(Lock)을 피하기 위해 임시 폴더로 복사
with tempfile.TemporaryDirectory() as tmpdir:
temp_db_path = os.path.join(tmpdir, "history_copy.db")
shutil.copy2(history_path, temp_db_path)
try:
conn = sqlite3.connect(temp_db_path)
cursor = conn.cursor()
# 크롬 타임스탬프(Webkit: 1601-01-01 기준 마이크로초) 변환 쿼리
query = """
SELECT
title,
url,
last_visit_time
FROM urls
WHERE title IS NOT NULL AND title != ''
ORDER BY last_visit_time DESC
LIMIT ?
"""
cursor.execute(query, (limit,))
rows = cursor.fetchall()
results = []
for title, url, last_visit_time in rows:
# Webkit 타임스탬프를 Python datetime으로 변환
dt = datetime(1601, 1, 1) + timedelta(microseconds=last_visit_time)
results.append({
"title": title,
"url": url,
"time": dt.strftime('%Y-%m-%d %H:%M:%S')
})
conn.close()
return json.dumps(results, ensure_ascii=False, indent=2)
except Exception as e:
return f"에러 발생: {str(e)}"
if __name__ == "__main__":
mcp.run()
3. gemini cli에 mcp 등록하기
사용자정보 디렉토리 하부의 .gemini/settings.json 파일을 읽어서 다음과 같은 내용을 추가한다. 참고로 history_server.py의 경로는 사용자가 자신의 컴퓨터에 저장한 경로로 변경한다. 여기서는 C:/gemini_cli_mcp/history_server.py에 저장했다.
"mcpServers": {
"template-engine": {
"command": "python",
"args": [
"C:/gemini_cli_mcp/snippet_mcp.py"
]
},
"chrome-history": {
"command": "python",
"args": [
"C:/gemini_cli_mcp/history_server.py"
]
}
}
4. 프롬프트 예제
gemini cli에서 /mcp 하면 설정된 mcp 정보를 보여준다.
오늘 크롬브라우저 접속 정보를 정리해줘.
몇시에 어떤 성향사이트를 접속했고,
어떤 종류의 사이트에 접속했는지 정리한다.



결과를 HTML로 저장하고자 한다. 이전에 template-engine mcp를 설치했다면 미리 정의한 형태로 html을 만들 수 있다. 만약 mcp가 설정되어 있지 않다면 랜덤하게 html을 만들 것이다.
search_snippets를 활용하여 report.html을 만든다. 위의 결과를 표(요약은 표, 분포정보는 그래프)로 보여준다. 그리고
상세분석은 리스트로 보여준다. 리스트를 클릭하면 해당 주소로 이동한다. 검색버튼도 상단에 추가한다. 만들어줘

원하는 파일을 생성했다.

5. 결과물
'Source code or Tip > 생성AI' 카테고리의 다른 글
| [gemini cli] skill과 mcp를 활용한 주식 리포트 (0) | 2026.03.02 |
|---|---|
| [gemini cli] mcp 활용 - 크롬 히스토리 분석 "지침 만들기" (0) | 2026.02.28 |
| [gemini Notebooklm] Canvas로 리포트 만들기(텍스트, 웹앱) (0) | 2026.02.16 |
| [codex cli] skills를 활용한 codex 기능추가 (0) | 2026.02.11 |
| [gemini-cli] mcp 활용 (이미지와 html 스니펫을 이용한 화면만들기) (0) | 2026.02.05 |
Comments
