PinMeTo Location MCP
OfficialThis server connects AI assistants to PinMeTo location data, letting you ask natural-language questions about your locations and their Google, Facebook, and Apple performance.
Locations: Get details for a single location, list all locations with pagination/filtering (city, country, type, closed status), and search by name, address, or store ID.
Google insights: Views, searches, direction requests, calls, and clicks with daily/weekly/monthly/quarterly/yearly aggregation and period comparisons (MoM/QoQ/YoY).
Google reviews: Fetch and filter individual reviews by rating or response status; get summarized sentiment, rating distributions, and per-location comparisons.
Google ratings: Average rating, review count, and star distribution across locations.
Google keywords: See how customers search for your business via keyword impression counts.
Facebook insights: Page engagement and reach metrics for locations and brand pages, with aggregation and period comparisons.
Facebook ratings: Ratings and recommendation summaries per location.
Apple Maps insights: Apple Maps performance metrics with aggregation and period comparisons.
All tools are read-only, support JSON or markdown responses, and include caching and structured error handling.
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., "@PinMeTo Location MCP What's my average Google rating?"
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.
PinMeTo Location MCP
An MCP server that connects your PinMeTo locations to AI assistants. Ask questions about your business in natural language and get instant insights from Google, Facebook, and Apple.
Works with MCP-compatible clients that can run local STDIO servers, including Claude Desktop, the ChatGPT desktop app, VS Code, Cursor, and more.
What Can You Do With It?
Ask your AI assistant questions like:
"What's my average Google rating across all locations?"
"Show me negative reviews that need responses"
"Compare this quarter's performance to last year"
"Which locations are performing best?"
See Example Prompts for more ideas.
π Turn your data into reports. On top of the
.mcpbdata connection, install the PinMeTo Locations plugin to add formatted PDF and PowerPoint reports across all your locations. See Creating Reports below.
Related MCP server: mcp-ohmy-sql
Installation
Claude Desktop
Download the installer: click the
.mcpbbadge above, or grab pinmeto-location-mcp.mcpb from the latest releaseDouble-click the downloaded file (with Claude Desktop open), or drag it into Claude Desktop β Settings β Extensions
Enter your PinMeTo API credentials (Account ID, App ID, App Secret) in the install dialog
Done! This installs the data connection β the MCP server and its twelve tools. Start asking questions about your locations.
Get your credentials from PinMeTo Account Settings.
Reports (optional). To also generate PDF and PowerPoint reports:
Open Customize in the sidebar, go to Plugins
Click + in Personal plugins, choose Add marketplace
Enter
PinMeTo/claude-pluginsInstall PinMeTo Locations β this adds the report skill
Note: While the plugin repository is private, installing requires the Claude GitHub App to have access to it.
ChatGPT Desktop App
The ChatGPT desktop app can run PinMeTo locally as a STDIO MCP server. You need Node.js v22 or later, Git, and PinMeTo API credentials before you start.
Get your Account ID, App ID, and App Secret from PinMeTo Account Settings.
In the ChatGPT desktop app, open Settings β Plugins, then select the MCPs tab.
Select Add β Add MCP server.
Enter the following values:
Field
Value
Name
PinMeToType
STDIO
Command to launch
npxArgument 1
-yArgument 2
github:PinMeTo/pinmeto-location-mcpEnvironment variable
PINMETO_ACCOUNT_ID= your Account IDEnvironment variable
PINMETO_APP_ID= your App IDEnvironment variable
PINMETO_APP_SECRET= your App SecretAdd each argument and environment variable in its own row. Leave Environment variable passthrough and Working directory empty.
Select Save, then restart when prompted.
Start a new Codex task in the desktop app. Enter
/mcpto confirm thatPinMeTois connected, then try: βList my PinMeTo locations.β
If the server cannot find npx, locate it with command -v npx on macOS/Linux,
(Get-Command npx).Source in Windows PowerShell, or where npx in Windows
Command Prompt. Use the returned absolute path as Command to launch.
ChatGPT web: This local STDIO setup is available to Codex in the ChatGPT desktop app. ChatGPT on the web does not read local MCP configuration; web Chat and Work use remote MCP tools supplied by plugins instead. See OpenAI's MCP documentation.
Other Installation Options
Platform | Method |
VS Code | Click the VS Code badge above |
Cursor | Click the Cursor badge above |
Claude Code (CLI) | The plugin doesn't bundle a server. Run the server directly from GitHub: |
Manual |
Available Features
Feature | What You Can Do |
Locations | View all your locations, search by name or city |
Google Insights | Views, searches, direction requests, calls, clicks |
Google Reviews | Read reviews, filter by rating, find unresponded reviews |
Google Ratings | Average rating, review count, star distribution |
Google Keywords | See how customers search for your business |
Facebook Insights | Page engagement and reach metrics |
Facebook Ratings | Ratings and recommendations |
Apple Insights | Apple Maps performance metrics |
All insights support time aggregation (daily, monthly, quarterly) and period comparison (month-over-month, year-over-year).
Creating Reports
Generate professional reports from your location data using the PinMeTo Location Reports Skill.
What It Does
Transforms your multi-location analytics into formatted PDF and PowerPoint reports:
Monthly, Quarterly, Half-Yearly, and Yearly reports
Includes Google, Facebook, and Apple metrics
Review ratings and sentiment analysis
Search keyword performance
Data-driven strategic recommendations
The report skill comes from the PinMeTo Locations plugin;
the location data and tools come from the .mcpb. With both installed, ask for "a
quarterly report" or "a Q4 board presentation" and the skill activates automatically.
Prefer not to install the plugin? The skill is also available standalone from the skill repository.
Documentation
Guide | Description |
First steps, FAQ, and troubleshooting | |
Prompts organized by business need | |
Complete tool documentation | |
Time aggregation and comparisons | |
Developer setup instructions |
Requirements
An MCP-compatible client (Claude Desktop, VS Code, Cursor, or others)
For local installation in the ChatGPT desktop app: Node.js v22 or later
PinMeTo account with API access
Support
Setup issues: See Troubleshooting
Feature questions: See FAQ
Bug reports: GitHub Issues
PinMeTo account: PinMeTo Support
Privacy Policy
This server sends your PinMeTo API credentials to PinMeTo's API to fetch your own location data, and returns that data to your MCP client. It stores nothing remotely and transmits nothing to any third party.
Collected: your PinMeTo Account ID, App ID, and App Secret, supplied by you at install time.
Used for: authenticating requests to the PinMeTo API on your behalf.
Stored: credentials remain under your MCP client's control (for example, the macOS Keychain under Claude Desktop); this server never writes them to disk. Location and insights data is cached in memory for the duration of a session and never written to disk.
Shared: nothing is shared with third parties.
Retained: the server itself retains nothing after the process exits, and its in-memory location and insights cache is discarded then. Credential persistence is managed by your MCP client, not by this server.
Contact: PinMeTo Support
Full policy: https://places.pinmeto.com/listings/public/legal/privacypolicy
License
MIT
Available Tools
12 toolspinmeto_get_apple_insightsApple Maps insightsARead-only
Fetch Apple metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.
Comparison Options:
compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)
compare_with="prior_year": Compare with same dates last year (YoY)
When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, aggregation, +2 more. Returns: error, warning, insights, errorCode, +7 more
pinmeto_get_facebook_brandpage_insightsFacebook brand page insightsARead-only
Fetch Facebook metrics for all brand pages. Supports time aggregation (default: total) and period comparisons.
Comparison Options:
compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)
compare_with="prior_year": Compare with same dates last year (YoY)
When comparison is active, each metric includes flat comparison fields (priorValue, delta, deltaPercent)
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), aggregation, compare_with, +1 more. Returns: error, warning, insights, errorCode, +7 more
pinmeto_get_facebook_insightsFacebook insightsARead-only
Fetch Facebook metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.
Comparison Options:
compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)
compare_with="prior_year": Compare with same dates last year (YoY)
When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, aggregation, +2 more. Returns: error, warning, insights, errorCode, +7 more
pinmeto_get_facebook_ratingsFacebook ratingsARead-only
Fetch Facebook ratings for all locations, or a single location if storeId provided.
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, response_format. Returns: data, error, warning, cacheInfo, +3 more
pinmeto_get_google_insightsGoogle insightsARead-only
Fetch Google metrics for all locations, or a single location if storeId provided. Supports time aggregation (default: total) and period comparisons.
Comparison Options:
compare_with="prior_period": Compare with same-duration period before (MoM, QoQ)
compare_with="prior_year": Compare with same dates last year (YoY)
When comparison is active, each metric includes a comparison field with prior, delta, deltaPercent
Data Lag Warning:
Google data has ~10 day lag. Requests with recent end dates may return incomplete data.
Check structuredContent.warning and warningCode for data completeness.
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, aggregation, +2 more. Returns: error, warning, insights, errorCode, +7 more
pinmeto_get_google_keywordsGoogle search keywordsARead-only
Fetch Google keywords for all locations, or a single location if storeId provided.
Data Lag Warning:
Google data has ~10 day lag. Current month data may be incomplete.
Check structuredContent.warning and warningCode for data completeness.
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, response_format. Returns: data, error, errorCode, retryable
pinmeto_get_google_ratingsGoogle ratingsARead-only
Fetch Google rating statistics (averageRating, totalReviews, distribution) for all locations, or a single location.
Returns aggregate statistics only. For individual review text and sentiment analysis, use pinmeto_get_google_reviews.
Caching:
Results cached for 5 minutes (shared with reviews tool)
Use forceRefresh=true to bypass cache
Check structuredContent.cacheInfo for cache status
Data Lag Warning:
Google data has ~10 day lag. Requests with recent end dates may return incomplete data.
Check structuredContent.warning and warningCode for data completeness.
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), storeId, forceRefresh, +1 more. Returns: data, error, warning, cacheInfo, +3 more
pinmeto_get_google_review_insightsGoogle review analysisARead-only
Summarize Google reviews into rating and sentiment statistics.
Computes aggregates over the matched reviews server-side and returns the summary instead of the raw reviews, which is far more token-efficient than fetching them. The returned data is descriptive statistics, not LLM-written prose: read it and draw your own conclusions for the user.
Analysis Types:
summary: Average rating, sentiment breakdown, rating distribution
comparison: The above, plus per-location metrics ranked by rating
issues, trends, themes: Accepted, but currently return the same payload as summary. No theme extraction, issue clustering, or period comparison is performed, and the response is flagged with warningCode UNDIFFERENTIATED_ANALYSIS_TYPE. To analyze review text, fetch pinmeto_get_google_reviews and read it yourself.
Large Dataset Handling:
<200 reviews: Processed immediately
200-1000: Processed with token estimate in metadata
1000-10000: Returns warning with options (set skipConfirmation=true to proceed)
10000: Requires sampling strategy (representative or recent_weighted)
Sampling Strategies (which reviews get analyzed):
full: Analyze all reviews (default for <10000 reviews)
representative: Stratified sample by rating and location
recent_weighted: Prioritize recent reviews
Caching:
Results cached for 1 hour
Use forceRefresh=true to bypass cache
When NOT to use this tool:
Need raw review text: Use pinmeto_get_google_reviews
Need only aggregate stats: Use pinmeto_get_google_ratings
Need specific review lookup: Use pinmeto_get_google_reviews with filters
Inputs: to (required), from (required), analysisType (required), themes, +7 more. Returns: data, error, warning, metadata, +6 more
pinmeto_get_google_reviewsGoogle reviewsARead-only
Fetch individual Google reviews with pagination and filtering for sentiment analysis.
For aggregate statistics (averageRating, totalReviews), use pinmeto_get_google_ratings instead.
Pagination:
limit: Max reviews to return (default: 50, max: 500)
offset: Skip first N reviews (for pagination)
Check hasMore in response to know if more pages exist
Filtering:
minRating/maxRating: Filter by rating range (1-5)
hasResponse: true for responded reviews, false for unresponded
Caching:
Results cached for 5 minutes (shared with ratings tool)
Use forceRefresh=true to bypass cache
Filters are applied client-side on cached data
Data Lag Warning:
Google data has ~10 day lag. Requests with recent end dates may return incomplete data.
Error Handling:
Rate limit (429): errorCode="RATE_LIMITED", message includes retry timing
Not found (404): errorCode="NOT_FOUND" if storeId doesn't exist
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: to (required), from (required), limit, offset, +6 more. Returns: data, error, limit, offset, +7 more
pinmeto_get_locationGet locationARead-only
Get details for a SINGLE location by store ID. Returns structured location data including address, contact info, and network connections.
Error Handling:
Not found (404): errorCode="NOT_FOUND" if store ID doesn't exist
Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: storeId (required), response_format. Returns: data, error, errorCode, retryable
pinmeto_get_locationsGet all locationsARead-only
Get ALL locations with pagination and filtering. Uses in-memory cache (5-min TTL) for fast queries on large datasets.
Examples:
Get first 50 locations: {}
Get next page: { offset: 50 }
Filter by city: { city: "Stockholm", limit: 20 }
Only open locations: { permanentlyClosed: false }
Force cache refresh: { forceRefresh: true }
Error Handling:
Partial results may be returned on API errors (check incomplete field)
Stale cache data returned with warning if fresh fetch fails
Check errorCode (string) and retryable (boolean) in structuredContent
Inputs: city, type, limit, fields, +5 more. Returns: data, error, limit, offset, +7 more
pinmeto_search_locationsSearch locationsARead-only
Search ALL locations by name, address, store ID, or location descriptor. Returns lightweight results for quick discovery. Use pinmeto_get_location with storeId for full details.
Error Handling:
Network issues: errorCode="NETWORK_ERROR", retryable=true
Auth failure (401): errorCode="AUTH_INVALID_CREDENTIALS"
All errors: check structuredContent.errorCode and .retryable for programmatic handling
Inputs: query (required), limit, response_format. Returns: data, error, hasMore, errorCode, +2 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 12 tools
Most tools target clearly distinct resources and actions, with useful cross-references between ratings, reviews, and review insights. The only mild ambiguities are google_review_insights vs. google_ratings and facebook_insights vs. facebook_brandpage_insights, though descriptions do provide enough guidance to separate them.
Every tool follows the same pinmeto_get_<resource> pattern with snake_case naming. The lone action variation is search_locations, but it still fits the overall verb_noun convention and remains predictable.
Twelve tools is well-scoped for a location data and platform-insights server. Each tool covers a distinct data area, and there is no obvious redundancy or bloat despite the range of Google, Facebook, and Apple data.
The server provides solid read coverage for locations and platform analytics, but it is entirely read-only with no create, update, or delete operations for locations. Some platform coverage is also uneven, such as Facebook reviews missing despite Google reviews being available.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Connect e-commerce and marketing data to AI assistants via MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to query databases, execute SQL, and manage Metabase resources like dashboards, cards, and collections through natural language.22MIT
- -licenseNot gradedqualityDmaintenanceAn MCP server that bridges AI assistants with SQL databases, enabling natural language querying across multiple database types with built-in optimization and security.3-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that connects AI assistants to SEO platforms like Google Search Console, GA4, Bing Webmaster Tools, and Adobe Analytics, enabling natural language queries about SEO performance.1,377 npmMIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server that gives AI assistants direct access to Google Analytics 4, Google Search Console, Google Ads and Google Merchant Center data using OAuth2 user credentials.MIT