umami-mcp-server
umami-mcp-server
Umami Analytics용 MCP 서버입니다. 읽기 전용이며, Umami Cloud와 자체 호스팅 인스턴스 모두에서 동작합니다. 에포크 밀리초와 UUID 대신 last_month 같은 기간과 example.com 같은 사이트 이름을 사용합니다.
웹사이트 검색, 트래픽 통계, 시계열 데이터, 순위 집계, 커스텀 이벤트, 개별 세션, 한 번의 호출로 끝나는 전체 보고서, 웹사이트/사용자/팀에 대한 전체 관리자 CRUD, 클라이언트 온보딩을 위한 복합 도구, 그리고 Umami API의 다른 모든 것을 위한 원시 GET 우회 도구까지 총 25개의 도구를 제공합니다.
관리자 도구(사용자, 팀, 웹사이트 생성, 모든 항목 삭제)에는 관리자 로그인 또는 관리자 API 키가 있는 자체 호스팅 Umami가 필요합니다. Umami Cloud는 API에서 사용자 또는 팀 관리 기능을 제공하지 않으므로, Cloud를 지정하면 혼란스러운 404 대신 명확한 오류를 반환합니다.
설치
npm install
npm run buildRelated MCP server: Plausible MCP
구성
.env.example 파일을 복사하고 두 가지 인증 방식 중 하나를 채워 넣으세요.
Umami Cloud
Settings, API keys에서 키를 생성하세요.
Variable | Required | Notes |
| yes | Your Cloud API key |
| no |
|
Self-hosted
변수 | 필수 여부 | 설명 |
| 필수 | 인스턴스의 루트 URL(예: |
| 택일 | 인스턴스의 API 키 |
| 택일 | 로그인 자격 증명으로, bearer 토큰으로 교환되고 만료 시 자동으로 갱신됩니다 |
공통
변수 | 기본값 | 설명 |
|
| 일 시작 경계와 시계열 버킷을 위한 IANA 시간대(예: |
| 없음 | 도구 호출에서 |
연결
Claude Desktop 또는 Claude Code
claude_desktop_config.json에 추가하거나 claude mcp add를 실행하세요:
{
"mcpServers": {
"umami": {
"command": "node",
"args": ["/absolute/path/to/umami-mcp-server/dist/index.js"],
"env": {
"UMAMI_API_KEY": "your-key",
"UMAMI_TIMEZONE": "America/New_York",
"UMAMI_DEFAULT_WEBSITE": "example.com"
}
}
}
}자체 호스팅 인스턴스라면 UMAMI_BASE_URL과 함께 API 키 또는 사용자 이름/비밀번호 쌍 중 하나를 넣으세요.
MCP Inspector
UMAMI_API_KEY=your-key npm run inspect도구
분석(읽기 전용)
도구 | 설명 |
| 전체 추적 웹사이트 목록을 선택적 검색과 함께 반환. ID를 모를 때 시작 지점 |
| 웹사이트 설정, 실제 수집된 데이터의 기간, 실시간 방문자 수를 보여줌 |
| 지난 5분간의 고유 방문자 수 |
| 페이지뷰, 방문자, 방문, 이탈률, 평균 방문 시간, 전 기간 대비 변화 |
| 페이지뷰와 방문을 분·시간·일·월·연 단위로 버킷 |
| 모든 차원에 대한 집계. |
| 시간대별 커스텀 이벤트 수, 이벤트 이름으로 그룹화 |
| 개별 익명 세션의 페이지네이션 목록 |
| 하나의 세션과 페이지별 활동 추적 |
| 한 번의 호출로 통계와 7가지 세부 집계. "사이트가 어떻게 돌아가?"에 적합 |
관리자: 웹사이트 (self-hosted, admin 로그인 또는 키)
도구 | 설명 |
| 새 웹사이트 등록 후 트래킹 ID와 |
| 이름 변경, 도메인 변경, 공개 공유 링크 설정 및 모든 replay/heat 관련 필드(활성 플래그, 샘플 비율 수준, 비플 등)설정 |
| Umami가 실제로 트래커에 제공중인 실컷 설정 읽기. |
| destructive. 수집된 전체 데이터 삭제, 웹사이트와 추적 ID는 유지. |
| destructive. 웹사이트 등록과 전체 데이터 삭제. |
관리자: 사용자 (self-hosted)
도구 | 설명 |
| interne login 계정 생성 |
| 인스턴스의 모든 login 계정 목록 |
| 한 사용자의 역할과 접근 가능한 website/team |
| username, password 또는 역할 변경 |
| destructive. 사용자 삭제. |
관리자: 팀 (self-hosted)
도구 | 설명 |
| 팀 및 접근 코드 생성 |
| 멤버 수와 웹사이트 수 포함 팀 목록 |
| 팀 상세와 전체 멤버 및 역할 |
| 팀에 속한 웹사이트 목록 |
| 팀 이름 변경 또는 접근 코드 교체 |
| 접근 코드로 인증된 사용자로 입장 |
| 기존 계정을 팀에 초대 |
| 팀 멤버의 역할 변경 |
| destructive. 팀에서 멤버 제거. |
| destructive. 팀 삭제. |
프로비저닝
도구 | 설명 |
| 웹사이트 생성 + 선택적으로 해당 사이트 전용 팀 생성 + 선택적으로 기존 사용자 권한 부여 + 초기부터 replay/heat 설정까지 한 번의 호출로 처리. 새 클라이언트 구성을 위한 빠른 경로 |
서브 네트
도구 | 설명 |
| 전용 도구가 없는 Umami 엔드포인트에 대한 읽기 전용 GET |
모든 데이터 도구는 response_format 파라미터를 받습니다. markdown은 읽기 좋은 요약을, json은 구조화된 데이터를 반환합니다. 모든 파괴적인 도구(reset, delete, remove)는 confirm: true 인자가 필수이며, 이를 포함하지 않으면 호출이 거부되고 별다른 추가 확인 단계가 없으므로, 그 인자가 실행 전 최종 확인 지점입니다.
날짜 범위
range에는 다음 중 하나를 전달합니다:
Relative(상대적):
30m,24h,7d,4w,3mo,1yNamed(명명된):
today,yesterday,this_week,last_week,this_month,last_month,this_year,last_year,mtd,ytd,all_time
또는 start_date와 end_date를 YYYY-MM-DD, 전체 ISO 8601 타임스탬프 또는 epoch 밀리초로 전달하세요. 명시적 날짜가 range보다 우선합니다. 일의 경계는 UMAMI_TIMEZONE 또는 호출 시마다의 timezone 인자를 따릅니다.
필터
대부분의 도구는 쿼리를 분할하는 filters 객체를 받습니다:
{ "country": "US", "device": "mobile", "path": "/pricing" }지원하는 키: path, referrer, title, query, browser, os, device, country, region, city, language, hostname, tag, event, distinctId, utmSource, utmMedium, utmCampaign, utmContent, utmTerm, segment, cohort.
세부 집계 차원
umami_get_metrics 및 umami_traffic_report의 breakdowns 인자에 사용: path, entry, exit, title, query, referrer, channel, domain, country, region, city, browser, os, device, language, screen, event, hostname, tag, distinctId.
예시
연결 후 자연스럽게 요청하세요:
"지난달 사이트 실적은 그 전달 대비 어땠나?" →
umami_get_stats에서range=last_month"지난 30일간의 전체 분석 요약을 주세요" →
umami_traffic_report"어느 도착 페이지가 이탈률이 가장 높은가?" →
umami_get_metrics에서type=entry,expanded=true"이번 주 접촉 폼 제출은 몇 번?" →
umami_get_events_series에서event=contact-form-submit"플로리다 모바일 방문자의 상위 페이지를 보여줘" →
umami_get_metrics에서type=path,filters={ device: "mobile", region: "US" }"그 세션이 사이트에서 무엇을 했는지?" →
umami_list_sessions후umami_get_session"새 클라이언트 트래킹, 전용 팀, 그리고 제에게 권한을 부여해줘" →
umami_onboard_client에서website_name,domain,team_name,grant_user_id"이 사이트가 라이브되기 전에 테스트 데이터를 삭제해줘" →
umami_reset_website에서confirm=true
디자인 노트
웹사이트 해석. 모든 도구의
website인자는 UUID, 이름 또는 도메인을 받을 수 있습니다. 이름과 도메인은 60초 캐시된 웹사이트 목록과 대조되며, 조용히 잘못된 추측을 하는 대신 명시적인 모호성 오류가 반환됩니다. 웹사이트를 생성, 업데이트 또는 삭제하면 캐시가 즉시 새로고침됩니다.전체 재생/히트맵 설정(단순 토글이 아닌).
umami_update_website는 Umami의replayConfig가 받아들이는 모든 필드를 노출합니다. 활성화 플래그, 재생과 히트맵의 독립 샘플링 비율, PII 마스크 수준, 차단 선택자, 최대 녹화 시간이 포함됩니다. Umami 자체 문서에는maxDuration의 단위가 일관되지 않게 나와 있습니다(한 예는 밀리초를, 다른 예는 초를 암시합니다). 추측하는 대신umami_get_recorder_config는 트래커가 실제로 호출하는 것과 동일한 공개 엔드포인트를 읽으므로, 문서의 어떤 예를 신뢰할 필요 없이 저장된 후 실제 적용된 값을 확인할 수 있습니다.파생 지표. Umami는 원시
bounces및totaltime수치를 반환합니다. 이탈률, 방문당 조회수, 평균 방문 시간이 여기서 계산되므로 모든 응답을 바로 읽을 수 있습니다.부분 실패.
umami_traffic_report는 세부 분석을 병렬로 실행하고, 인스턴스가 지원하지 않는 차원을 버리되, 전체 보고서를 실패시키지 않습니다. 대신 건너뛴 차원의 이름을 명시합니다. 차원 지원은 Umami 버전마다 다르기 때문에 이는 중요합니다.파괴적인 작업은 옵트인이며, 이중 확인을 하지 않습니다.
umami_reset_website,umami_delete_website,umami_delete_user,umami_remove_team_user,umami_delete_team은 모두 리터럴confirm: true인자를 요구하고, 그렇지 않으면 실행에 실패합니다. 별도의 “정말 확인 하시겠습니까?”와 같은 절차는 없습니다. 도구 호출 자체가 확인이므로 에이전트(또는 사용자)는 실제로 의도하는 경우에만confirm: true를 전달해야 합니다.umami_onboard_client는 best-effort(최선 노력) 방식이지, 트랜잭션이 아닙니다. Umami의 API는 다단계 트랜잭션을 지원하지 않습니다. 팀 생성은 성공했지만 웹사이트 단계가 실패하면 팀은 그대로 유지되며, 오류 메시지는 이 사실과 다음에 확인해야 할 사항을 명시적으로 알려줍니다. 조용히 롤백하거나 부분 상태를 숨기지 않습니다.탈출구.
umami_api_get은 의도적으로 GET 전용이며 위의 관리 도구들과 분리되어 있습니다. 생성, 수정, 초기화, 삭제 등 어떤 것도 할 수 없습니다.응답 크기. 응답은 25,000자로 상한되며,
limit,offset또는 더 좁은 범위를 안내하는 메시지가 포함됩니다.
테스트
npm testtest/smoke.mjs는 모의(mock) Umami API를 띄우고, stdio를 통해 실제 MCP 클라이언트를 연결하며, 분석 도구와 오류 경로를 함께 실행합니다. test/auth.mjs는 자체 호스팅 로그인 인증과 캐시된 베어러 토큰이 만료되었을 때 발동하는 토큰 갱신을 다룹니다. test/admin.mjs는 웹사이트/사용자/팀 CRUD, 팀 멤버십, 복합 온보딩 도구를 다루며 모든 파괴적 도구도 confirm=true가 없으면 실행을 거부하는지 확인합니다.
검증 대상
2026년 8월 기준 Umami v3 API 참조 문서: /websites, /websites/:id, /websites/:id/stats, /pageviews, /metrics, /metrics/expanded, /events/series, /active, /daterange, /sessions, /sessions/:id, /sessions/:id/activity, /websites/:id/reset, /users, /admin/users, /users/:id, /users/:id/websites, /users/:id/teams, /teams, /teams/join, /teams/:id, /teams/:id/users, /teams/:id/users/:userId, /teams/:id/websites. 클라우드 요청은 베어러 토큰과 함께 https://api.umami.is/v1로 전송되며, 자체 호스팅 요청은 {base}/api로 전송됩니다. 사용자 및 팀 관리 엔드포인트는 자체 호스팅 인스턴스에만 존재합니다.
라이선스
MIT
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.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables AI assistants to interact with Umami Analytics for both Cloud and self-hosted instances. It provides tools to retrieve website statistics, visitor metrics, pageview trends, and real-time active user counts.51MIT
- AlicenseBqualityDmaintenanceEnables natural language interaction with Plausible Analytics data to query traffic, visitors, engagement, and more using conversational questions.41MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Umami Analytics that provides read-only tools to query website stats, events, sessions, reports, and more, enabling natural language analytics queries.262MIT
- AlicenseAqualityBmaintenanceA read-only MCP server for Umami analytics, enabling natural language queries of website stats, traffic trends, events, sessions, and analytics reports.13121Elastic 2.0
Related MCP Connectors
Privacy-first web analytics. Query pageviews, referrers, trends, and AI insights.
Ask your app anything — revenue, errors, read-cost, growth — and get rendered charts back.
AI access to Hitsteps analytics, live visitors, uptime, goals, alerts, and chats.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/arttus/umami-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server