App intelligence query engine for 1B+ app reviews and market data
appdatalayer-mcp
Open-source TypeScript SDK for the AppDataLayer MCP Server — the App Intelligence Query Engine powered by the Model Context Protocol.
Analyze 1B+ app reviews across Google Play and the Apple App Store. Semantic topic search, sentiment analysis, keyword rankings, competitive analysis, and time-series forecasting — all through a single typed API.
Installation
npm install appdatalayer-mcp
Quick Start
As a TypeScript/JavaScript SDK
import { AppDataLayerClient } from "appdatalayer-mcp";
const client = new AppDataLayerClient({ apiKey: "sk_live_..." });
// Get app metadata
const app = await client.getAppOverview("com.instagram.android");
console.log(app.data?.title, app.data?.score);
// Analyze review sentiment
const reviews = await client.analyzeReviews({
app_id: "com.spotify.music",
dimensions: ["sentiment", "topic"],
days: 30,
});
// Semantic topic search
const topics = await client.searchTopics("crashes and bugs");
// Compare apps head-to-head
const comparison = await client.compareApps({
app_ids: ["com.spotify.music", "com.apple.music"],
});
// Forecast review volume
const forecast = await client.forecastMetric({
series: [100, 120, 115, 130, 128, 145, 142, 160, 155, 170],
horizon: 7,
});
await client.disconnect();
As an MCP Server for LLM Agents
Use AppDataLayer directly in Claude Desktop, Cursor, Windsurf, or any MCP-compatible AI agent:
import { generateMcpConfig } from "appdatalayer-mcp";
const config = generateMcpConfig("sk_live_...");
console.log(JSON.stringify(config, null, 2));
Paste the output into your agent's config file:
| Client | Config File |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
| Windsurf | ~/.windsurf/mcp.json |
| VS Code | .vscode/mcp.json |
Generated config:
{
"mcpServers": {
"appdatalayer": {
"url": "https://mcp.appdatalayer.com/mcp",
"headers": {
"APPDATALAYER_API_KEY": "sk_live_..."
}
}
}
}
Available Tools
The SDK provides typed methods for all 22 MCP tools:
Data Querying
| Method | Description |
|---|---|
getAppOverview(appId) |
App metadata: title, developer, score, installs, rating histogram |
analyzeReviews(input) |
Aggregate reviews by day/week/month/sentiment/country/score/topic |
getKeywordRankings(input) |
Track app ranking for a search keyword over time |
getTopCharts(input?) |
Latest top charts (free, paid, grossing, new) |
getSimilarApps(appId) |
Apps similar/related to a given app |
getSearchSuggestions(input) |
Autocomplete suggestions from app stores |
getGlobalStats() |
Platform totals: apps tracked, reviews count |
getReviewsByTopics(input) |
Actual review text filtered by topic IDs |
compareApps(input) |
Head-to-head comparison of 2-5 apps |
getTopicTrend(input) |
Track topic volume and sentiment changes over time |
Topic Intelligence
| Method | Description |
|---|---|
resolveTopics(ids) |
Convert topic IDs → human-readable labels |
searchTopics(query) |
Semantic search over 1M+ review topics |
findAppsByTopics(input) |
Find apps at the intersection of two topic sets |
Forecasting
| Method | Description |
|---|---|
forecastMetric(input) |
Predict future values using Google TimesFM 2.5 |
Scraping Operations
| Method | Description |
|---|---|
getScrapeJobsOverview() |
Overview of all scraping jobs by type |
listScrapeJobs(input?) |
List and filter individual scrape jobs |
getFailedJobs(input?) |
Get failed/dead jobs with failure reasons |
getJobScheduleStatus(input?) |
Get overdue jobs |
Webhooks
| Method | Description |
|---|---|
listWebhooks() |
List all webhooks for the authenticated user |
createWebhook(input) |
Create a webhook alert rule |
deleteWebhook(id) |
Delete a webhook |
toggleWebhook(id, active) |
Enable/disable a webhook |
Raw Access
| Method | Description |
|---|---|
call(toolName, args) |
Call any MCP tool by name |
listTools() |
List all available tools |
listResources() |
List all available resources |
readResource(uri) |
Read a resource (e.g. table schemas) |
API Reference
`AppDataLayerClient`
const client = new AppDataLayerClient({
apiKey: string; // Required — your API key
endpoint?: string; // Default: "https://mcp.appdatalayer.com/mcp"
timeout?: number; // Default: 30000ms
});
Return Type
All methods return ToolCallResult<T>:
interface ToolCallResult<T> {
content: { type: string; text: string }[]; // Raw MCP content
isError?: boolean; // True if the tool retu
Tools (6)
getAppOverviewRetrieves app metadata including title, developer, score, installs, and rating histogram.analyzeReviewsAggregates reviews by day, week, month, sentiment, country, score, or topic.getKeywordRankingsTracks app ranking for a specific search keyword over time.compareAppsPerforms a head-to-head comparison of 2-5 apps.searchTopicsPerforms semantic search over 1 million+ review topics.forecastMetricPredicts future values using Google TimesFM 2.5.Environment Variables
APPDATALAYER_API_KEYrequiredYour API key for authenticating with the AppDataLayer service.Configuration
{"mcpServers": {"appdatalayer": {"url": "https://mcp.appdatalayer.com/mcp", "headers": {"APPDATALAYER_API_KEY": "sk_live_..."}}}}