Skip to content
LocalASO

MCP and AI agents

Connect any MCP client to LocalASO: command, argument, environment

Any MCP client that can launch a local stdio server can run LocalASO. You need three values: a command, one argument and one environment variable. Everything else is the client's own syntax for writing them down.

Updated

The three values

FieldValue
Command/Applications/LocalASO.app/Contents/MacOS/LocalASO
Argument/Applications/LocalASO.app/Contents/Resources/app.asar/out/main/mcp.js
EnvironmentELECTRON_RUN_AS_NODE=1

The installed app runs the server itself, so you do not need Node. The server speaks MCP over stdio: it writes only protocol messages to stdout and sends its logs to stderr. That matters if you build a wrapper script, because anything else printed to stdout would corrupt the protocol stream. The full reference is in the MCP docs.

Set LOCALASO_DATA_DIR (or LOCALASO_DB) in the same environment block only if you want the server to open a database other than the default in ~/Library/Application Support/LocalASO.

Write it in your client's syntax

Most clients accept a JSON object like this, under a key such as mcpServers:

{
  "mcpServers": {
    "localaso": {
      "command": "/Applications/LocalASO.app/Contents/MacOS/LocalASO",
      "args": ["/Applications/LocalASO.app/Contents/Resources/app.asar/out/main/mcp.js"],
      "env": { "ELECTRON_RUN_AS_NODE": "1" }
    }
  }
}

This shape matches the documented formats of the clients below, and each has its own page: Claude Code, Claude Desktop, Cursor, Codex CLI (TOML) and Gemini CLI. For any other client, read its documentation for the local server field names; the values stay the same.

What every client sees

Five tools: board_get, board_add_keywords, keywords_check, competitors_get and listing_get. All take app, which can be the internal id, the App Store trackId or part of the app name. If the name matches no app, the error lists the known apps; if it matches several, the error lists the candidates so the agent can retry with an id.

Symptoms and causes

SymptomLikely cause
Client reports the server exited or failed to startWrong path, app moved out of /Applications, or ELECTRON_RUN_AS_NODE missing
Tools list is emptyClient needs a restart or reload after the config change
Every call returns a message about a licenseThe app is not activated on this Mac; open LocalASO and enter the key
Calls return an error text instead of dataThe server returns failures as text with an error flag; read the message, it usually names the cause
Checks are slowThe server has its own rate limiter, 15 requests per minute by default; avoid big checks in the app at the same time

Limits

The server cannot upload anything to App Store Connect, and it cannot read keys the app has stored. The what is an ASO MCP server page explains why those limits exist.

Next step

Once connected, try ready-made agent prompts or learn the research method in the App Store keyword research guide.

If you want the AI step to stay on your Mac, see Ollama for ASO.

Questions

Does LocalASO offer an HTTP MCP endpoint?
No. The documented server uses stdio only: the client starts it as a child process.
Can two clients use it at once?
Each client starts its own server process, and each has its own rate limiter. They read the same database, so avoid running big checks in several places at once.

Do this for every country, in minutes

LocalASO checks your rank, volume and difficulty for every keyword in 50+ App Store countries, in each local language. It runs on your Mac. $29 once, no subscription.