AppNiche MCP Server
Provides tools for iOS App Store market research, including app search, detail retrieval with revenue/download estimates, keyword difficulty scoring, and review sentiment analysis.
Click on "Deploy 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., "@AppNiche MCP ServerSearch for top fitness apps by revenue"
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.
AppNiche MCP Server
Open-source Model Context Protocol server for iOS App Store market research with AppNiche. It gives Claude, Cursor, Codex, and other MCP clients four read-only tools for app discovery, directional revenue and download estimates, ASO keyword research, and review analysis.
This repository runs a local stdio bridge to the AppNiche REST API. AppNiche also provides a hosted Streamable HTTP MCP endpoint if your client supports remote servers directly.
Tools
Tool | What it does | Credits |
| Search and filter iOS apps by keyword, category, rating, reviews, downloads, revenue, and sort order. | 1 |
| Get metadata, ratings, and directional revenue and download estimates for one app. | 1 |
| Score one iOS App Store keyword for difficulty and opportunity. | 10 |
| Fetch enriched review rows with sentiment and topic signals. | 1 |
All tools are read-only and marked with MCP read-only annotations.
Related MCP server: mcp-store-scraper
Requirements
Node.js 18 or newer.
An AppNiche API key from Settings > API Keys.
API and MCP access use the same credit pool. Current limits, pricing, and error behavior are documented in the API quickstart. Never commit an API key to source control.
Quick start
Run directly from GitHub with npx:
{
"mcpServers": {
"appniche": {
"command": "npx",
"args": ["-y", "github:skiffer/appniche-mcp-server"],
"env": {
"APPNICHE_API_KEY": "getappniche_replace_me"
}
}
}
}Or clone and build locally:
git clone https://github.com/skiffer/appniche-mcp-server.git
cd appniche-mcp-server
npm ci
npm run build
APPNICHE_API_KEY=getappniche_replace_me node dist/index.jsFor a local clone, point your MCP client to node with the absolute path to dist/index.js and
set APPNICHE_API_KEY in the server environment.
Docker is also supported:
docker build -t appniche-mcp-server .
docker run --rm -i \
-e APPNICHE_API_KEY=getappniche_replace_me \
appniche-mcp-serverKeep stdin open with -i; stdio carries the MCP JSON-RPC connection.
Hosted MCP alternative
Clients that support Streamable HTTP can use the hosted server without installing this bridge:
URL: https://api.getappniche.com/mcp
Authorization: Bearer YOUR_API_KEYExact setup snippets for Claude Code, Claude Desktop, Cursor, and generic MCP clients are in the AppNiche MCP setup guide.
Development
npm install
npm testnpm test compiles the TypeScript project, tests API request and error behavior, starts the
server over stdio, and verifies the published tool list. CI also builds the production Docker
image.
Data caveats
Revenue and download values are modeled estimates derived from public App Store signals. Treat them as directional market intelligence, not accounting data. AppNiche currently covers the Apple App Store; this server does not claim Google Play coverage.
License
MIT
Available Tools
4 toolsget_app_detailGet iOS app detailsARead-onlyIdempotent
Get one app profile with App Store metadata, ratings, and directional revenue and download estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description adds that the tool returns metadata, ratings, and estimates, which is useful context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 16 words, front-loaded with the core action. Every word earns its place, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately outlines the return categories. However, it could be more explicit about the return structure or the nature of 'directional' estimates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It mentions 'app' but does not explain the required app_id parameter format or pattern. The agent needs to infer the identifier format from the schema pattern, which is not described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a single app profile with App Store metadata, ratings, and revenue/download estimates. This verb+resource combination distinguishes it from sibling tools like get_app_reviews (reviews) and search_apps (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing detailed app data, and sibling names provide context, but there is no explicit guidance on when not to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_reviewsGet iOS app reviewsARead-onlyIdempotent
Fetch enriched App Store review rows with sentiment and topic signals for one iOS app.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Reviews to return; default 20. | |
| store | No | ||
| store_id | Yes | Apple numeric store ID, for example 284882215. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that results include sentiment and topic signals, but does not elaborate on pagination, rate limits, or other behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the tool's purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is read-only with good annotations and sibling context. However, absence of output schema means the description should ideally hint at return structure; it mentions 'rows' with sentiment/topics but lacks specifics, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% with descriptions for limit and store_id. The description adds minimal value beyond the schema, only implying the app is identified by store_id. No additional context for parameters like limit or store.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the resource 'App Store review rows with sentiment and topic signals'. It distinguishes from sibling tools like get_app_detail (which returns app metadata) and get_keyword_difficulty (which deals with keywords).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching reviews of a single iOS app but does not explicitly state when to use this tool versus alternatives like get_app_detail or search_apps. Lacks when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_difficultyScore an ASO keywordARead-onlyIdempotent
Estimate difficulty and opportunity for one iOS App Store keyword in a country and language.
| Name | Required | Description | Default |
|---|---|---|---|
| store | No | ||
| country | No | ISO country code; default US. | |
| keyword | Yes | ||
| language | No | Language code; default en. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context (iOS App Store scope) but does not disclose additional behavioral traits beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the key action 'Estimate difficulty and opportunity'. No redundant information or unnecessary detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks explanation of the output (e.g., difficulty score range, opportunity metric). With no output schema, the agent cannot infer what the tool returns. The tool has 4 parameters and moderate complexity, so the description is insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (2 of 4 parameters have schema descriptions). The description does not add meaning beyond the schema; it mentions 'country' and 'language' but no detail on values or defaults. Baseline is 3 for moderate coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Score an ASO keyword' and description 'Estimate difficulty and opportunity for one iOS App Store keyword in a country and language' clearly specify the verb (estimate), resource (keyword difficulty), and scope (iOS App Store, one keyword). It distinguishes itself from sibling tools like get_app_detail or search_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for keyword research on the iOS App Store, but does not explicitly state when to use this tool versus alternatives, nor does it provide conditions or exclusions. No guidance on when not to use or prerequisites is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_appsSearch iOS appsARead-onlyIdempotent
Search and filter iOS App Store apps by keyword, category, rating, reviews, downloads, revenue, and sort order.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results to return; default 20. | |
| store | No | App store. Currently apple only. | |
| offset | No | ||
| search | No | Title or keyword query. | |
| sort_by | No | ||
| category | No | App Store category. | |
| sort_dir | No | ||
| min_rating | No | ||
| min_revenue | No | ||
| min_reviews | No | ||
| min_downloads | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide safety info (readOnly, idempotent, non-destructive). Description adds no behavioral traits beyond the stated filters; e.g., no mention of pagination, sorting defaults, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 16 words, no filler. Front-loaded with verb and resource. Efficiently conveys core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 11 parameters and no output schema, description omits crucial context like result format, pagination behavior, and sorting details. Schema coverage is low, leaving many parameters undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 36%, but description lists only high-level filter dimensions (keyword, category, rating, etc.) without detailing specific parameters or constraints. Many parameters (offset, sort_by, sort_dir, min_*) are not addressed, insufficiently compensating for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (search and filter) and resource (iOS App Store apps) and lists many filter dimensions. Distinguishes well from siblings like get_app_detail and get_app_reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for searching/filtering, but no explicit guidance on when to use this tool vs. siblings like get_app_detail or get_app_reviews. No when-not or alternative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
get_app_detail - First observed
get_app_reviews - First observed
get_keyword_difficulty - First observed
search_apps
TDQS
Scored across 4 tools
Each tool targets a distinct purpose: fetching app metadata, reviews, keyword difficulty, and app search. No overlap in functionality.
All tool names follow a consistent verb_noun pattern using snake_case (get_app_detail, get_app_reviews, get_keyword_difficulty, search_apps).
With 4 tools, the server is slightly minimal but remains well-scoped for its niche of iOS App Store data. Each tool adds clear value without unnecessary bloat.
The set covers key app store operations: search, detail, reviews, and keyword analysis. Minor gaps like top charts or developer-level queries exist but don't impede core workflows.
Maintenance
Related MCP Connectors
ASO analytics and App Store optimization tools for indie iOS developers and AI agents.
Track app-store rankings, history, listing metadata, reviews and competitors across four stores.
App Store & Google Play keyword ranks, rivals, reviews, charts and AI visibility as an MCP server
811App Store keyword research, rank tracking and App Store Connect performance for your iOS apps.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides comprehensive market intelligence by analyzing data from both the Apple App Store and Google Play Store, enabling users to research apps, track market trends, study competitors, and understand user feedback across mobile marketplaces.2019 npm26MIT
- AlicenseBqualityBmaintenanceMCP server that scrapes app data from Google Play and Apple App Store, providing tools for search, details, reviews, and similar apps.818 npmMIT
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that exposes the entire Apple App Store Connect API (1,200+ operations) as MCP tools, enabling AI assistants to query apps, manage builds, handle submissions, read analytics, and more.16 npmMIT
- AlicenseAqualityCmaintenanceAn MCP server that gives AI assistants structured access to App Store Connect data. Built for ASO analysis, download tracking, and performance monitoring.7247 npm1MIT