coldpass

AminForou/mcp-gsc

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Didn’t work

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/AminForou--mcp-gsc.svg).

mcp-server

Works in specific setups

The recorded run passed on 1 setup. Other recorded outcomes appear below.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesno

Linux / Haiku 5.5: yes · Oct 25, 2026 · d49eea9e5efb · claude-code / 2.1.310 (Claude Code)
Recorded operation: <guest-path> <guest-path> · local stdio MCP start + initialize + tools/list

Linux / Luna: no · Oct 25, 2026 · d49eea9e5efb · codex / codex-cli 0.163.0
Recorded operation: <guest-path> <guest-path> · local stdio MCP start + initialize + tools/list

Does what it says
1 of 1 claims checked out
  • get_capabilities lists all tools for the full list of 20 tools: Real input produced the expected result: list_properties: List all GSC sites/properties you have access to

    Source: *Ask your AI assistant to "call get_capabilities" for the full list of all 20 tools.*

    Input: {"tool": "get_capabilities", "arguments": {}}

    Expected: tool list including list_properties

    Command: <guest-path> <guest-path> tools/call {"tool": "get_capabilities", "arguments": {}}

    Observed: list_properties: List all GSC sites/properties you have access to (start here)\n - get_site_details: Get verification and ownership details for a site\n\nAnalytics & Reporting:\n - get_search_analytics: Top queries and pages with clicks, impressions, CTR, position\n - get_performance_overview: Summary of site performance for a time period\n - compare_search_periods: Compare performance between two time periods\n - get_search_by_page_query: Search terms driving traffic to a specific page\n - get_advanced_search_analytics: Advanced filtering by country, device, query, page\n\nURL Inspectio

MCP
Yes, observed
Local or hosted
both local and hosted
Both a local install and a hosted service
Maintained
Maintained
actively maintained: last commit 40 days ago; 6 commits and 2 merged PRs in 90 days; 10 open issues, 6 open PRs; 23 of 48 recent threads got a maintainer reply, median first reply 414.4h; no releases

Last commit Sep 15, 2026

Issue
none found in confirmed setups
Examples
1 of 1 ran as expected
  • Offline test suite for the server (documented in CLAUDE.md): command completed successfully

    Source: CLAUDE.md

    Input: test_gsc_server.py

    Expected: all tests pass

    Command: <guest-path> test_gsc_server.py -v

    Observed: pass/workspace/.venv/lib/python3.11/site-packages/google/api_core/_python_version_support.py:254: FutureWarning: You are using a Python version (3.11.17) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2027-10-24). Please upgrade to the latest Python version, or at least Python 3.12, to continue receiving updates for google.api_core past that date. warnings.warn(message, FutureWarning) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ======================== 52 passed, 1 warning in 4.84s =========================

Evidence
README behavior checked
Agent interfaces
MCP
MCP

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
21 tools · about 5,350 tokens
21 tools · about 5,350 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 25, 2026 on d49eea9e5efb

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.310 (Claude Code) · Recorded pass invalidated · setup-only proof · Oct 25, 2026 on d49eea9e5efb

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 118 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

OSV reports a known vulnerability in this dependency version. 10 distinct locations. 59 findings.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Repair history and test corrections
Current diagnosis: unknown · pending

Could not validate exact README quotation and MCP replay

Repair record fix-b5c3eb60f5d6e1533c1a · current status JSON. Original run outcomes remain unchanged.

Failed run: AminForou/mcp-gsc · Oct 25, 2026 · Recorded operation failed.

Run details

Haiku 5.5

Native agent · Recorded pass invalidated · setup-only proof

Operation / attempted scope <guest-path> <guest-path> · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the Google Search Console MCP server (gsc_server.py) over stdio and call its tools, e.g. get_capabilities (works) and list_properties (needs Google credentials).

MCP server returned: gsc-server · version 1.30.0.

MCP tools returned: get_capabilities, list_properties, add_site, delete_site, get_search_analytics, get_site_details, get_sitemaps, inspect_url_enhanced, batch_url_inspection, check_indexing_issues, get_performance_overview, get_advanced_search_analytics, compare_search_periods, get_search_by_page_query, list_sitemaps_enhanced, get_sitemap_details, submit_sitemap, delete_sitemap, manage_sitemaps, get_creator_info, reauthenticate. Tool listing does not establish authenticated tool-call success.

Run details
run
AminForou--mcp-gsc-claude-haiku-5-5-1792970480788736653
date
Oct 25, 2026
time to working
186.0s (historical recorded time; operation proof invalidated)
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.014573
Recorded source
https://github.com/AminForou/mcp-gsc
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "d49eea9e5efb5eb645b722249303179b2c150b49", "url": "https://github.com/AminForou/mcp-gsc"}
Test version
readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa
revision
d49eea9e5efb5eb645b722249303179b2c150b49
Whose fault: prerequisite · diagnosed

