npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

overwolf-console-mcp

v0.1.3

Published

Local stdio MCP server that wraps the Overwolf Developer Console statistics API, so MCP clients (Claude Desktop, etc.) can fetch an app's analytics on demand.

Downloads

601

Readme

overwolf-console-mcp

npm version CI License: MIT

A local stdio MCP server that wraps the Overwolf Developer Console statistics API, so an MCP client (Claude Desktop, Cursor, etc.) can fetch your app's analytics on demand — DAU/MAU, installs, retention, crashes, and the full ads-revenue suite.

It is open source and npx-runnable: point it at your own Overwolf app and ask your assistant things like "what was my DAU over the last 7 days?" or "compare net ad revenue this month vs. last."

  • Typed tools for every documented performance + revenue endpoint (33 of them).
  • A generic passthrough (query_console_stats) for any endpoint by path.
  • A discovery tool (list_endpoints) so the assistant can see what's available.
  • Decoupled core: the API client has no MCP dependency, so it can be lifted into a remote (OAuth-hosted) server later without a rewrite.

How it works (new to MCP? read this first)

You don't install, host, or run anything yourself. An MCP server is a small helper program that your AI assistant (like Claude Desktop) starts automatically in the background. You add a few lines of config — your Overwolf email, API key, and app ID — and then just ask questions in plain English (e.g. "what was my DAU last week?"). The assistant fetches the answer from Overwolf through this server and explains it. No coding, nothing to host.

Quick start (for users)

You need two things installed: Node.js 18 or newer (this is what actually runs the server) and an MCP client — Claude Desktop is the easiest. Then do this once:

1. Get your Overwolf API key

