Skip to main content
Glama
skiffer

AppNiche MCP Server

by skiffer

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_apps

Search and filter iOS apps by keyword, category, rating, reviews, downloads, revenue, and sort order.

1

get_app_detail

Get metadata, ratings, and directional revenue and download estimates for one app.

1

get_keyword_difficulty

Score one iOS App Store keyword for difficulty and opportunity.

10

get_app_reviews

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

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.js

For 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-server

Keep 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_KEY

Exact setup snippets for Claude Code, Claude Desktop, Cursor, and generic MCP clients are in the AppNiche MCP setup guide.

Development

npm install
npm test

npm 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 tools
get_app_detailGet iOS app detailsA
Read-onlyIdempotent

Get one app profile with App Store metadata, ratings, and directional revenue and download estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 reviewsA
Read-onlyIdempotent

Fetch enriched App Store review rows with sentiment and topic signals for one iOS app.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReviews to return; default 20.
storeNo
store_idYesApple numeric store ID, for example 284882215.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 keywordA
Read-onlyIdempotent

Estimate difficulty and opportunity for one iOS App Store keyword in a country and language.

ParametersJSON Schema
NameRequiredDescriptionDefault
storeNo
countryNoISO country code; default US.
keywordYes
languageNoLanguage code; default en.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 appsA
Read-onlyIdempotent

Search and filter iOS App Store apps by keyword, category, rating, reviews, downloads, revenue, and sort order.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults to return; default 20.
storeNoApp store. Currently apple only.
offsetNo
searchNoTitle or keyword query.
sort_byNo
categoryNoApp Store category.
sort_dirNo
min_ratingNo
min_revenueNo
min_reviewsNo
min_downloadsNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv0.1.0
    • First observedget_app_detail
    • First observedget_app_reviews
    • First observedget_keyword_difficulty
    • First observedsearch_apps

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct purpose: fetching app metadata, reviews, keyword difficulty, and app search. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (get_app_detail, get_app_reviews, get_keyword_difficulty, search_apps).

Tool Count4/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    20
    19 npm
    26
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    MCP server that scrapes app data from Google Play and Apple App Store, providing tools for search, details, reviews, and similar apps.
    8
    18 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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 npm
    MIT