{"_id":"@appmetahub/mcp","_rev":"5-c1e2a45791182f469c2efd6e3d98b961","name":"@appmetahub/mcp","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@appmetahub/mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","claude","cursor"],"author":{"name":"dowhiletrue.co"},"license":"MIT","_id":"@appmetahub/mcp@1.0.0","maintainers":[{"name":"appmetahub","email":"dowhiletruesro@gmail.com"}],"bin":{"appmetahub-mcp":"dist/index.js"},"dist":{"shasum":"741f5a2e0353008e413ca79d3d3e54ae4ec9566f","tarball":"https://registry.npmjs.org/@appmetahub/mcp/-/mcp-1.0.0.tgz","fileCount":6,"integrity":"sha512-jSYiTyO7wI3iCfrXAOlI0OIgi+wohpnoKwB44Mw+Y0ykLEa+A0J98Ax5frkulNf6SzKG+1rQkOREf9QzbaV7GQ==","signatures":[{"sig":"MEUCIHMyYkcJMcNygZFVRYgjIXamYGCFxXc58lRlj5LDff/OAiEAhm3H9cUSq7ksBS0SL9rCiGyPzvUbNSJM8CA0qrRppH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93072},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d8cd260d50504486a0405cdcaf1610678fee9014","private":false,"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"appmetahub","email":"dowhiletruesro@gmail.com"},"_npmVersion":"11.6.0","description":"MCP Server for App Store Optimization - manage metadata via AI assistants","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.0_1771625099806_0.00007961582949000956","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Use the remote HTTP server instead — see https://appmetahub.com/docs"},"1.0.1":{"name":"@appmetahub/mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","aso","app-store-optimization","claude","cursor"],"author":{"name":"dowhiletrue.co"},"license":"MIT","_id":"@appmetahub/mcp@1.0.1","maintainers":[{"name":"appmetahub","email":"dowhiletruesro@gmail.com"}],"bin":{"appmetahub-mcp":"dist/index.js"},"dist":{"shasum":"ef334d90b1af73d9e875e6d25e10be54e9c14aeb","tarball":"https://registry.npmjs.org/@appmetahub/mcp/-/mcp-1.0.1.tgz","fileCount":6,"integrity":"sha512-KY8DDkqdnEQziwnG68w4lNazVjq+q8itjbCmx+zQGK2LqIHMPyh1gmARBBRwy5h7LqyRT0GrptkWi57eKGlVYg==","signatures":[{"sig":"MEUCIQDxVsdZhl+FWPtsD+4scFFd3+XksdbLv6BFPe8ZQg0jhAIgLSU5YcvnDo7FJhfo7JYos3o1Y8LaO5JuL0Mzysz8Aoc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92615},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1992095996668059c5fe9083d3bffcf2e8d60315","private":false,"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"appmetahub","email":"dowhiletruesro@gmail.com"},"_npmVersion":"11.6.0","description":"MCP Server for App Store Optimization - manage metadata via AI assistants","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.0.1_1771625422097_0.22424331022240107","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Use the remote HTTP server instead — see https://appmetahub.com/docs"},"1.1.0":{"name":"@appmetahub/mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","aso","app-store-optimization","claude","cursor"],"author":{"name":"dowhiletrue.co"},"license":"MIT","_id":"@appmetahub/mcp@1.1.0","maintainers":[{"name":"appmetahub","email":"dowhiletruesro@gmail.com"}],"bin":{"appmetahub-mcp":"dist/index.js"},"dist":{"shasum":"680e754ee9106177dbce62c6d1f3fe662df7577d","tarball":"https://registry.npmjs.org/@appmetahub/mcp/-/mcp-1.1.0.tgz","fileCount":6,"integrity":"sha512-F+nY01FmN+CkJjkZMTXyCBNg06B28ordffrT5f/twpE66A7pWcJh4hcdvfTsHZ7lSgWxMpdi/BXAvwfrXqMTsg==","signatures":[{"sig":"MEUCIBCD/bnKT0iO9O1RCwUCI1/OqD2w0fShSnOIvc+bWz2lAiEAlpi/SMzMGLzPZbIfRHhv/RoUf/JYW9K8KZi6ovHXYBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100485},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"43b7f224f74f4a58ec88590bdb26b608225ce60b","private":false,"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"appmetahub","email":"dowhiletruesro@gmail.com"},"_npmVersion":"11.6.0","description":"MCP Server for App Store Optimization - manage metadata via AI assistants","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.1.0_1771920090914_0.5174611382590935","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Use the remote HTTP server instead — see https://appmetahub.com/docs"},"1.1.1":{"name":"@appmetahub/mcp","version":"1.1.1","keywords":["mcp","model-context-protocol","aso","app-store-optimization","claude","cursor"],"author":{"name":"dowhiletrue.co"},"license":"MIT","_id":"@appmetahub/mcp@1.1.1","maintainers":[{"name":"appmetahub","email":"dowhiletruesro@gmail.com"}],"bin":{"appmetahub-mcp":"dist/index.js"},"dist":{"shasum":"99bc1a532d0a47589ea56618a69475080e41c362","tarball":"https://registry.npmjs.org/@appmetahub/mcp/-/mcp-1.1.1.tgz","fileCount":6,"integrity":"sha512-Sr3HopeLvBxdGuNK5I6aNMi2mPc6ihHGvMr1czvGuVjLjNjJG21tD7T+SdUT5GPPxR8YhJYWkGyZyudNAWqDHA==","signatures":[{"sig":"MEUCIQDXgIf6yr2ygyPhrZ5JX/Nwjgv1SBm1QiaMMY6V+sQbOgIgR1wUilqFGC7RGUhb/fbmYFbEGJ5NChF5RqOK4xnXrSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101425},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fa16e70047cd41fb8e7ba85514248913bd2d882a","private":false,"scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"appmetahub","email":"dowhiletruesro@gmail.com"},"_npmVersion":"11.6.0","description":"MCP Server for App Store Optimization - manage metadata via AI assistants","directories":{},"_nodeVersion":"24.2.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_1.1.1_1771920287242_0.9798846836738544","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Use the remote HTTP server instead — see https://appmetahub.com/docs"}},"time":{"created":"2026-02-20T22:04:59.711Z","modified":"2026-02-24T10:32:34.311Z","1.0.0":"2026-02-20T22:04:59.988Z","1.0.1":"2026-02-20T22:10:22.259Z","1.1.0":"2026-02-24T08:01:31.099Z","1.1.1":"2026-02-24T08:04:47.389Z"},"author":{"name":"dowhiletrue.co"},"license":"MIT","keywords":["mcp","model-context-protocol","aso","app-store-optimization","claude","cursor"],"description":"MCP Server for App Store Optimization - manage metadata via AI assistants","maintainers":[{"name":"appmetahub","email":"dowhiletruesro@gmail.com"}],"readme":"# AppMetaHub MCP Server\n\nModel Context Protocol (MCP) server for App Store Optimization. Access your AppMetaHub data and AI features directly from Claude Code, Cursor, or any MCP-compatible AI assistant.\n\n**One API key. No installation.** Just add the config below and you're ready to go.\n\n## Features\n\n- **List & manage apps** — View all your apps, metadata, and sync status\n- **Version management** — Create new App Store versions, list builds, and attach builds\n- **Keyword tracking** — Add, remove, and check keyword rankings\n- **Competitor analysis** — Track competitors and compare metrics\n- **Reviews** — Fetch customer reviews with filtering\n- **AI-powered generation** — Generate optimized metadata and keyword suggestions\n- **Locale management** — Create and sync locales from App Store Connect\n- **Monetization** — Manage subscriptions and in-app purchases, including localizations\n- **Screenshots** — Upload screenshots to App Store Connect\n- **Push to App Store** — Push metadata and localization changes to App Store Connect\n\n## Setup\n\n### Prerequisites\n\n1. **AppMetaHub account** — Sign up at [appmetahub.com](https://appmetahub.com)\n2. **API key** — Generate one in Settings > API Keys\n\n### Configure your MCP client\n\nNo installation needed — the server runs via `npx` and downloads automatically.\n\n**Claude Code** — add to `.mcp.json` (or `~/.claude/.mcp.json` for global access):\n\n```json\n{\n  \"mcpServers\": {\n    \"appmetahub\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@appmetahub/mcp\"],\n      \"env\": {\n        \"ASO_API_KEY\": \"aso_your_key_here\"\n      }\n    }\n  }\n}\n```\n\n**Cursor** — add to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"appmetahub\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@appmetahub/mcp\"],\n      \"env\": {\n        \"ASO_API_KEY\": \"aso_your_key_here\"\n      }\n    }\n  }\n}\n```\n\n**Windsurf / other MCP clients** — use the same `command` and `args` format. Check your tool's docs for the config file location.\n\n## Environment Variables\n\n| Variable      | Required | Description                                     |\n| ------------- | -------- | ----------------------------------------------- |\n| `ASO_API_KEY` | Yes      | Your AppMetaHub API key (generate in dashboard) |\n\n## Available Tools (33 total)\n\n### Read Operations\n\n| Tool              | Description                                   |\n| ----------------- | --------------------------------------------- |\n| `list-apps`       | List all your apps from App Store Connect     |\n| `get-app`         | Get detailed info about a specific app        |\n| `get-metadata`    | Get App Store metadata for a locale           |\n| `get-keywords`    | Get tracked keywords for an app               |\n| `get-locales`     | List available locales with completion status |\n| `get-competitors` | Get tracked competitors for an app            |\n| `get-reviews`     | Fetch customer reviews with filtering         |\n\n### Write Operations\n\n| Tool                 | Description                                                    |\n| -------------------- | -------------------------------------------------------------- |\n| `update-metadata`    | Update metadata fields (name, subtitle, description, keywords) |\n| `add-keyword`        | Add a keyword to tracking                                      |\n| `add-keywords-batch` | Add multiple keywords at once                                  |\n| `delete-keyword`     | Remove a keyword from tracking                                 |\n| `add-competitor`     | Add a competitor app to track                                  |\n\n### Version Management\n\n| Tool             | Description                                              |\n| ---------------- | -------------------------------------------------------- |\n| `create-version` | Create a new App Store version (starts in Prepare state) |\n| `list-builds`    | List valid builds available to attach to a version       |\n| `attach-build`   | Attach a processed build to an App Store version         |\n\n### Locale Management\n\n| Tool            | Description                         |\n| --------------- | ----------------------------------- |\n| `create-locale` | Create a new locale for an app      |\n| `sync-locales`  | Sync locales from App Store Connect |\n\n### Monetization — Read\n\n| Tool                 | Description                       |\n| -------------------- | --------------------------------- |\n| `list-subscriptions` | List all subscriptions for an app |\n| `list-iaps`          | List all in-app purchases         |\n\n### Monetization — Write\n\n| Tool                               | Description                                      |\n| ---------------------------------- | ------------------------------------------------ |\n| `sync-subscriptions`               | Sync subscriptions from App Store Connect        |\n| `sync-iaps`                        | Sync in-app purchases from App Store Connect     |\n| `update-subscription`              | Update subscription details                      |\n| `update-iap`                       | Update in-app purchase details                   |\n| `update-subscription-localization` | Update subscription display name and description |\n| `update-iap-localization`          | Update IAP display name and description          |\n\n### Monetization — Push\n\n| Tool                             | Description                                         |\n| -------------------------------- | --------------------------------------------------- |\n| `push-subscription-localization` | Push subscription localization to App Store Connect |\n| `push-iap-localization`          | Push IAP localization to App Store Connect          |\n\n### Screenshots\n\n| Tool                 | Description                             |\n| -------------------- | --------------------------------------- |\n| `upload-screenshots` | Upload screenshots to App Store Connect |\n\n### AI Operations\n\n| Tool                | Description                                           |\n| ------------------- | ----------------------------------------------------- |\n| `generate-metadata` | AI-generate optimized titles, subtitles, and keywords |\n| `suggest-keywords`  | Get AI-powered keyword suggestions                    |\n\n### Analysis Operations\n\n| Tool                  | Description                             |\n| --------------------- | --------------------------------------- |\n| `check-ranks`         | Trigger rank check for tracked keywords |\n| `compare-competitors` | Compare your app with competitors       |\n\n### Push Operations\n\n| Tool               | Description                                |\n| ------------------ | ------------------------------------------ |\n| `push-to-appstore` | Push metadata changes to App Store Connect |\n\n## Example Workflows\n\n### 1. Generate and Apply Metadata\n\n```\nYou: List my apps\n→ Uses list-apps\n\nYou: Generate new metadata for Teleprompter app\n→ Uses generate-metadata with appId\n\nYou: Apply the first title option and second subtitle\n→ Uses update-metadata with selected values\n\nYou: Preview what will be pushed to App Store\n→ Uses push-to-appstore with confirm=false\n\nYou: Push it to App Store\n→ Uses push-to-appstore with confirm=true\n```\n\n### 2. Keyword Research\n\n```\nYou: Suggest keywords for my GPS Photo app focusing on photographers\n→ Uses suggest-keywords with context\n\nYou: Add the top 5 primary keywords to tracking\n→ Uses add-keywords-batch\n\nYou: Check the current rankings\n→ Uses check-ranks, then get-keywords\n```\n\n### 3. Competitor Analysis\n\n```\nYou: Add ProCamera as a competitor\n→ Uses add-competitor with searchQuery\n\nYou: Compare my app with all competitors\n→ Uses compare-competitors\n\nYou: What are competitors' ratings?\n→ Uses get-competitors\n```\n\n### 4. Review Analysis\n\n```\nYou: Show me recent negative reviews\n→ Uses get-reviews with maxRating=2\n\nYou: How many unseen reviews do I have?\n→ Uses get-reviews with unseenOnly=true\n```\n\n### 5. Create a New Version and Prepare Metadata\n\n```\nYou: Create version 2.1.0 for my Teleprompter app\n→ Uses create-version with confirm=true\n\nYou: Update the description and keywords for en-US\n→ Uses update-metadata\n\nYou: List available builds\n→ Uses list-builds\n\nYou: Attach the latest build\n→ Uses attach-build with confirm=true\n\nYou: Push metadata to App Store\n→ Uses push-to-appstore with confirm=true\n```\n\n### 6. Manage Subscriptions\n\n```\nYou: Sync my subscriptions from App Store Connect\n→ Uses sync-subscriptions\n\nYou: Update the German localization for my Pro subscription\n→ Uses update-subscription-localization\n\nYou: Push that to App Store Connect\n→ Uses push-subscription-localization\n```\n\n## API Key Scopes\n\nWhen generating an API key, you can limit its permissions:\n\n| Scope   | Allows                                 |\n| ------- | -------------------------------------- |\n| `read`  | All read operations                    |\n| `write` | Update metadata, keywords, competitors |\n| `push`  | Push changes to App Store Connect      |\n| `*`     | Full access (all operations)           |\n\nNo scopes = full access.\n\n## Troubleshooting\n\n### \"Invalid API key\" error\n\n- Verify your API key is correct in the MCP client config\n- Check if the key is active (not revoked) in the dashboard\n- Ensure there's no extra whitespace around the key value\n\n### \"App not found or access denied\"\n\n- Verify the app ID is correct (UUID format)\n- Check that you own the app in your AppMetaHub account\n\n### Server doesn't start\n\n- Ensure `ASO_API_KEY` is set in your MCP client config\n- Try clearing the npx cache: `npx clear-npx-cache`, then restart your editor\n- AI features are handled server-side — no separate AI API key needed\n\n## Security\n\n- **No database credentials exposed** — the MCP server never accesses the database directly. All requests route through the authenticated API.\n- API keys are hashed with SHA-256 before storage\n- Rate limiting applied to prevent abuse\n- Keys can be scoped to specific permissions\n- Keys can have expiration dates\n- All actions are logged for audit\n\n## License\n\nMIT\n","readmeFilename":"README.md"}