Sign in to the Overwolf Developer ConsoleSettings → Profile"Revoke and get new API key"copy it immediately (it's shown only once; revoking invalidates your previous key).

2. Find your app's ID

Grab your app's unique ID from the Developer Console.

3. Add the server to your assistant

In Claude Desktop: Settings → Developer → Edit Config (or open the file directly — Windows: %APPDATA%\Claude\claude_desktop_config.json, macOS: ~/Library/Application Support/Claude/claude_desktop_config.json). Paste the block below, filling in your email, key, and app ID:

{
  "mcpServers": {
    "overwolf-console": {
      "command": "npx",
      "args": ["-y", "overwolf-console-mcp"],
      "env": {
        "OVERWOLF_EMAIL": "[email protected]",
        "OVERWOLF_API_KEY": "your-api-key",
        "OVERWOLF_DEFAULT_APP_ID": "your-app-id"
      }
    }
  }
}

If your config already has an "mcpServers" block, just add the "overwolf-console" entry inside it.

On Windows, if your assistant can't start npx, change "command" to "cmd" and "args" to ["/c", "npx", "-y", "overwolf-console-mcp"].

4. Restart your assistant

Fully quit Claude Desktop (not just the window — quit it from the system tray) and reopen it. The first query takes a few extra seconds while npx downloads the package. You never clone a repo or build anythingnpx handles all of that.

5. Ask away

  • "What was my DAU over the last 30 days?"
  • "How has MAU trended over the past year?"
  • "Show app installs by country for the last 90 days."
  • "Break down this month's net ad revenue."
  • "What's my day-1 and day-7 user retention?"
  • "Any crash spikes on the latest app version?"

To see everything it can pull, ask "list the available Overwolf stats endpoints." There's a 5 requests / 60 seconds rate limit (the server throttles and retries for you), so avoid firing dozens of queries at once.

The same "overwolf-console" block works in other stdio MCP clients (Cursor, Cline, etc.) — only the config file's location differs.

Configuration reference

Credentials come from environment variables — set them in your MCP client's env block (above), or in a local .env file when developing:

| Variable | Required | Description | |----------|----------|-------------| | OVERWOLF_EMAIL | ✅ | Account email used in the auth header. | | OVERWOLF_API_KEY | ✅ | Console API key (from step 1). | | OVERWOLF_DEFAULT_APP_ID | – | App ID used when a request omits app_id. | | OVERWOLF_BASE_URL | – | Override the API base URL. Defaults to https://console.overwolf.com/api/stats. |

The server authenticates with the header authorization: Key {email}:{api_key}, built from OVERWOLF_EMAIL + OVERWOLF_API_KEY. Never commit a real key.env is gitignored and .env.example ships placeholders only. (.env/.env.local are read from the current working directory, so for an installed/npx server pass credentials via the client's env block, not a .env file.)

Run locally (for contributors)

Only needed if you want to modify the code — users don't need this:

git clone https://github.com/Counterwatch/overwolf-console-mcp.git
cd overwolf-console-mcp
npm install
cp .env.example .env   # then edit .env with your credentials
npm run build
npm start              # serves on stdio

For iterating on source: npm run dev (watch mode). To verify a build end-to-end: npm run smoke.

Tools

Each endpoint is exposed as a typed tool. Call list_endpoints for the live list with parameters, or browse below.

Discovery & generic

  • list_endpoints — list every registered endpoint and its params.
  • query_console_stats — call any endpoint by path: { path, params?, max_rows? }. The escape hatch for anything not (yet) typed.

Headline performance tools

  • get_daily_active_usersperformance/daily-active-users-dau
  • get_monthly_active_usersperformance/monthly-active-users-mau
  • get_app_installsperformance/app-installs

Performance: get_daily_active_users, get_monthly_active_users, get_app_installs, get_app_uninstalls, get_dau_per_country, get_user_retention_daily, get_user_retention_weekly, get_user_retention_monthly, get_window_open_count_per_day, get_median_window_open_duration_per_day, get_app_window_open_duration_distribution, get_app_crashes, get_partner_report_app_game_dau, get_app_version_by_dau

Revenue: get_daily_ads_revenue_gross_net, get_month_to_date_revenue_net, get_video_ads_general_metrics, get_video_ads_revenue_net, get_display_ads_general_metrics, get_display_ads_revenue_net, get_video_ads_completion_rate, get_video_ads_detailed_metrics, get_display_ads_estimated_metrics, get_all_ads_metrics_monthly, get_video_ads_metrics_monthly, get_display_ads_metrics_monthly, get_average_ads_container_open_time, get_video_ads_rpm_per_window, get_daily_avg_revenue_per_dau_per_country, get_daily_avg_revenue_per_dau_us, get_daily_avg_revenue_per_dau_non_us, get_ads_revenue_net_yearly_comparison, get_monthly_ads_metrics

Common parameters

app_id (falls back to OVERWOLF_DEFAULT_APP_ID), and where applicable: country_name (capitalized, e.g. "United States", or "All Countries"), days_back (allowed: "Last 30 Days", "Last 90 Days", "Last 180 Days", "Last 365 Days"), app_version (or "All Versions"), installation_source (or "All Sources"), window_name (or "All Windows"), attribution (or "All Attributions"), ad_size (or "All Sizes"). Every tool also accepts max_rows (default 100).

Response shape

All tools return compact JSON, capped at max_rows:

{ "row_count": 180, "returned": 100, "truncated": true, "columns": [ ... ], "rows": [ ... ] }

columns carries each field's name, friendly_name, and type from the API's uniform envelope.

Rate limits

The Overwolf stats API allows 5 requests per 60 seconds. This server throttles client-side to stay under that limit, and on an HTTP 429 it retries once honoring the X-RateLimit-Reset header before returning a clear error telling you how many seconds to wait. Spread out bulk queries accordingly.

How to add an endpoint

Endpoints are data, not code — adding one is a single row in the registry.

  1. Open the official Postman collection for the endpoint:

  2. Find the request and read its URL — the slug is everything after /api/stats/ (e.g. revenue/monthly-ads-metrics) — and its query params (url.query) with their default values.

  3. Append a row to the RAW array in src/endpoints.ts:

    {
      slug: "performance/my-new-endpoint",
      title: "My New Endpoint",
      params: [param("app_id"), param("days_back", "Last 30 Days")],
    },

    A typed tool named get_my_new_endpoint is generated automatically. (Pass tool: "get_custom_name" to override the derived name.)

  4. npm run build && npm test && npm run smoke.

Not sure a slug/param is correct? Skip the typed entry — query_console_stats already covers any endpoint by path.

Contributing & AI-assisted development

This repo is built to be friendly to both humans and AI coding agents:

  • AGENTS.md — the contract agents (and humans) should read first: commands, structure, code style, and hard boundaries.
  • CodeRabbit reviews every pull request automatically (free for public repos).
  • @claude — mention it in an issue or PR and Claude can triage, propose fixes, or open PRs. The maintainer authenticates it with a Claude Pro/Max subscription (run claude setup-token, add the result as the CLAUDE_CODE_OAUTH_TOKEN secret) — no metered API billing required. See .github/workflows/claude.yml.
  • CI runs build, tests, and the stdio smoke test on every push and PR.

See CONTRIBUTING.md and report security issues per SECURITY.md.

Disclaimer

Community project. Not affiliated with or endorsed by Overwolf. Endpoint slugs and parameters are derived from Overwolf's published Postman collections and may change.

License

MIT © 2026 Counterwatch