Hermes Browser MCP Server
Allows AI agents to log into Gmail, retrieve unread emails, and perform other email-related actions through browser automation.
Supports browsing and interacting with Google services, including login and credential management for Google sites.
Enables AI agents to navigate, search, and interact with Naver services, including performing searches and managing credentials via browser automation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hermes Browser MCP ServerGo to google.com and search for the weather today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hermes Browser
AI 에이전트 + 자격증명 안전 저장 + 외부 MCP 통합이 가능한 Electron 기반 브라우저.
상태 (2026-07-10): 코드 완성. 125개 검증 PASS. 실제 Electron UI는 헤르메스 데스크탑에서
npm start1번 눌러서 확인 필요.
30초 실행 가이드
cd /mnt/c/Users/qqwer/Desktop/Hermes/hermes-browser
npm test # 125개 검증 (~15초)
npm start # Electron 띄우기 (헤르메스 데스크탑에서)Related MCP server: BrowserMCP Secure
Claude Code / Cursor / Cline에서 사용하기
A. 헤르메스 브라우저를 MCP 서버로 노출 (stdio)
~/.claude/mcp.json (Claude Code) 또는 동등한 설정 파일에 추가:
{
"mcpServers": {
"hermes-browser": {
"command": "node",
"args": ["C:/Users/qqwer/Desktop/Hermes/hermes-browser/mcp-server/server.js"]
}
}
}Claude Code 안에서 이렇게 부려먹기 가능:
"Hermes Browser로 네이버에서 고양이 사진 검색해줘" "쿠팡에서 USB-C 케이블 가격 비교해줘"
"Gmail 로그인해서 unread 메일 목록 보여줘"
B. 헤르메스 브라우저 자체에 HTTP bridge로 접근
헤르메스 실행하면 자동으로 8780 포트에 HTTP server 뜸 (Ctrl+`로 디버그 콘솔에서 토큰 확인):
# 토큰 가져오기
TOKEN=$(curl -s http://127.0.0.1:8780/auth/token | jq -r .token)
# 도구 호출
curl -X POST http://127.0.0.1:8780/mcp/tool \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "browser_navigate", "args": {"url": "https://example.com"}}'응답 예시:
{
"ok": true,
"result": {"ok": true, "url": "https://example.com/"},
"requestId": "req_l8x9_abc123"
}C. 환경변수
변수 | 기본값 | 설명 |
| (on) |
|
| 8780 | bridge가 listen할 포트 (충돌 시 자동 fallback 8781~8789) |
D. 17개 사용 가능 도구
browser_navigate, browser_search, browser_click, browser_fill, browser_get_visible_text, browser_inspect_page, browser_extract_search_results, browser_read_page, browser_open_tab, browser_switch_tab, browser_close_tab, browser_get_tabs, browser_take_screenshot, browser_scroll, browser_check_injection, browser_get_mode, browser_set_mode + 자격증명 3개 (credential_save/list/remove)
무엇이 있나
영역 | 파일 | 역할 |
브라우저 shell |
| Electron + WebContentsView + IPC 30+개 |
Agent 패키지 |
| Electron 없이도 동작, 테스트 가능 |
MCP bridge |
| HTTP localhost:8780, Bearer auth |
Bridge spawner |
| EADDRINUSE 자동 retry, graceful fail |
stdio MCP 서버 |
| Claude Code / Cursor / Cline 연결 |
CDP types |
| JSDoc 타입 (TS 없이 자동완성) |
Eval framework |
| 회귀 자동 검증 |
테스트 |
| 82 unit + 1 live + smoke |
어떻게 검증됐나
npm test이게 7개 test 파일 + eval 5개 시나리오 + smoke 전부 순차 실행. 결과:
✅ Syntax check: 28/28
✅ AgentService: 18/18
✅ Credentials: 15/15
✅ MCP bridge: 18/18
✅ MCP spawner: 16/16
✅ MCP server: 15/15
✅ Live integration: PASS (실제 HTTP server listen + curl tool 호출)
✅ Smoke: smoke ok
✅ Eval scenarios: 14/14부분 실행:
npm run test:unit— agent + credentials + bridge + spawner + server (82 tests)npm run test:live— 실제 HTTP server 띄워서 fetch 호출npm run test:eval— 5개 시나리오 (search, multi-tab, mode 권한, injection, credentials)npm run test:smoke— 파일 레벨 구조 검증
어떻게 동작하나
일반 사용자 (헤르메스 데스크탑)
cd C:\Users\qqwer\Desktop\Hermes\hermes-browser
npm startUI 뜨면 평소처럼 사용. 사이드 패널 AI, 멀티탭, 자격증명 자동채움 (구글/네이버/쿠팡 등 로그인 사이트).
개발자 (WSL)
cd /mnt/c/Users/qqwer/Desktop/Hermes/hermes-browser
node src/mcp-bridge.js # 또는 main.js 안에서 spawner가 띄움8780 포트에 HTTP server listen. token은 stdout에 출력됨.
# 토큰 받기
TOKEN=$(curl -s http://127.0.0.1:8780/auth/token | jq -r .token)
# Tool 호출 예시
curl -X POST http://127.0.0.1:8780/mcp/tool \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "browser_navigate", "args": {"url": "example.com"}}'Claude Code / Cursor 사용
~/.claude/mcp.json (또는 동등한 설정 파일):
{
"mcpServers": {
"hermes-browser": {
"command": "node",
"args": ["C:/Users/qqwer/Desktop/Hermes/hermes-browser/mcp-server/server.js"]
}
}
}Claude Code 안에서 "Hermes Browser로 네이버에서 고양이 사진 검색해줘" 같은 거 가능.
아키텍처 (BrowserOS 패턴 차용)
┌─────────────────────────────────────────────────────────────┐
│ External AI Client (Claude Code / Cursor / Cline) │
│ │ │
│ │ stdio JSON-RPC (MCP) │
│ ▼ │
│ mcp-server/server.js (20 tools, stdio MCP) │
│ │ │
│ │ HTTP localhost:8780 (Bearer auth) │
│ ▼ │
│ src/mcp-bridge.js ←→ src/mcp-bridge-spawner.js │
│ │ (EADDRINUSE retry) │
│ │ in-process │
│ ▼ │
│ src/agent/ (9 modules, 1256줄, Electron-free) │
│ │ │
│ │ IPC (BrowserWindow.webContents) │
│ ▼ │
│ main.js (Electron + WebContentsView) │
└─────────────────────────────────────────────────────────────┘차용한 패턴 (BrowserOS AGPL-3 — 코드 카피 0, 구조만 참고):
모노레포 분리: agent 로직을 패키지로 격리 → 우리는
src/agent/9 모듈MCP server: 브라우저를 외부 AI tool로 노출 → 우리는
mcp-server/server.js20 toolType-safe CDP: 우리는 JSDoc만 (
cdp-protocol.d.ts) — TS 마이그레이션 부담 회피Eval framework: WebVoyager/Mind2Web 차용 → 우리는 5개 우리 시나리오
핵심 차별점
Aside / Atlas / Comet 다 공통 약점: 로그인 필요한 사이트 작업 못 함.
Hermes Browser: safeStorage (OS 키체인) 기반 자격증명 저장 + 도메인 스코핑 + mode 검증 + audit log.
# Claude Code에서
"쿠팡에서 USB-C 케이블 검색해줘"
→ agent가 credential vault 조회 (쿠팡 쿠키 살아있으면)
→ 로그인 필요시 저장된 credential로 자동 채움
→ 검색 결과 추출 + 응답자격증명 보안:
평문 password는 절대 log에 기록 안 됨 (IPC payload에도 직접 노출 최소화)
도메인 스코핑: naver.com cred은 google.com에서 못 씀
401 unauthorized: Bearer token 없으면 모든 tool 호출 차단
list 도 password 절대 미노출
디렉토리 구조
Hermes Browser/
├── main.js 843줄 — Electron shell + IPC + bridge spawner
├── package.json npm test, test:unit, test:live, test:eval, test:smoke
├── src/
│ ├── preload.js Renderer-facing API (credential 추가)
│ ├── renderer.js UI (1311줄, 손대지 않음)
│ ├── agent/ 9 modules, 1256줄
│ │ ├── mode.js MODE_PERMISSIONS (ask/assist/agent/auto)
│ │ ├── safety.js INJECTION_PATTERNS, redactText, maskSecrets
│ │ ├── plan.js PlanState, createStructuredAction
│ │ ├── approval.js ApprovalManager (60s timeout)
│ │ ├── persistence.js skills, workspaces, session memory, action log
│ │ ├── extraction.js DOM → 구조화된 페이지 컨텍스트
│ │ ├── actions.js click, fill, findElement (browser primitives)
│ │ ├── credentials.js safeStorage 자격증명 vault
│ │ └── index.js AgentService 통합 클래스
│ ├── cdp-protocol.d.ts JSDoc types for WebContents, View, Tab
│ ├── mcp-bridge.js HTTP server (Bearer auth)
│ └── mcp-bridge-spawner.js Retry + graceful fail
├── mcp-server/
│ ├── server.js 331줄, stdio MCP, 20 tools
│ └── README.md (구버전, 본 README로 통합됨)
├── eval/
│ ├── runner.js 175줄
│ └── scenarios/ 5 JSON 시나리오
└── tests/ 7 test files
├── agent.test.js 18 tests
├── credentials.test.js 15
├── mcp-bridge.test.js 18 (incl. auth)
├── mcp-bridge-spawner.test.js 16 (EADDRINUSE, retry)
├── mcp-server.test.js 15
├── live-bridge.test.js 1 live integration
└── smoke.test.js file-level structure자주 하는 실수
Q: WSL에서 npm start 하면?
A: Intel Arc GPU 검은화면. 헤르메스 데스크탑(Windows PowerShell)에서 실행.
Q: bridge port 8780 이미 점유돼 있으면? A: spawner가 자동 retry (8781~8789). 단, 우리 앱 자체는 정상 실행.
Q: credentials.enc 어디 저장?
A: app.getPath('userData')/credentials.enc (Electron safeStorage 암호화).
Q: MCP server가 헤르메스 안 띄워도 동작?
A: 네. mcp-server/server.js는 in-process bridge로 동작. 진짜 browser control은 헤르메스 띄워야.
변경 이력
2026-07-10: 메인 리팩토링
main.js: 1,446줄 → 843줄 (-42%)agent 로직 분리: 9개 모듈 1,256줄
MCP 서버 추가: 20개 tool
Bridge 추가: HTTP + Bearer auth + spawner retry
자격증명 vault 추가: safeStorage 기반
Eval framework: 5개 시나리오
보강: actionQueue bounded (100), EVAL SAFETY 주석
보강: bridge auth token, EADDRINUSE retry, graceful fail
우연히 잡은 버그:
clickElement의 freesend()호출 (eval이 production 회귀 발견)백업:
backups/20260710_pre_refactor/
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/leemind-q/hermes-browser'
If you have feedback or need assistance with the MCP directory API, please join our Discord server