No Google Search Console credentials (OAuth client secrets or service account key) are available in this disposable VM.

The run recorded a missing prerequisite and where it got stuck, so the pass did not exercise the product's real operations.

Recorded blocker / warning

Step: README 'Step 1 — Set Up Google API Credentials' (OAuth client_secrets.json or service account JSON) before any real Search Console call such as list_properties.

Safety: Review signals: 59 known vulnerability.

Review signals: 59 known vulnerability.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV reports a known vulnerability in this dependency version. 10 distinct locations. 59 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • get_capabilities lists all tools for the full list of 20 tools: Real input produced the expected result: list_properties: List all GSC sites/properties you have access to

    Source: *Ask your AI assistant to "call get_capabilities" for the full list of all 20 tools.*

    Input: {"tool": "get_capabilities", "arguments": {}}

    Expected: tool list including list_properties

    Command: <guest-path> <guest-path> tools/call {"tool": "get_capabilities", "arguments": {}}

    Observed: list_properties: List all GSC sites/properties you have access to (start here)\n - get_site_details: Get verification and ownership details for a site\n\nAnalytics & Reporting:\n - get_search_analytics: Top queries and pages with clicks, impressions, CTR, position\n - get_performance_overview: Summary of site performance for a time period\n - compare_search_periods: Compare performance between two time periods\n - get_search_by_page_query: Search terms driving traffic to a specific page\n - get_advanced_search_analytics: Advanced filtering by country, device, query, page\n\nURL Inspectio

Examples

  • Offline test suite for the server (documented in CLAUDE.md): command completed successfully

    Source: CLAUDE.md

    Input: test_gsc_server.py

    Expected: all tests pass

    Command: <guest-path> test_gsc_server.py -v

    Observed: pass/workspace/.venv/lib/python3.11/site-packages/google/api_core/_python_version_support.py:254: FutureWarning: You are using a Python version (3.11.17) which Google will stop supporting in new releases of google.api_core once it reaches its end of life (2027-10-24). Please upgrade to the latest Python version, or at least Python 3.12, to continue receiving updates for google.api_core past that date. warnings.warn(message, FutureWarning) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ======================== 52 passed, 1 warning in 4.84s =========================

Local or hosted: both

What the agent did

Run the Google Search Console MCP server (gsc_server.py) over stdio and call its tools, e.g. get_capabilities (works) and list_properties (needs Google credentials).

cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md 2>/dev/null | head -150
cd <guest-path> && sed -n '150,400p' README.md | cut -c1-400; cat .python-version pyproject.toml | head -60; ls .coldpass <guest-path> 2>&1
cd <guest-path> && which uv uvx; uv --version 2>&1; cat requirements.txt; cat .mcp.json; cat mcp.json; grep -n "def get_capabilities\|GSC_SKIP_OAUTH\|GSC_CREDENTIALS_PATH\|def main\|mcp.run\|FastMCP(" gsc_server.py | head -30
cd <guest-path> && uv venv .venv 2>&1 | tail -3 && uv pip install -p .venv/bin/python -r requirements.txt 2>&1 | tail -5
cd <guest-path> && sed -n 250,300p gsc_server.py; sed -n 1,40p <guest-path> | cut -c1-200
cd <guest-path> && sed -n 95,175p gsc_server.py | cut -c1-180
cd <guest-path> && grep -c 'Ask your AI assistant to \\"call get_capabilities\\" for the full list of all 20 tools' README.md; grep -c 'Set to `\\"true\\"` to force service account auth and skip OAuth entirely' README.md; grep -c 'list_properties: List all GSC sites' gsc_server.py; cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["<guest-path>","<guest-path>"],"cwd":"<guest-path>","env":{"GSC_SKIP_OAUTH":"true"},"tool":"get_capabilities","arguments":{},"expected_text":"Not authenticated"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"get_capabilities lists all tools for the full list of 20 tools","source":"*Ask your AI assistant to \"call get_capabilities\" for the full list of all 20 tools.*","input":"get_capabilities with no arguments","expected":"tool list including list_properties","probe_kind":"mcp","argv":["<guest-path>","<guest-path>"],"tool":"get_capabilities","arguments":{},"expected_text":"list_properties: List all GSC sites/properties you have access to","env":{"GSC_SKIP_OAUTH":"true"},"cwd":"<guest-path>"}]
EOF
python3 -m json.tool .coldpass/probe.json >/dev/null && python3 -m json.tool .coldpass/claims.json >/dev/null && echo OK
cd <guest-path> && python3 -I -c "
import json
t=open('README.md',encoding='utf-8').read()
c=json.load(open('.coldpass/claims.json'))[0]
print(c['source'] in t)
print('Set to \`\"true\"\` to force' in t)
"
cd <guest-path> && grep -n -i "pytest\|test_\|cron\|schedul\|--once\|webhook" README.md CLAUDE.md CHANGELOG.md | head; grep -n -i "schedul\|cron\|while True\|--once" gsc_server.py | head -5; cat CLAUDE.md | head -40 | cut -c1-200
cd <guest-path> && uv pip install -p .venv/bin/python pytest 2>&1 | tail -2 && timeout 600 .venv/bin/python -m pytest test_gsc_server.py -q 2>&1 | tail -8
cd <guest-path> && cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Offline test suite for the server (documented in CLAUDE.md)","source":"CLAUDE.md","input":"test_gsc_server.py","expected":"all tests pass","argv":["<guest-path>","test_gsc_server.py","-v"],"cwd":"<guest-path>","env":{"GSC_SKIP_OAUTH":"true"},"expected_text":"52 passed"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Entry points inspected (gsc_server.py main(), README, CLAUDE.md, pyproject.toml scripts). The server is a request-driven MCP stdio/SSE server with no scheduler, cron, loop, --once or webhook trigger; it only runs when an MCP client calls a tool.","checks":[]}
EOF
python3 -I -m json.tool .coldpass/examples.json >/dev/null && python3 -I -m json.tool .coldpass/cycles.json >/dev/null && echo OK; <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -40
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'
{"outcome":"needs_credentials","fault_owner":"prerequisite","operation":"Run the Google Search Console MCP server (gsc_server.py) over stdio and call its tools, e.g. get_capabilities (works) and list_properties (needs Google credentials).","operation_scope":"Local clone install per README Step 2 Option B on Python 3.11+ (VM has uv 0.13.5 and CPython 3.11.17 in the venv). Real GSC data calls need a Google OAuth client_secrets.json or a service account JSON, neither of which exists in this VM. Tested with GSC_SKIP_OAUTH=true so no browser login is attempted.","steps":["curl/uv already present; uv venv .venv","uv pip install -r requirements.txt (README Option B, clone path)","GSC_SKIP_OAUTH=true .venv/bin/python gsc_server.py (MCP stdio) and tools/call get_capabilities -> returned tool list and 'Not authenticated' auth status","uv pip install pytest, then .venv/bin/pytest test_gsc_server.py -v (CLAUDE.md) -> 52 passed"],"deviations":["Used 'uv pip install -p .venv/bin/python' to point uv at the venv explicitly; otherwise the README commands are unchanged.","Installed pytest into the venv because CLAUDE.md's documented test command needs it; it is not in requirements.txt.","Did not run list_properties or any analytics tool: no Google credentials available in the VM (needs_credentials). Nothing was installed or downloaded beyond the Python dependencies; no browser was used.","README uvx path (uvx mcp-search-console) not run; it fetches the published package instead of the checked-out source."],"stuck_step":"README 'Step 1 — Set Up Google API Credentials' (OAuth client_secrets.json or service account JSON) before any real Search Console call such as list_properties.","main_blocker":"No Google Search Console credentials (OAuth client secrets or service account key) are available in this disposable VM.","plain_failure":"The server starts and its tools respond, and the offline test suite passes (52 tests). But the tools that read real Search Console data cannot run until someone supplies a Google login file or service-account key. The check of get_capabilities correctly reports 'Not authenticated', so the auth path works as documented.","suggested_fix":"Provide a GSC_OAUTH_CLIENT_SECRETS_FILE (with a browser login) or a GSC_CREDENTIALS_PATH service account key with GSC_SKIP_OAUTH=true, then re-run list_properties against a verified property."}
EOF
python3 -I -m json.tool .coldpass/report.json >/dev/null && echo REPORT_OK; ps aux | grep -c "[g]sc_server"; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -c "import sys,json; d=json.loads(sys.stdin.read()); print(d['valid'], d['problems'], d['replay']['status'])"
ps -eo pid,ppid,etime,args | grep "[g]sc_server"
Earlier attempts (1)

Luna

Native agent · Recorded operation failed

Operation / attempted scope <guest-path> <guest-path> · local stdio MCP start + initialize + tools/list

Agent-reported scope: MCP get_capabilities and GSC property listing

MCP server returned: gsc-server · version 1.30.0.

MCP tools returned: get_capabilities, list_properties, add_site, delete_site, get_search_analytics, get_site_details, get_sitemaps, inspect_url_enhanced, batch_url_inspection, check_indexing_issues, get_performance_overview, get_advanced_search_analytics, compare_search_periods, get_search_by_page_query, list_sitemaps_enhanced, get_sitemap_details, submit_sitemap, delete_sitemap, manage_sitemaps, get_creator_info, reauthenticate. Tool listing does not establish authenticated tool-call success.

