Skip to content

refactor: extract the shared GSC MCP helpers into gsc-shared.ts - #164

Open
mattbalza wants to merge 1 commit into
every-app:mainfrom
mattbalza:refactor/extract-gsc-tool-helpers
Open

mattbalza wants to merge 1 commit into
every-app:mainfrom
mattbalza:refactor/extract-gsc-tool-helpers

Conversation

@mattbalza

Copy link
Copy Markdown

search-console-tools.ts opens with /* eslint-disable max-lines */. Three of
its helpers are about Search Console connection state rather than about either
tool defined in the file:

  • connectGscUrl — where to send someone who needs to connect
  • missingSelfHostedGoogleClientResponse — the self-hosted setup nudge
  • describeGscError — the GscNotConnectedError / GscTokenError / GscApiError wording

Moving them into gsc-shared.ts is what that disable comment was standing in
for, and the file drops back under the cap so the suppression goes with them.

No behaviour change

The three functions move verbatim. The file-local ProjectAuthContext type moves
with them as GscProjectAuthContext. Nothing else in the file changes beyond the
import block.

The payoff is for the next GSC-backed MCP tool: today it would have to restate
"not connected", "token expired", and the setup nudge, and the three copies would
drift. Downstream I have four such tools sharing this module, which is how the
extraction came up.

Test plan

pnpm ci:check    # prettier + knip + tsc + oxlint --type-aware
pnpm test

knip is the meaningful one here — it would flag any of the three exports if the
move left a caller behind.

search-console-tools.ts opens with `/* eslint-disable max-lines */`. Three of
its helpers — connectGscUrl, missingSelfHostedGoogleClientResponse, and
describeGscError — are about Search Console connection state rather than about
either tool in the file, so moving them out is what the disable was standing in
for.

No behaviour change: the functions move verbatim, the local ProjectAuthContext
type moves with them as GscProjectAuthContext, and the file drops back under the
cap so the lint suppression goes with it.

Any further GSC-backed MCP tool now shares one definition of "not connected",
"token expired", and the self-hosted setup nudge instead of restating them.
HasimEmre pushed a commit to HasimEmre/open-seo that referenced this pull request Jul 30, 2026
…flineaccess-scope

fix: support claude for mcp
@bensenescu

Copy link
Copy Markdown
Contributor

Hey,

Thanks for contributing!

For the next few months, I'm going to stop accepting external PRs. Reviewing and testing them has been slowing down progress against the roadmap.

Right now, the best way to contribute is through creating quality "Issues" which are easier for me to review and prioritize right now.

Here is our updated contributing guide: https://github.com/every-app/open-seo/blob/main/docs/CONTRIBUTING.md

Converting, this PR to an issue would be the best way to get it prioritized.

You can use the the /simple-issue-description skill described in the guide to convert the PR to an issue.

ramonmnavarro-byte pushed a commit to ramonmnavarro-byte/open-seo that referenced this pull request Aug 25, 2026
…flineaccess-scope

fix: support claude for mcp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants