{"_id":"@barush/sensor-tower-mcp","_rev":"2-d5cabb431d2198c1dbecc99e49aac3a5","name":"@barush/sensor-tower-mcp","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@barush/sensor-tower-mcp","version":"1.0.0","_id":"@barush/sensor-tower-mcp@1.0.0","maintainers":[{"name":"elad-bar","email":"elad.bar@hotmail.com"}],"bin":{"sensor-tower-mcp":"build/index.js"},"dist":{"shasum":"be26e6f11835a6898dc3d5471a911477d236abc8","tarball":"https://registry.npmjs.org/@barush/sensor-tower-mcp/-/sensor-tower-mcp-1.0.0.tgz","fileCount":90,"integrity":"sha512-sTC0HGlgkV/lIBMJpWayXgG1kiyLV8clEknYv8zLH47KaxLcwgnUXvkwpK7sRuy+0chKdCEYmZxhVopyFtQ+3A==","signatures":[{"sig":"MEUCIGizTERRYhZNL0N5cPqIfQM3x8+A8Ghqg2Pd4GwgseVeAiEA48wdKN6cjQd9D7HiYBLdtKKBPWmPRcWlivFWG2T2pZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467090},"main":"build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"74f19261dd46e68d3471fa59598ac36a32166c3d","scripts":{"build":"tsc && shx chmod 755 build/index.js","start":"node build/index.js","prestart":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"elad-bar","email":"elad.bar@hotmail.com"},"_npmVersion":"10.8.2","description":"MCP server that exposes the Sensor Tower App Analysis API as AI-consumable tools","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.24.3","axios":"^1.9.0","dotenv":"^16.4.5","express":"^5.2.1","json-schema-to-zod":"^2.6.1","@modelcontextprotocol/sdk":"^1.10.0"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","typescript":"^5.8.3","@types/node":"^22.15.2","@types/express":"^5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/sensor-tower-mcp_1.0.0_1778487888484_0.15562464820798882","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@barush/sensor-tower-mcp","version":"1.0.1","description":"MCP server that exposes the Sensor Tower App Analysis API as AI-consumable tools","type":"module","main":"build/index.js","scripts":{"start":"node build/index.js","build":"tsc && shx chmod 755 build/index.js","typecheck":"tsc --noEmit","prestart":"npm run build"},"engines":{"node":">=20.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"^1.10.0","axios":"^1.9.0","dotenv":"^16.4.5","express":"^5.2.1","json-schema-to-zod":"^2.6.1","zod":"^3.24.3"},"devDependencies":{"@types/express":"^5.0.6","@types/node":"^22.15.2","shx":"^0.4.0","typescript":"^5.8.3"},"bin":{"sensor-tower-mcp":"build/index.js"},"_id":"@barush/sensor-tower-mcp@1.0.1","gitHead":"ae93ee1776ddfa9fd4f982acf21f07928f601459","types":"./build/index.d.ts","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-P+fY42DUc76jBGkBWXWeGtxzXVQJM9UiQFPaGHTP4twNDkOYibQDzKGXAgnR8/JWHbwL3aFztfgIVqgncx4OAA==","shasum":"57b4363ba113a59f6c239bd02eeebcc8ef742de2","tarball":"https://registry.npmjs.org/@barush/sensor-tower-mcp/-/sensor-tower-mcp-1.0.1.tgz","fileCount":90,"unpackedSize":467308,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCCypYewqoaW42Fr9IEgaUjY23wgBynBX98V/gtvZJxpgIhALqRvJ/n96yS2Zdl5lA+KyCREIBVxrxlDZMRgklFSvDw"}]},"_npmUser":{"name":"elad-bar","email":"elad.bar@hotmail.com"},"directories":{},"maintainers":[{"name":"elad-bar","email":"elad.bar@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sensor-tower-mcp_1.0.1_1778488675271_0.34895584463152707"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-11T08:24:48.415Z","modified":"2026-05-11T08:37:55.574Z","1.0.0":"2026-05-11T08:24:48.626Z","1.0.1":"2026-05-11T08:37:55.439Z"},"description":"MCP server that exposes the Sensor Tower App Analysis API as AI-consumable tools","maintainers":[{"name":"elad-bar","email":"elad.bar@hotmail.com"}],"readme":"# Sensor Tower MCP Server\n\nAn MCP server that exposes the Sensor Tower API as AI-consumable tools. 90+ endpoints across 19 categories — app downloads, revenue, demographics, advertising, SDK insights, ASO, web analytics, and more.\n\n## Prerequisites\n\n- A **Sensor Tower API key** ([generate one here](https://app.sensortower.com/users/edit/api-settings))\n\n## Setup\n\nAdd the server to your MCP client config. For Cursor, edit `.cursor/mcp.json`. For Claude Desktop, edit `claude_desktop_config.json`.\n\n### Local (stdio)\n\nNo build or clone needed — run directly via npx:\n\n```json\n{\n  \"mcpServers\": {\n    \"sensor-tower\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@barush/sensor-tower-mcp\"],\n      \"env\": {\n        \"SENSOR_TOWER_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\nAlternatively, if you have the repo cloned locally:\n\n```json\n{\n  \"mcpServers\": {\n    \"sensor-tower\": {\n      \"command\": \"node\",\n      \"args\": [\"<path-to-repo>/build/index.js\"],\n      \"env\": {\n        \"SENSOR_TOWER_API_KEY\": \"your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n### Remote (HTTP)\n\nConnect to a running instance. No local build needed — just provide the server URL and your API key:\n\n```json\n{\n  \"mcpServers\": {\n    \"sensor-tower\": {\n      \"url\": \"http://your-server:3000/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer your_api_key_here\"\n      }\n    }\n  }\n}\n```\n\n## Deploying the Remote Server\n\nFor shared or hosted deployments, run the server in HTTP mode. Each client sends their own Sensor Tower API key via the `Authorization` header, enabling multi-user access.\n\n### With Docker (recommended)\n\n```bash\ndocker run -p 3000:3000 ghcr.io/elad-bar/sensor-tower-mcp:main\n```\n\nOr using Docker Compose:\n\n```bash\ndocker compose up\n```\n\nTo use a different port:\n\n```bash\nPORT=8080 docker compose up\n```\n\n### Without Docker\n\n```bash\nnpm install && npm run build\nnode build/index.js --transport http\n```\n\nThe server listens on `POST /mcp` (port 3000 by default). `GET /mcp` and `DELETE /mcp` return 405 (stateless mode — no server-side sessions).\n\n## Available Tools\n\n### App Overview\n\n| Tool | Description |\n|------|-------------|\n| `search_entities` | Search for apps and publishers by name, description, app ID, or Unified ID |\n| `apps` | Retrieve app metadata (name, publisher, categories, icon, etc.) |\n| `top_in_app_purchases` | Retrieve top in-app purchases for requested apps |\n\n### Downloads & Revenue\n\n| Tool | Description |\n|------|-------------|\n| `sales_report_estimates` | Download and revenue estimates by country and date |\n\n### Active Users\n\n| Tool | Description |\n|------|-------------|\n| `usage_active_users` | Active user estimates (DAU/WAU/MAU) per country and date |\n\n### Category Rankings\n\n| Tool | Description |\n|------|-------------|\n| `category_history` | Historical ranking for an app by category and chart type |\n| `category_ranking_summary` | Today's category ranking summary for an app |\n\n### Advertising\n\n| Tool | Description |\n|------|-------------|\n| `creatives` | Creatives for an advertising app with SOV and top publishers |\n| `impressions` | SOV time series for requested apps |\n| `impressions_rank` | Ranks by country, network, and date for requested apps |\n\n### Acquisition & Churn\n\n| Tool | Description |\n|------|-------------|\n| `app_analysis_retention` | Retention from day 1 to day 90 with baseline |\n| `download_channels` | Download source breakdown (organic, paid, search, browser) |\n| `churn_analysis` | Churn rate and active user breakdown metrics |\n| `churn_analysis_cohorts` | Available churn analysis cohorts |\n| `cohort_retention` | Cohort retention from panel users |\n| `cohort_retention_cohorts` | Available cohort retention cohorts |\n| `getRetentionMetrics` | Retention metrics (daily/weekly/monthly periods) |\n\n### Demographics\n\n| Tool | Description |\n|------|-------------|\n| `app_analysis_demographics` | Demographic breakdown by gender and age range |\n\n### Session Metrics\n\n| Tool | Description |\n|------|-------------|\n| `session_metrics_timeseries` | Session metrics time series for iOS/Android apps |\n| `unified_session_metrics_timeseries` | Session metrics time series for unified apps |\n\n### Engagement\n\n| Tool | Description |\n|------|-------------|\n| `engagement_insights_cohort_session_metrics` | App engagement trends from panel users |\n| `engagement_insights_cohorts` | Available engagement insights cohorts |\n| `time_of_day` | Time of day usage data from panel users |\n| `time_of_day_cohorts` | Available time of day cohorts |\n| `power_user_curve` | Power user curve from panel users |\n| `power_user_curve_cohorts` | Available power user curve cohorts |\n\n### Geographic Usage\n\n| Tool | Description |\n|------|-------------|\n| `metro_active_users` | Active users by metropolitan area |\n| `state_active_users` | Active users by US state |\n\n### Install Metrics\n\n| Tool | Description |\n|------|-------------|\n| `getInstallMetrics` | Install base, penetration, and engagement metrics |\n\n### App Updates\n\n| Tool | Description |\n|------|-------------|\n| `app_update_timeline` | Detailed app update history (version, summary, screenshots) |\n| `version_history` | Version history with release notes |\n\n### Cross-App Usage\n\n| Tool | Description |\n|------|-------------|\n| `app_overlap` | Apps that users of a given app are more likely to use |\n| `cohort_engagement_cohort_session_metrics` | Cross-app engagement trends from panel users |\n| `cohort_engagement_cohorts` | Available cross-app engagement cohorts |\n\n### SDK Insights\n\n| Tool | Description |\n|------|-------------|\n| `getSDKAnalysis` | Timeseries metrics for SDKs |\n| `getSDKOverviewApps` | Apps with a particular SDK installed or uninstalled |\n| `sdk_overview` | Metadata and performance metrics for SDKs |\n\n### Market Analysis\n\n| Tool | Description |\n|------|-------------|\n| `ranking` | Top ranking apps by category, chart type, and country |\n| `top_apps` | Top apps by download and revenue estimates |\n| `top_apps_active_users` | Top apps by active users (DAU/WAU/MAU) |\n| `top_publishers` | Top publishers by downloads and revenue |\n| `store_summary` | Aggregated download and revenue estimates for store categories |\n| `top_advertisers` | Top advertisers or publishers by Share of Voice |\n| `top_advertisers_search` | Search for rank of an advertiser or publisher |\n| `top_creatives` | Top creatives by Share of Voice |\n| `games_breakdown` | Aggregated download and revenue for game categories |\n\n### Store Marketing\n\n| Tool | Description |\n|------|-------------|\n| `aso_keyword_research` | Keyword summary with traffic, difficulty, and ranking apps |\n| `aso_timeseries` | ASO keyword timeseries metrics |\n| `aso_rank_overview` | Keyword rank distribution over time |\n| `aso_top_keywords` | Top keywords for an app |\n| `featured_apps` | Featured apps and games in the App Store |\n| `featured_creatives` | Featured creatives for an app |\n| `featured_impacts` | Featured occurrence and download impact |\n| `featured_today_stories` | Featured Today stories from the App Store |\n| `getRatingsMetrics` | Rating metrics (incremental or cumulative) |\n| `get_reviews` | App reviews with filtering and pagination |\n| `getReviewsByRating` | Review metrics broken down by rating |\n| `getReviewsBySentiment` | Review metrics broken down by sentiment |\n| `getReviewsByTag` | Review metrics broken down by tag |\n| `search_ads_apps` | Apple Search Ads analytics for your apps |\n| `search_ads_terms` | Apple Search Ads metrics by source type |\n| `search_ads_history` | Apple Search Ads historical data |\n\n### Custom Fields\n\n| Tool | Description |\n|------|-------------|\n| `app_ids_by_category` | App IDs by release/updated date range and category |\n| `publisher_apps` | Apps for a particular publisher |\n| `unified_publisher_apps` | Unified publisher and all apps across platforms |\n| `unified_apps` | iOS/Android app IDs for unified apps |\n| `unified_publishers` | iOS/Android publisher IDs for unified publishers |\n| `tags_for_apps` | Global or custom field tag values for apps |\n| `apps_by_tag` | Apps with a particular tag value |\n| `custom_field_list` | Custom fields and tags with app counts |\n| `add_tag_for_app` | Add a tag value to a custom field for an app |\n| `edit_tag` | Edit a tag value for an app |\n| `remove_tag_for_app` | Remove a tag value from an app |\n| `change_all_values_matching` | Bulk change tag values in a custom field |\n| `remove_custom_field` | Remove a custom field entirely |\n| `create_custom_fields_filter` | Create a custom fields filter |\n| `get_custom_fields_filter` | Retrieve a custom fields filter by ID |\n| `get_custom_fields_filter_values` | Available fields and values for filters |\n\n### Your Metrics\n\n| Tool | Description |\n|------|-------------|\n| `my_app_analytics` | App Store analytics for connected apps |\n| `my_sources_metrics` | Source type metrics for connected apps |\n| `my_sales_reports` | Downloads and revenue sales reports for connected apps |\n| `unified_sales_reports` | Unified sales reports across platforms |\n| `api_usage` | Sensor Tower API usage metrics |\n\n### Web Insights\n\n| Tool | Description |\n|------|-------------|\n| `website_device_overlap` | Visitor distribution across devices |\n| `website_duration` | Visit duration metrics |\n| `top_websites` | Top websites by traffic |\n| `website_visits` | Visit metrics (unique visitors, page views) |\n| `website_paths` | Path metrics for user journey analysis |\n| `website_traffic_channels` | Traffic channel breakdown |\n| `website_traffic_flow` | Traffic flow (referral and destination patterns) |\n| `website_top_paths` | Top paths by traffic |\n| `gen_ai_citations` | Gen AI citation metrics for websites |\n\n## Configuration\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `SENSOR_TOWER_API_KEY` | stdio only | — | Sensor Tower API key (in HTTP mode, clients send it via `Authorization` header) |\n| `PORT` | No | `3000` | HTTP server port (only used with `--transport http`) |\n\n---\n\n## Development\n\n### Building from source\n\nRequires **Node.js >= 20**.\n\n```bash\nnpm install\nnpm run build\n```\n\n### Scripts\n\n```bash\nnpm run build       # Compile TypeScript\nnpm run typecheck   # Type-check without emitting\nnpm start           # Build and start (stdio mode)\n```\n\n### Docker build (local)\n\n```bash\ndocker build -t sensor-tower-mcp .\ndocker run -p 3000:3000 sensor-tower-mcp\n```\n\nPre-built images are published to `ghcr.io/elad-bar/sensor-tower-mcp` on every push to `main`.\n","readmeFilename":"README.md"}