PluginBench
MCP Server
Maintained
MIT

io.github.Raffaele86/seo-stack-mcp MCP Server

io.github.Raffaele86/seo-stack-mcp

What is the io.github.Raffaele86/seo-stack-mcp MCP server?

The complete open-source SEO data stack for AI agents: 7 sources, 86 tools, one MCP server

How to install io.github.Raffaele86/seo-stack-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • GOOGLE_APPLICATION_CREDENTIALS

    Path to a Google service-account JSON key (enables GSC + GA4)

  • SEO_STACK_OAUTH_CLIENT

    Path to a Google OAuth desktop client secrets JSON (alternative to service account)

  • GA4_PROPERTY_ID

    Default GA4 property ID

  • GSC_SITE_URL

    Default Search Console property (e.g. sc-domain:example.com)

  • ADSENSE_ACCOUNT_ID

    AdSense account (accounts/pub-XXXX...) — enables AdSense tools on top of the Google credentials

  • ADSENSE_CURRENCY

    Reporting currency for AdSense tools (default USD)

  • BING_WEBMASTER_API_KEY
    secret

    Bing Webmaster Tools API key (enables Bing tools)

  • BING_SITE_URL

    Default Bing site URL

  • CLARITY_API_TOKEN
    secret

    Microsoft Clarity Data Export API token (enables Clarity tools)

  • GOOGLE_ADS_DEVELOPER_TOKEN
    secret

    Google Ads developer token (enables Keyword Planner tools; needs the google-ads extra)

  • GOOGLE_ADS_CLIENT_ID

    Google Ads OAuth client id

  • GOOGLE_ADS_CLIENT_SECRET
    secret

    Google Ads OAuth client secret

  • GOOGLE_ADS_REFRESH_TOKEN
    secret

    Google Ads OAuth refresh token (adwords scope)

  • GOOGLE_ADS_CUSTOMER_ID

    Google Ads customer id (10 digits)

  • GOOGLE_ADS_LOGIN_CUSTOMER_ID

    Manager account id, if the customer is under an MCC

  • OPENPAGERANK_API_KEY
    secret

    Open PageRank API key (enables the pagerank_score tool)

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "seo-stack-mcp": {
      "command": "uvx",
      "args": [
        "seo-stack-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
        "SEO_STACK_OAUTH_CLIENT": "<YOUR_SEO_STACK_OAUTH_CLIENT>",
        "GA4_PROPERTY_ID": "<YOUR_GA4_PROPERTY_ID>",
        "GSC_SITE_URL": "<YOUR_GSC_SITE_URL>",
        "ADSENSE_ACCOUNT_ID": "<YOUR_ADSENSE_ACCOUNT_ID>",
        "ADSENSE_CURRENCY": "<YOUR_ADSENSE_CURRENCY>",
        "BING_WEBMASTER_API_KEY": "<YOUR_BING_WEBMASTER_API_KEY>",
        "BING_SITE_URL": "<YOUR_BING_SITE_URL>",
        "CLARITY_API_TOKEN": "<YOUR_CLARITY_API_TOKEN>",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
        "GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
        "GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
        "GOOGLE_ADS_REFRESH_TOKEN": "<YOUR_GOOGLE_ADS_REFRESH_TOKEN>",
        "GOOGLE_ADS_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_CUSTOMER_ID>",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
        "OPENPAGERANK_API_KEY": "<YOUR_OPENPAGERANK_API_KEY>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "seo-stack-mcp": {
      "command": "uvx",
      "args": [
        "seo-stack-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
        "SEO_STACK_OAUTH_CLIENT": "<YOUR_SEO_STACK_OAUTH_CLIENT>",
        "GA4_PROPERTY_ID": "<YOUR_GA4_PROPERTY_ID>",
        "GSC_SITE_URL": "<YOUR_GSC_SITE_URL>",
        "ADSENSE_ACCOUNT_ID": "<YOUR_ADSENSE_ACCOUNT_ID>",
        "ADSENSE_CURRENCY": "<YOUR_ADSENSE_CURRENCY>",
        "BING_WEBMASTER_API_KEY": "<YOUR_BING_WEBMASTER_API_KEY>",
        "BING_SITE_URL": "<YOUR_BING_SITE_URL>",
        "CLARITY_API_TOKEN": "<YOUR_CLARITY_API_TOKEN>",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
        "GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
        "GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
        "GOOGLE_ADS_REFRESH_TOKEN": "<YOUR_GOOGLE_ADS_REFRESH_TOKEN>",
        "GOOGLE_ADS_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_CUSTOMER_ID>",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
        "OPENPAGERANK_API_KEY": "<YOUR_OPENPAGERANK_API_KEY>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "seo-stack-mcp": {
      "command": "uvx",
      "args": [
        "seo-stack-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
        "SEO_STACK_OAUTH_CLIENT": "<YOUR_SEO_STACK_OAUTH_CLIENT>",
        "GA4_PROPERTY_ID": "<YOUR_GA4_PROPERTY_ID>",
        "GSC_SITE_URL": "<YOUR_GSC_SITE_URL>",
        "ADSENSE_ACCOUNT_ID": "<YOUR_ADSENSE_ACCOUNT_ID>",
        "ADSENSE_CURRENCY": "<YOUR_ADSENSE_CURRENCY>",
        "BING_WEBMASTER_API_KEY": "<YOUR_BING_WEBMASTER_API_KEY>",
        "BING_SITE_URL": "<YOUR_BING_SITE_URL>",
        "CLARITY_API_TOKEN": "<YOUR_CLARITY_API_TOKEN>",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
        "GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
        "GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
        "GOOGLE_ADS_REFRESH_TOKEN": "<YOUR_GOOGLE_ADS_REFRESH_TOKEN>",
        "GOOGLE_ADS_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_CUSTOMER_ID>",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
        "OPENPAGERANK_API_KEY": "<YOUR_OPENPAGERANK_API_KEY>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "seo-stack-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "seo-stack-mcp"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
        "SEO_STACK_OAUTH_CLIENT": "<YOUR_SEO_STACK_OAUTH_CLIENT>",
        "GA4_PROPERTY_ID": "<YOUR_GA4_PROPERTY_ID>",
        "GSC_SITE_URL": "<YOUR_GSC_SITE_URL>",
        "ADSENSE_ACCOUNT_ID": "<YOUR_ADSENSE_ACCOUNT_ID>",
        "ADSENSE_CURRENCY": "<YOUR_ADSENSE_CURRENCY>",
        "BING_WEBMASTER_API_KEY": "<YOUR_BING_WEBMASTER_API_KEY>",
        "BING_SITE_URL": "<YOUR_BING_SITE_URL>",
        "CLARITY_API_TOKEN": "<YOUR_CLARITY_API_TOKEN>",
        "GOOGLE_ADS_DEVELOPER_TOKEN": "<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN>",
        "GOOGLE_ADS_CLIENT_ID": "<YOUR_GOOGLE_ADS_CLIENT_ID>",
        "GOOGLE_ADS_CLIENT_SECRET": "<YOUR_GOOGLE_ADS_CLIENT_SECRET>",
        "GOOGLE_ADS_REFRESH_TOKEN": "<YOUR_GOOGLE_ADS_REFRESH_TOKEN>",
        "GOOGLE_ADS_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_CUSTOMER_ID>",
        "GOOGLE_ADS_LOGIN_CUSTOMER_ID": "<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID>",
        "OPENPAGERANK_API_KEY": "<YOUR_OPENPAGERANK_API_KEY>"
      }
    }
  }
}
Claude Code
claude mcp add seo-stack-mcp --env GOOGLE_APPLICATION_CREDENTIALS=<YOUR_GOOGLE_APPLICATION_CREDENTIALS> --env SEO_STACK_OAUTH_CLIENT=<YOUR_SEO_STACK_OAUTH_CLIENT> --env GA4_PROPERTY_ID=<YOUR_GA4_PROPERTY_ID> --env GSC_SITE_URL=<YOUR_GSC_SITE_URL> --env ADSENSE_ACCOUNT_ID=<YOUR_ADSENSE_ACCOUNT_ID> --env ADSENSE_CURRENCY=<YOUR_ADSENSE_CURRENCY> --env BING_WEBMASTER_API_KEY=<YOUR_BING_WEBMASTER_API_KEY> --env BING_SITE_URL=<YOUR_BING_SITE_URL> --env CLARITY_API_TOKEN=<YOUR_CLARITY_API_TOKEN> --env GOOGLE_ADS_DEVELOPER_TOKEN=<YOUR_GOOGLE_ADS_DEVELOPER_TOKEN> --env GOOGLE_ADS_CLIENT_ID=<YOUR_GOOGLE_ADS_CLIENT_ID> --env GOOGLE_ADS_CLIENT_SECRET=<YOUR_GOOGLE_ADS_CLIENT_SECRET> --env GOOGLE_ADS_REFRESH_TOKEN=<YOUR_GOOGLE_ADS_REFRESH_TOKEN> --env GOOGLE_ADS_CUSTOMER_ID=<YOUR_GOOGLE_ADS_CUSTOMER_ID> --env GOOGLE_ADS_LOGIN_CUSTOMER_ID=<YOUR_GOOGLE_ADS_LOGIN_CUSTOMER_ID> --env OPENPAGERANK_API_KEY=<YOUR_OPENPAGERANK_API_KEY> -- uvx seo-stack-mcp

Related MCP servers

Find local businesses with no website via OpenStreetMap, then verify them. No API keys needed.

0
Python
MIT
View repository →