---
title: "Google Search Console MCP for LibreChat · GSC PAP"
source: https://gscpap.com/integrations/librechat
updated: 2026-10-19
---

[All integrations](https://gscpap.com/integrations)

Integration · LibreChat

# Connect LibreChat to Google Search Console

6 steps · about 6 minutes

By the [GSC PAP team](https://gscpap.com/about) · Updated October 19, 2026

LibreChat is a self-hosted chat interface that puts many models behind one UI, and it speaks Model Context Protocol natively through an mcpServers block in librechat.yaml. Point it at GSC PAP and the agent gets read-only access to Search Console, Google Analytics 4 and PageSpeed Insights.

The thing that makes LibreChat different from every other client on this list is that it is usually not yours alone. A desktop client's config file belongs to one person, so one token is the whole story. A LibreChat install serves a team, and Search Console access is per person: the writer should see the blog's properties and nobody else's. LibreChat can ask each user for their own token and keep it to them, so one server entry gives ten people ten separate views. That is the configuration below, and it is the one worth starting from.

One decision before the steps, because getting it wrong looks like a broken server. LibreChat guesses the transport from the URL when you do not say, and an https URL makes it guess SSE. GSC PAP speaks streamable HTTP and has no SSE endpoint at all, so the type has to be written out.

## How to connect Google Search Console to LibreChat

1.  ### Sign in to GSC PAP and copy your token
    
    Go to gscpap.com, click "Sign in with Google" and approve the read-only access. Choose which properties to authorize, then copy the bearer token the connect page shows once. Every person who will use the server does this for their own Google account, which is what keeps one install from mixing two people's properties.
    
2.  ### Add the server to librechat.yaml
    
    Open your librechat.yaml and add an entry under mcpServers. Write the type out rather than letting LibreChat infer it. The key you choose becomes part of every tool name, so keep it short and do not rename it later: renaming changes each tool key and breaks agents that were saved against the old ones.
    
    ```yaml
    mcpServers:
      gscpap:
        type: streamable-http
        url: https://mcp.gscpap.com/mcp
        title: Google Search Console
        description: Search Console, GA4 and PageSpeed, read-only.
        requiresOAuth: false
        headers:
          Authorization: "Bearer ${GSCPAP_TOKEN}"
        timeout: 120000
        initTimeout: 30000
    ```
    
3.  ### Decide whose Search Console it reads
    
    The block above uses one token from your environment, which means everybody on the install reads the same person's properties. For a shared install you want the other shape: customUserVars asks each user for their own token through the UI and substitutes it into the header. Note the braces, because this is the easiest thing to get wrong here. ${VAR} with one brace and a dollar is an environment variable read on the server; {{VAR}} with two braces is the per-user value.
    
    ```yaml
    mcpServers:
      gscpap:
        type: streamable-http
        url: https://mcp.gscpap.com/mcp
        requiresOAuth: false
        headers:
          Authorization: "Bearer {{GSCPAP_TOKEN}}"
        customUserVars:
          GSCPAP_TOKEN:
            title: GSC PAP token
            description: From app.gscpap.com, shown once when you connect.
            sensitive: true
        timeout: 120000
    ```
    
4.  ### Give the slow tools room
    
    LibreChat's default request timeout is 30 seconds, and a few of these tools legitimately take longer because they are waiting on Google rather than on us. On our own traffic pagespeed_insights averages about 16 seconds and a bulk URL inspection costs roughly as long as the slowest page in the batch, which can be 50. Left at the default, the quick tools work and the slow ones fail, which reads like an unreliable server rather than a timeout. 120000 is comfortable.
    
5.  ### Restart LibreChat and check the connection
    
    LibreChat reads librechat.yaml at startup, so the new server will not appear until you restart. Then open the tool picker: with the shared-token shape the server connects at startup and the tools are there. With customUserVars it will show as not connected until you fill the token in, because a per-user server has no app-level connection to make, and that is expected rather than a failure.
    
6.  ### Ask the first question
    
    Attach the server to an agent or pick it in the chat tool menu, then ask something that names a property. The agent will call list_sites first if it does not know your properties yet.
    
    ```text
    Using Search Console, compare the last 28 days with the previous 28 for example.com. Which five queries lost the most clicks, and what position did each move to?
    ```
    

## LibreChat MCP: common issues

-   Leave out type and LibreChat infers it from the URL, and an https URL means sse. GSC PAP has no SSE endpoint, so the connection fails for a reason the error will not name. Always write type: streamable-http.
-   ${GSCPAP_TOKEN} and {{GSCPAP_TOKEN}} are different things. One brace with a dollar is an environment variable resolved on the server; two braces is a per-user value from customUserVars. Use the wrong one and LibreChat sends the literal text as your token, which comes back 401.
-   requiresOAuth is auto-detected at startup, and our endpoint does advertise OAuth. With a static Authorization header set requiresOAuth: false, or LibreChat may start an OAuth flow instead of using the header you configured.
-   The default timeout is 30000 ms and initTimeout is 10000. Both are low for this server: the first is shorter than some Google calls take, and the second is tight for a cold start.
-   LibreChat's reference documents an oauth block whose required keys include client_id and client_secret, while the same page says Dynamic Client Registration is used when no client id and secret are given. We have not taken that path to a verified state, so the configurations here use a token. GSC PAP does implement DCR, which is how the Claude.ai connector works.
-   serverInstructions: true asks the server for usage guidance to inject into the agent's context. GSC PAP does not send instructions in the handshake today, so the option adds nothing. Leave it out rather than wondering why it changed nothing.
-   Keep the /mcp path on the URL. https://mcp.gscpap.com without it is not an MCP endpoint, and a GET to the endpoint answers 405 by design, which is correct behaviour rather than a fault.
-   Rate limits are per user, 60 tool calls a minute and 1,000 an hour. On a shared install with one shared token, everybody draws on the same allowance; with per-user tokens each person gets their own.

## Frequently asked questions

### Does LibreChat support remote MCP servers?

Yes. An entry under mcpServers in librechat.yaml with type: streamable-http and a url connects to a remote server, and headers can carry a bearer token. LibreChat also supports sse, stdio and websocket, and infers the type from the URL when you do not set it.

### How do I give each LibreChat user their own Search Console access?

Define a customUserVars variable and reference it in the Authorization header with double braces. Each user is prompted for their own token in the UI, so one server entry serves a whole team without anybody seeing anybody else's properties. A server configured this way has no app-level connection, so it shows as not connected until a user supplies the value.

### Why do some MCP tools time out in LibreChat but not others?

LibreChat's default request timeout is 30 seconds. Tools that wait on a Google API, such as a PageSpeed run or a bulk URL inspection, can exceed that while the quick Search Console queries return in under a second. Raising timeout to 120000 fixes the pattern where only the heavy tools fail.

### Do I need to set up OAuth, or is a token enough?

A token is enough and it is what we document. Paste it into the Authorization header for a single-user install, or collect it per user with customUserVars for a shared one. GSC PAP supports OAuth with dynamic client registration, which is how the Claude.ai connector avoids tokens entirely, but LibreChat's own reference is ambiguous about whether its oauth block needs a client id and secret, so the token path is the one to trust here.

## Other integrations

[All integrations](https://gscpap.com/integrations)

[

### Claude Desktop

Connect Claude Desktop to Google Search Console without creating a Google Cloud project. Sign in with Google, paste one config block, restart Claude.

6 steps · 6 min read

](https://gscpap.com/integrations/claude-desktop)[

### Cursor

Connect Google Search Console to Cursor through a hosted MCP server. Sign in with Google, paste one token into mcp.json, and skip the Google Cloud project.

5 steps · 5 min read

](https://gscpap.com/integrations/cursor)[

### Claude Code

Add Google Search Console to Claude Code with one claude mcp add command. Hosted and read-only: no Google Cloud project, no OAuth credentials, no Python.

3 steps · 3 min read

](https://gscpap.com/integrations/claude-code)[

### Codex CLI (OpenAI)

Add Google Search Console, GA4 and PageSpeed data to OpenAI's Codex CLI with one TOML block and a bearer token. You never create a Google Cloud project.

4 steps · 4 min read

](https://gscpap.com/integrations/codex-cli)[

### VS Code (GitHub Copilot)

Connect Google Search Console to GitHub Copilot in VS Code with one .vscode/mcp.json entry, then ask agent mode about GSC. You skip Google Cloud setup.

4 steps · 4 min read

](https://gscpap.com/integrations/vscode-copilot)[

### Gemini CLI (Google)

Query Google Search Console (GSC) from your terminal with Gemini CLI. Register GSC PAP as an MCP server in settings.json, with no Google Cloud project.

5 steps · 5 min read

](https://gscpap.com/integrations/gemini-cli)[

### Windsurf (Devin Desktop)

Give Windsurf, now Devin Desktop, your Google Search Console data. Add GSC PAP as a remote MCP server with one bearer token and no Google Cloud project.

4 steps · 5 min read

](https://gscpap.com/integrations/windsurf)[

### Zed Editor

Bring Google Search Console into Zed's AI assistant as an MCP context server. You add one settings.json block and a token, with no Google Cloud setup.

3 steps · 4 min read

](https://gscpap.com/integrations/zed)[

### JetBrains IDEs

Connect Google Search Console to IntelliJ, PyCharm, WebStorm and other JetBrains IDEs via AI Assistant's MCP settings, without a Google Cloud project.

5 steps · 5 min read

](https://gscpap.com/integrations/jetbrains)[

### Continue (extension)

Continue MCP setup for Google Search Console: add one mcpServers entry with a bearer token in VS Code or JetBrains. You do not need a Google Cloud project.

4 steps · 4 min read

](https://gscpap.com/integrations/continue)[

### Claude.ai (browser)

Add Google Search Console to Claude.ai as a custom connector. Paste one URL and approve access. No token to copy, no config file, no Google Cloud project.

3 steps · 3 min read

](https://gscpap.com/integrations/claude-ai-connectors)[

### Direct HTTP (curl, custom agents)

Call the GSC PAP MCP server from curl or your own agent. It is JSON-RPC over HTTP with a bearer token, so you need no MCP client or Google Cloud project.

4 steps · 5 min read

](https://gscpap.com/integrations/mcp-direct)[

### opencode

Add Google Search Console to opencode as a remote MCP server. One config block with your token, no Google Cloud project, no local server to run.

5 steps · 5 min read

](https://gscpap.com/integrations/opencode)[

### Cline

Add Google Search Console to Cline in VS Code or the Cline CLI as a remote MCP server. One token, no Google Cloud project, read-only access.

5 steps · 5 min read

](https://gscpap.com/integrations/cline)[

### Warp

Add Google Search Console to Warp's agent as a remote MCP server. Paste one JSON block with your token, press Start, and ask about your traffic in the terminal.

5 steps · 4 min read

](https://gscpap.com/integrations/warp)[

### LM Studio

Give a local model your Search Console data. Add GSC PAP to LM Studio's mcp.json as a remote server, with one token and no Google Cloud project.

5 steps · 5 min read

](https://gscpap.com/integrations/lm-studio)[

### ChatGPT

Add Google Search Console to ChatGPT as a custom MCP server. What the setup looks like, and the plan requirement that decides whether you can do it at all.

5 steps · 6 min read

](https://gscpap.com/integrations/chatgpt)[

### Goose

Add Google Search Console to Goose as a streamable_http extension. One block in config.yaml with your token, no Google Cloud project, read-only access.

5 steps · 5 min read

](https://gscpap.com/integrations/goose)[

### Google Antigravity

Add Search Console to Google Antigravity as a custom MCP server. It handles dynamic client registration, so the setup is a URL and a sign-in, with no token.

5 steps · 5 min read

](https://gscpap.com/integrations/antigravity)[

### Roo Code

Add Google Search Console to Roo Code in VS Code as a streamable-http MCP server. One block with your token, no Google Cloud project, read-only.

5 steps · 5 min read

](https://gscpap.com/integrations/roo-code)[

### Kilo Code

Add Google Search Console to Kilo Code as a remote MCP server. It can negotiate OAuth for you, or take a bearer token. No Google Cloud project either way.

5 steps · 5 min read

](https://gscpap.com/integrations/kilo-code)[

### Amp

Add Google Search Console to Amp as a remote MCP server, in settings or with one CLI command. No Google Cloud project, read-only scopes.

5 steps · 5 min read

](https://gscpap.com/integrations/amp)[

### Kiro

Add Google Search Console to Kiro as a remote MCP server. One entry in mcp.json, the token read from an approved environment variable, read-only access.

5 steps · 5 min read

](https://gscpap.com/integrations/kiro)[

### Raycast

Add Google Search Console to Raycast AI as an HTTP MCP server. Dynamic OAuth means no token to paste, and HTTP servers work on Raycast for iOS too.

5 steps · 4 min read

](https://gscpap.com/integrations/raycast)[

### GitHub Copilot CLI

Add Google Search Console to GitHub Copilot CLI with one command or one JSON entry. Remote HTTP transport, your token in a header, read-only access.

5 steps · 5 min read

](https://gscpap.com/integrations/copilot-cli)[

### n8n

Give an n8n AI Agent your Search Console data through the MCP Client Tool node, and schedule the SEO report you keep meaning to write.

6 steps · 6 min read

](https://gscpap.com/integrations/n8n)

### Top tools to try first in LibreChat

The MCP exposes 36 tools across 9 categories. These are the ones most relevant to this page:

-   [list_sites](https://gscpap.com/tools#list_sites) · List every Search Console property you have access to, with verification state and permission level.
-   [search_analytics_query](https://gscpap.com/tools#search_analytics_query) · Run any Search Analytics query with full dimension and filter support, identical to what you'd hit the GSC API for, but inline in chat.
-   [compare_periods](https://gscpap.com/tools#compare_periods) · Diff any two date ranges (e.g. last 28 days vs prior 28) to spot wins and losses across queries, pages, or countries.
-   [find_quick_wins](https://gscpap.com/tools#find_quick_wins) · Find queries ranking positions 5 to 20 with at least 100 impressions but under 5% CTR: the title and snippet fixes most likely to lift clicks.
-   [pagespeed_insights](https://gscpap.com/tools#pagespeed_insights) · Run a Google PageSpeed Insights (Lighthouse) audit. Returns performance / accessibility / best-practices / SEO scores, Core Web Vitals lab values (LCP, FCP, CLS, TBT), and the top opportunities ranked by potential savings.

[Browse all 36 tools](https://gscpap.com/tools)

Done. Your AI client now has access to your Search Console data.

Got stuck? Email [support@gscpap.com](mailto:support@gscpap.com) with the error and we will revise the guide.
