Local Rank and Map Pack Tracker MCP Server
Enables tracking local rankings and map pack positions by running Google searches from specified locations, returning organic positions, local pack positions, local finder positions, and top-ranking domains or businesses.
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., "@Local Rank and Map Pack Tracker MCP ServerWhere does weplumbatx.com rank for plumber and emergency plumber in Austin?"
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.
Local Rank and Map Pack Tracker MCP Server
An MCP server for the Mamba Labs Local Rank and Map Pack Tracker actor on Apify. Give it keywords, locations, and a domain or business name. Each run searches Google from each location and returns one row per keyword and location with the organic position, the map pack position, and the local finder position.
What's Inside
Related MCP server: Google Local MCP Server
What it does
Each place name is turned into coordinates and the Google search is placed at that point, so a check for Austin returns the Austin map pack.
Per row:
organic_position(up to 50 deep),local_pack_position(1 to 3),local_finder_position(top 20), and the matched listing's rating, review count, category, phone, website, and address.top_organic_domainsandtop_local_businessesname who holds the top spots.With
state_key, each row carries the previous positions and the change, so a weekly schedule becomes a rank history.An empty position means not found in the positions checked. Blocked rows come back free with a
row_statussaying so.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-local-rank-map-pack-tracker": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-local-rank-map-pack-tracker"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The track_local_rankings tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"Where does weplumbatx.com rank for plumber and emergency plumber in Austin and Round Rock?"
"Check the map pack position of We Plumb LLC for drain cleaning in 30.2672,-97.7431."
"Track my dental clinic for dentist near me in five London boroughs every week and show what changed."
Tool
track_local_rankings. One tool. Example arguments:
{
"keywords": ["plumber", "emergency plumber"],
"locations": ["Austin, Texas, United States", "Round Rock, Texas, United States"],
"target_domain": "weplumbatx.com",
"business_name": "We Plumb LLC"
}Inputs
Every buyer facing input of the actor, unchanged. Omitted inputs take the actor's own defaults. Numbers and booleans are sent as strings.
Input | Type | Description |
| array | Search terms. Required |
| array | Place names or coordinates. Required |
| string | Your website. Give it, |
| string | The name on your Google Business Profile |
| string | Google market and proxy exit. Default US |
| string | Google interface language. Default en |
| string | 10, 20, 30, or 50. Default 10 |
| string | true or false. Default true |
| string | Schedule name for change tracking |
| string | Optional cost cap for the run |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.055 | $0.05225 | $0.0495 | $0.04675 |
| $0.0495 | $0.0171 | $0.0162 | $0.0153 |
| $0.002 | $0.002 | $0.002 | $0.002 |
Blocked and error rows are free.
Your keys
The actor needs no key. It reads Google result pages through the Apify Google SERP proxy and holds no key of any kind. Mamba Labs pays the platform and proxy costs of the run.
Full actor documentation
apify.com/mambalabs/local-rank-map-pack-tracker
License
MIT. See LICENSE.
Available Tools
1 tooltrack_local_rankingsTrack local rankingsARead-only
Check where a business ranks on Google for each keyword in each location, with the search placed at that location. Give keywords, locations (place names or coordinates), and target_domain and or business_name. One row per keyword and location: organic_position (up to 50 deep), local_pack_position (the 3 result map pack on page one), local_finder_position (top 20 map list), the matched listing's rating, review count, category, phone, and website, the top 10 organic domains and top map listings, and, with state_key, the previous positions and the change. An empty position means not found in the positions checked. Blocked rows come back free with a row_status saying so. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per rank check and per extra Google page read.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two letter country code for the Google market and proxy exit. Default US. | |
| keywords | Yes | Search terms to check, for example plumber. Up to 500 keyword and location pairs per run. | |
| language | No | Google interface language. Default en. | |
| locations | Yes | Where each search is made from: a place name such as Austin, Texas, United States, or coordinates such as 30.2672,-97.7431. | |
| state_key | No | Schedule name. Keeps positions between runs so each row carries the previous positions and the change. | |
| business_name | No | The name on your Google Business Profile, used to find you on the map when your listing shows no website or a different one. | |
| organic_depth | No | Organic positions to check: 10, 20, 30, or 50. Each 10 after the first is one extra page event. Default 10. | |
| target_domain | No | Your website, for example weplumbatx.com. Give it, business_name, or both. | |
| max_charge_usd | No | Optional. The run stops before any row that would take its charges over this amount. | |
| include_local_finder | No | Open the full map list (top 20) when you are not in the 3 result map pack; one extra page event. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the APIFY_TOKEN requirement, that Apify charges per rank check and per extra page read, that blocked rows are returned free with a row_status, and that failed runs come back as an error carrying the run ID. These are cost, auth, and failure-mode details an agent cannot infer from readOnlyHint/openWorldHint alone.
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?
Information-dense and front-loaded with the core purpose, and essentially every sentence carries needed detail (depth limit, map pack definition, block handling, cost). The return-field enumeration is a long run-on list and could be broken up for scanability, which keeps it from a 5.
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?
With no output schema, 10 parameters, and no annotations covering cost or failure behavior, the description carries the full burden and does: it explains each returned field group, what an empty position means, how blocked rows are surfaced, and how failures are reported.
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 100%, so every parameter is already documented in the schema, which sets the baseline at 3. The description adds little new per-parameter syntax, though it does reinforce the target_domain/business_name either-or choice and clarifies that state_key is what unlocks previous-position deltas.
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?
States a specific verb and resource: 'Check where a business ranks on Google for each keyword in each location, with the search placed at that location.' The geo-specific framing distinguishes it from a generic rank checker, and with no siblings there is nothing further to disambiguate.
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?
Tells the agent what inputs are needed ('Give keywords, locations (place names or coordinates), and target_domain and or business_name') and when optional features apply ('with state_key, the previous positions and the change'). It stops short of explicit when-not-to-use or exclusions, but with no alternatives available the guidance is practically complete.
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 tool update
v1.0.0- First observed
track_local_rankings
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of selecting the wrong tool or confusing overlapping purposes. Its purpose is clearly scoped to local rank and map pack tracking.
The single tool name track_local_rankings follows a clear verb_noun snake_case convention. There are no inconsistent naming styles to compare against.
A single tool is thin for a server surface, even though this tool is unusually comprehensive. It bundles many related operations into one monolithic call rather than exposing separate capabilities.
The tool covers core rank tracking deeply: organic, local pack, local finder, listing metadata, top competitors, state comparison, blocked rows, and errors. Minor gaps remain around managing or retrieving prior runs beyond the state_key mechanism.
Maintenance
Related MCP Connectors
Check whether Google's AI Overviews cite your website for your keywords, who is cited instead, your citation position and what changed since the last run, with a client-ready report and alerts. Runs on Apify.
Google keyword search volume, CPC, difficulty, intent and keyword ideas. Runs on Apify.
Estimated Google organic traffic, ranking keywords and competitors of any website. Runs on Apify.
SEO & GEO data: keywords, live SERPs with AI Overviews, backlinks, site audits, rank tracking.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables professional SEO/SEM research with geolocalized keyword discovery, competitor analysis, and SERP ranking insights using DataForSEO API.-
- AlicenseNot gradedqualityDmaintenanceEnables searching Google Local for businesses by keyword and location, returning details like name, address, phone, hours, ratings, and more. Useful for lead generation, local SEO, and market analysis.MIT

georanker-seo-mcpofficial
AlicenseAqualityAmaintenanceEnables AI assistants to search Google SERPs, track rankings across locations, run Lighthouse SEO audits, find broken internal links, analyze backlinks, and get keyword volume data through a hosted service.15182 npmMIT- FlicenseNot gradedqualityBmaintenanceEnables tracking keyword positions over time, creating rank trackers, checking current ranks, and retrieving historical ranking data programmatically.-