GSC Magic
Connect Google Search Console, Bing Webmaster Tools and GA4 data to your AI agent.
Hosted MCP Server
npx add-mcp 'https://mcp.gscmagic.com/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
What is GSC Magic
GSC Magic is a hosted MCP server. You sign in once, add one URL to your AI client, and the agent can read your search data directly instead of working from CSV exports and screenshots.
1. Connect
Sign in with Google or e-mail and password, and allow access to Search Console. Add Bing and GA4 if you use them.
2. Paste one URL
Add https://mcp.gscmagic.com/mcp to Claude, ChatGPT, Cursor or any MCP client.
3. Ask
The agent calls tools such as gsc_query_analytics and answers from your real numbers.
Along the way the dashboard at app.gscmagic.com shows the same data as charts, keeps a history longer than Google’s 16 months, sends alerts, and logs everything your agents do.
Quickstart
- Create your account. Open the dashboard and continue with Google, or create an account with e-mail and password (you will confirm the address by e-mail). Use the Google account that owns your Search Console properties.
- Allow access. The first sign-in asks Google once for Search Console, read-only Google Analytics 4 and read-only Tag Manager. Nothing is switched on for writing unless your plan allows it.
- Import your sites. On the Welcome screen, pick the properties to add. GSC Magic shows the busiest first and respects your plan’s site limit. Bing sites and GA4 properties with the same host are linked automatically.
- Connect your AI client. Follow AI clients below. The endpoint is
https://mcp.gscmagic.com/mcp. - Ask something. Start with “List my sites in GSC Magic.” Then try a prompt from Example prompts.
The Connect page in the dashboard has the same instructions, with one-click buttons and a connection test.
AI clients
The endpoint is the same everywhere:
https://mcp.gscmagic.com/mcp
Clients that support OAuth sign you in through a GSC Magic page. For clients that do not, use an access token.
Claude (claude.ai, desktop and mobile)
- Open Customize → Connectors → Add custom connector, name it GSC Magic and paste the endpoint. The dashboard’s Connect page has an Add to Claude button that pre-fills this.
- Click Connect next to GSC Magic, continue with Google (or e-mail) and allow access.
- In a new chat, enable GSC Magic under + → Connectors and ask “List my sites in GSC Magic.”
On Team and Enterprise plans only an Owner can add the connector (Organization settings → Connectors → Add → Custom); members then click Connect themselves. Connectors added on the web appear in the desktop and mobile apps.
ChatGPT
- Turn on Developer mode: Settings → Apps → Advanced settings → Developer mode. On Business, Enterprise and Edu a workspace admin enables it first.
- Create an app: name GSC Magic, MCP server URL as above, authentication OAuth. Leave client ID and secret empty and tick “I trust this application.”
- Sign in with Google when ChatGPT opens the GSC Magic page, then pick GSC Magic from the + menu in a chat.
Custom MCP apps need a paid ChatGPT plan, and OpenAI moves these menus around. ChatGPT has no field for a custom header, so it cannot use an access token.
Claude Code
claude mcp add --transport http --scope user gsc-magic https://mcp.gscmagic.com/mcp
Then type /mcp, pick gsc-magic and choose Authenticate. With a token instead of a browser sign-in:
claude mcp add --transport http --scope user gsc-magic https://mcp.gscmagic.com/mcp \
--header "Authorization: Bearer gsm_YOUR_TOKEN"
Cursor
Add this to ~/.cursor/mcp.json, then click Connect next to gsc-magic in Settings → MCP:
{
"mcpServers": {
"gsc-magic": {
"url": "https://mcp.gscmagic.com/mcp"
}
}
}
Older Cursor versions finish the sign-in on cursor://, which GSC Magic does not accept. Use a token there:
{
"mcpServers": {
"gsc-magic": {
"url": "https://mcp.gscmagic.com/mcp",
"headers": {
"Authorization": "Bearer gsm_YOUR_TOKEN"
}
}
}
}
VS Code, Windsurf and others
Any client that speaks remote MCP over Streamable HTTP works. Give it the endpoint and, if it cannot do OAuth, this request header:
Authorization: Bearer gsm_YOUR_TOKEN
The dashboard’s Connect page lists ready-made snippets for VS Code, Windsurf, Hermes Agent, OpenClaw, Grok and DeepSeek.
Access tokens
An access token (gsm_…) lets a client connect without a browser sign-in. It suits scripts, automation tools and clients without OAuth.
- Create one in the dashboard under Connect → Access tokens (workspace owner or admin). The full token is shown once. Store it in the client’s own config, never in a chat.
- Tokens expire after 365 days by default. You can pick a different lifetime up to 730 days, or none.
- Tick Read-only to make a token incapable of writing, whatever your plan allows.
- A token works on the MCP endpoint only, not on the dashboard API, and can be revoked at any moment. Revoking takes effect immediately.
- The Test connection button on the Connect page checks that an endpoint and token work.
Data sources
| Source | How to connect | Access |
|---|---|---|
| Google Search Console | Granted when you sign in with Google, or from Sources → Connect for e-mail accounts. | Read; write needs Pro and write mode |
| Google Analytics 4 | Granted with the same Google consent. Link a GA4 property to each site (Sites → edit) so the dashboard can show its data. | Read-only |
| Google Tag Manager | Granted with the same Google consent. | Read-only, Pro and Agency |
| Bing Webmaster Tools | Paste your Bing Webmaster API key under Sources. Link a Bing site to each site. | Read; a few write tools |
| IndexNow | Generate a key with indexnow_generate_key, host the key file on your site and save the key under Sources. | Write (Pro) |
| Core Web Vitals | Nothing to connect. Uses the Chrome UX Report and PageSpeed Insights. | Read-only |
Connected is not linked. Access to GA4 or a Bing key only makes properties discoverable. To see data on the Overview page, link a GA4 property and a Bing site to each site under Sites. Sources shows how many sites are linked.
Each source has Reconnect and Disconnect. Disconnecting GA4 stops GSC Magic reading it and removes the GA4 rows we stored; your Google connection and Search Console stay as they are.
Dashboard
| Page | What it does |
|---|---|
| Overview | Clicks, impressions and position across one site or all sites, for 28 days, 3 months or 12 months. Top queries and pages with change against the previous period, Bing clicks, AI referrals from GA4, a What changed card, Core Web Vitals with an on-demand Lighthouse audit, and CSV export. |
| Sites | Add, edit and remove sites, link Bing and GA4, and run a quick robots.txt and sitemap audit. |
| Sources | Connection state for Google, GA4, Bing and IndexNow, with Reconnect and Disconnect. |
| Connect | Your endpoint, instructions per AI client, access tokens and the connection test. |
| Alerts | Rules, e-mail delivery and the weekly digest. See Alerts and digest. |
| Activity | A log of every tool call your agents made (30 days), filterable by client, source and status, with export. |
| Team | Invite people, set roles and create client groups (Agency). |
| Billing | Plan, usage, invoices and the customer portal. |
| Settings | Profile, password, sessions, write mode, appearance (system, light or dark), data export and account deletion. |
History. After you add a site, GSC Magic backfills up to 16 months of daily data (14 days on Free), then refreshes every six hours. Raising your plan pulls in the older months. You can export or delete your stored history at any time.
Alerts and digest
On Pro and Agency, GSC Magic checks your sites after every sync and e-mails you when something needs attention. Delivery is by e-mail to the workspace owner. Every message has an unsubscribe link.
- Traffic drop: a page lost a large share of its clicks (30% by default).
- Indexing: a page that had traffic stopped appearing.
- Cannibalization: two of your pages started splitting a query.
- Ranking: an important query fell several positions.
- AI traffic: sessions from AI assistants jumped (needs GA4).
You can edit thresholds, turn rules off and delete them (with an Undo for a few seconds). A weekly digest summarizes your sites. On Free, the Overview’s What changed card previews what these rules would find. Each finding is reported once per week.
Example prompts
Replace example.com with your site. Your agent picks the right tools by itself.
Weekly check
“Compare the last 28 days with the previous 28 for example.com. What lost the most clicks, and what is the likely reason?”
Quick wins
“Show quick wins for example.com: pages at positions 4–20 with the most impressions. Suggest a title and meta change for the top five.”
Cannibalization
“Find queries where two of my pages compete on example.com and tell me which page should win each one.”
Indexing
“Run an index health report from my sitemap and list the URLs that are not indexed, grouped by reason.”
Two engines
“Compare Google and Bing clicks per page for example.com. Where is Bing clearly stronger?”
AI traffic
“How many GA4 sessions came from ChatGPT, Perplexity and Claude in the last 90 days, and which landing pages got them?”
More ideas in the prompt library.
Tools reference
Tools marked write change something in Google, Bing or IndexNow. They are offered to the agent only when your plan allows writing, write mode is on in Settings, and the source permits it (Search Console writes also need the full Google permission, which the first sign-in requests). Everything else is read-only.
SEO reports
Analyses that run on our servers and return finished numbers, so the agent reasons about results instead of paging through raw rows.
| Tool | What it does |
|---|---|
report_quick_wins | Query and page pairs ranking in positions 4–20 with many impressions: the cheapest traffic to gain, sorted by potential extra clicks. |
report_traffic_drops | Compare a period with the same-length period before it and return the biggest click losers and gainers by page or query. |
report_content_decay | Pages whose clicks fell in each of the last three windows: a steady slide, not a one-off dip. Candidates for a content refresh. |
report_cannibalization | Queries where two or more of your pages each get a meaningful share of impressions, splitting ranking signals. |
report_ctr_outliers | Pages whose CTR is under half of your site's median at the same position: candidates for better titles and descriptions. |
report_brand_split | Branded vs non-branded queries with clicks, impressions and click share, plus the top queries in each group. |
report_index_health | Read URLs from your sitemaps, inspect them with the URL Inspection API and group them by coverage state. |
report_google_vs_bing | Clicks and impressions per page from Google and Bing side by side. |
Bing Webmaster Tools
The full Bing Webmaster API: search performance, crawl data, backlinks, keyword research and URL submission.
| Tool | What it does |
|---|---|
bing_list_sites | Sites in Bing Webmaster Tools for the API key, with verification status. |
bing_get_site_roles | Users with access to a site. |
bing_query_stats | Clicks, impressions and average position for top search queries (weekly, about six months). |
bing_page_stats | Clicks, impressions and average position for top pages. |
bing_page_query_stats | Search queries that led to one page. |
bing_query_page_stats | Pages shown for one search query. |
bing_query_page_detail_stats | Detailed stats for one query on one page. |
bing_query_traffic_stats | Traffic history for one query. |
bing_rank_traffic_stats | Daily clicks and impressions for the whole site. |
bing_crawl_stats | Daily crawled pages, crawl errors, in-index counts and pages blocked by robots.txt. |
bing_crawl_issues | URLs with crawl issues: 4xx/5xx, DNS, timeouts, malware. |
bing_url_info | Index details for a single URL: HTTP status, last crawl, discovery date, size, anchors. |
bing_url_traffic | Clicks and impressions for a single URL. |
bing_list_sitemaps | Sitemaps and feeds submitted to Bing, with status and URL counts. |
bing_sitemap_details | Child sitemaps of a sitemap index. |
bing_link_counts | Your pages that have inbound links, with link counts. |
bing_url_links | External pages linking to a URL on your site. |
bing_keyword | Bing search impressions for any keyword in a period (keyword research, not limited to your site). |
bing_keyword_stats | Historical weekly impressions for a keyword. |
bing_related_keywords | Related keywords with impressions for a period. |
bing_url_submission_quota | Remaining daily and monthly URL submission quota. |
bing_list_blocked_urls | URLs and directories blocked from Bing results. |
bing_crawl_settings | Crawl rate per hour and crawl boost setting. |
bing_list_query_params | Query parameters Bing ignores for URL normalization. |
bing_fetched_urls | URLs previously fetched with Fetch as Bingbot. |
bing_fetched_url_details | Result of a Fetch as Bingbot request: status, headers, content. |
bing_add_site write | Add a site to Bing Webmaster Tools. |
bing_verify_site write | Attempt verification of a site (meta tag, XML file or DNS already in place). |
bing_remove_site write | Remove a site from Bing Webmaster Tools. |
bing_submit_urls write | Submit up to 500 URLs for crawling and indexing, checking the remaining quota first. |
bing_save_crawl_settings write | Set the hourly crawl rate and crawl boost. |
bing_submit_sitemap write | Submit a sitemap or feed to Bing. |
bing_remove_sitemap write | Remove a submitted sitemap or feed. |
bing_block_url write | Block a page or directory from Bing results. |
bing_unblock_url write | Remove a page or directory block. |
bing_add_query_param write | Tell Bing to ignore a query parameter. |
bing_remove_query_param write | Stop ignoring a query parameter. |
bing_fetch_url write | Ask Bingbot to fetch a URL now; read the result later with bing_fetched_url_details. |
IndexNow
Tell Bing, Yandex, Seznam, Naver and other IndexNow engines about new, changed or deleted URLs within seconds.
| Tool | What it does |
|---|---|
indexnow_generate_key | Generate a new IndexNow key and the file you need to host on the site. |
indexnow_submit write | Notify IndexNow engines about new, changed or deleted URLs: one host per call, up to 10,000 URLs. |
Core Web Vitals and PageSpeed
Real-user Chrome UX Report data and Lighthouse audits for any origin or URL you own.
| Tool | What it does |
|---|---|
cwv_get_origin | Real-user Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a whole origin, last 28 days, p75 and good/needs-improvement/poor shares. |
cwv_get_url | Real-user Core Web Vitals for a single URL (needs enough Chrome traffic). |
cwv_history | Weekly Core Web Vitals history, up to about six months, for an origin or URL. |
psi_run_audit | Run Lighthouse through PageSpeed Insights: category scores, lab metrics, field data and top opportunities. |
Google Analytics 4
GA4 reports next to your search data: sessions, key events, landing pages and referral traffic from AI assistants.
| Tool | What it does |
|---|---|
ga_list_properties | Google Analytics accounts and GA4 properties the account can access. |
ga_list_data_streams | Data streams of a GA4 property, including the Measurement ID used by the tag on the site. |
ga_get_metadata | Dimensions and metrics available for a property, including custom ones, with search. |
ga_run_report | Run a GA4 report with dimensions, metrics, date ranges, filters, ordering and paging. |
ga_run_realtime_report | GA4 realtime report for the last 30 minutes. |
ga_list_key_events | Key events (formerly conversions) configured on a property. |
Google Tag Manager
Read-only view of what is actually firing on the site: containers, tags, triggers, variables and the live version.
| Tool | What it does |
|---|---|
gtm_list_accounts | Tag Manager accounts the account can access. |
gtm_list_containers | Containers of an account, with the public GTM-XXXX id. |
gtm_list_workspaces | Workspaces (drafts) of a container. |
gtm_list_tags | Tags of a workspace with type, triggers and parameters, including GA4 measurement ids and event parameters. |
gtm_list_triggers | Triggers of a workspace with type and conditions. |
gtm_list_variables | User-defined variables of a workspace. |
gtm_get_live_version | The currently published container version: what is really running on the site. |
Plans and limits
| Free | Pro | Agency | |
|---|---|---|---|
| Price | $0 | $19/month or $182/year (founding price until 31 Dec 2026) | $34/month or $326/year (founding price until 31 Dec 2026) |
| Tool calls | 200/month, 10/day | Unlimited | Unlimited |
| Sites | 1 | 10 | 50 |
| Stored history | 14 days | 16 months | 16 months |
| Search Console, Bing, IndexNow, Web Vitals, reports, GA4 | Yes | Yes | Yes |
| Tag Manager | No | Yes | Yes |
| Write tools | No | Yes | Yes |
| Alerts and weekly digest | No | Yes | Yes |
| Team seats and client reports | No | No | 5 seats, monthly client reports |
- 7-day Pro trial on new accounts, with no card needed. When it ends the account returns to Free. One trial per e-mail address.
- Every call to a tool counts, including failed ones. The daily limit resets at midnight UTC.
- If a plan ends and you have more sites than the new plan allows, the dashboard asks which to keep and the MCP endpoint pauses until you choose.
- Payments and invoices are handled by Polar. Cancel any time; the plan stays active to the end of the period you paid for.
Teams and roles
The Agency plan includes five seats counting the owner. Everyone works on the owner’s workspace, data and plan.
| Role | Can do |
|---|---|
| Owner | Everything, including billing, team and deleting sites. |
| Admin | Manage sites, sources, tokens and alerts. No billing or role changes. |
| Member | Use the AI tools, read-only. |
| Viewer | View the dashboard. No AI access. |
Client groups restrict a person to selected sites. A member or admin in a group sees only those sites in the dashboard, in alerts and through MCP, and nothing else. Subdomains count as separate sites, so you can give a.com to one client and blog.a.com to another. Invitations are e-mailed and valid for seven days.
Troubleshooting
| Problem | What to try |
|---|---|
| The client cannot sign in or says the redirect is not allowed | Use an access token in the request header. This affects older Cursor, VS Code on vscode.dev and Grok. |
| ChatGPT fails to connect | Delete the app and create it again, then sign in once more. A stale sign-in is the usual cause. Make sure your plan allows custom MCP apps. |
| “No Search Console property” or an empty list | Sign in with the Google account that owns the properties, then check Sources. If it shows Reconnect, Google revoked or expired the connection: reconnect it. |
| The tool list lacks write tools | Check that your plan is Pro or Agency, that write mode is on in Settings, that you granted full Search Console access, and that the token or role is not read-only. |
| Bing returns nothing | Check the Bing Webmaster API key under Sources and that a Bing site is linked to the site. |
| Overview shows no GA4 or Bing numbers | The source is connected but not linked: open Sites, edit the site and choose the GA4 property or Bing site. |
| “Daily limit reached” | Free allows 10 calls a day and 200 a month. The daily count resets at midnight UTC; Pro removes the limits. |
| A site shows Reconnect | Google rejected our access. Reconnect Google under Sources. Apps in Google’s testing mode expire after seven days, which does not apply to GSC Magic. |
| Inspection quota errors | Google allows 2,000 URL inspections per day per property. Wait for the reset or inspect fewer URLs. |
Still stuck? Write to support@gscmagic.com with the client you use and the error message. Never include an access token.
Quick answers
Which AI clients work?
Any client that supports remote MCP over Streamable HTTP: Claude, ChatGPT, Claude Code, Cursor, VS Code, Windsurf and others.
Can my agent change anything?
Not unless you allow it. Write tools need the Pro or Agency plan, write mode switched on, and, for Search Console, full Google access. Tokens can be made read-only.
Is the data stored?
Tool calls read live from Google and Bing. The dashboard keeps daily statistics for the sites you add, for as long as your plan’s history allows.