Run details
run
AminForou--mcp-gsc-gpt-6-luna-1792970601249669039
date
Oct 25, 2026
time to working
not recorded
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
Clone install using documented uv virtual environment; Python 3.11.17
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/AminForou/mcp-gsc
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "d49eea9e5efb5eb645b722249303179b2c150b49", "url": "https://github.com/AminForou/mcp-gsc"}
Test version
readme-a17389bda4cc696f9601c0c4ff1b2c16e23bfa1d907883b715ccdd9e92ddec56
revision
d49eea9e5efb5eb645b722249303179b2c150b49
Current diagnosis: unknown · pending

Could not validate exact README quotation and MCP replay

Repair record fix-b5c3eb60f5d6e1533c1a · current status JSON. Original run outcomes remain unchanged.

Failed run: AminForou/mcp-gsc · Oct 25, 2026 · Recorded operation failed.

Fix: fix-b5c3eb60f5d6e1533c1a.

Recorded blocker / warning

Step: checker claim validation

Could not validate exact README quotation and MCP replay

Safety: Review signals: 59 known vulnerability.

Review signals: 59 known vulnerability.

OSV reports a known vulnerability in this dependency version. 10 distinct locations. 59 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Get a full list of available tools and current auth status in one call.: Claim needs an exact quote from source_file (default README.md).

    Source: call this to get a full list of all 20 tools.

    Input: get_capabilities

    Expected: get_capabilities

Examples

  • Run the documented clone setup and test operation: The documented assistant operation needs Google credentials, which are not available in the guest.

    Source: README.md#Step 3 — Test

    Input: List my GSC properties

    Expected: Requires Google credentials

    Observed: The documented assistant operation needs Google credentials, which are not available in the guest.

Local or hosted: both

Suggested next step (agent-reported): Correct claims.json to use an exact README quote and replay the MCP call.

What the agent did

MCP get_capabilities and GSC property listing

pwd && rg --files -g 'README*' -g 'pyproject.toml' -g 'requirements*.txt' -g 'package.json' -g 'AGENTS.md' -g 'Makefile' -g '.github/workflows/*' | head -80 && python3 --version && sed -n '1,240p' README.md
sed -n '240,520p' README.md; find . -maxdepth 2 -type f | sort | head -100; id -u
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH=<guest-path>; uv --version; uv venv .venv && uv pip install -r requirements.txt
sed -n '1,200p' gsc_server.py; cat pyproject.toml
grep -n 'def main\|get_capabilities' gsc_server.py; tail -40 gsc_server.py
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["<guest-path>","<guest-path>"],"cwd":"<guest-path>","env":{"GSC_CONFIG_DIR":"<guest-path>"},"tool":"get_capabilities","arguments":{},"expected_text":"get_capabilities"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Get a full list of available tools and current auth status in one call.","source":"call this to get a full list of tools and current auth status in one shot.","input":"get_capabilities","expected":"get_capabilities","probe_kind":"mcp","argv":["<guest-path>","<guest-path>"],"tool":"get_capabilities","arguments":{},"expected_text":"get_capabilities","cwd":"<guest-path>","env":{"GSC_CONFIG_DIR":"<guest-path>"}}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Run the documented clone setup and test operation","source":"README.md#Step 3 — Test","input":"List my GSC properties","expected":"Requires Google credentials","reason":"The documented assistant operation needs Google credentials, which are not available in the guest."}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Inspected gsc_server.py entry point: the product serves MCP requests on demand and contains no scheduler or cycle trigger.","checks":[]}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
python3 - <<'PY'
p='.coldpass/claims.json'
s=open(p).read().replace('call this to get a full list of tools and current auth status in one shot.','call this to get a full list of all 20 tools.')
open(p,'w').write(s)
PY
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/report.json <<'EOF'
{"outcome":"needs_credentials","fault_owner":"prerequisite","operation":"MCP get_capabilities and GSC property listing","operation_scope":"Clone install using documented uv virtual environment; Python 3.11.17","steps":["Installed uv with the README installer.","Created .venv with uv and installed requirements.txt.","MCP tool operation could not be replayed due to artifact quote validation."],"deviations":["README claim quote validation rejected the provided claim quote; the checker output was: claims.json[0] needs an exact quote from source_file (default README.md)."],"stuck_step":"checker claim validation","main_blocker":"Could not validate exact README quotation and MCP replay","plain_failure":"The MCP server dependencies installed, but replay evidence did not pass validation. Google credentials are also required to list properties.","suggested_fix":"Correct claims.json to use an exact README quote and replay the MCP call."}
EOF