sq-cli-gpt-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sq-cli-gpt-mcpscan repository 'my-project' for secrets"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sq-cli-gpt-mcp
Private, standalone Streamable HTTP MCP server that lets one approved GitHub identity operate a project-local Codex Security CLI against explicitly registered repositories on this Fedora workstation.
Public MCP endpoint:
https://sqcligpt.fredlingautomation.dev/mcpLocal origin:
http://127.0.0.1:8630/mcpHealth:
http://127.0.0.1:8630/healthMCP service:
sq-cli-gpt-mcp.serviceTunnel service:
cloudflared-sq-cli-gpt-mcp.service
This release adds a private SQ Security Cockpit widget. It has no source mutation, remediation, Git write, generic shell, arbitrary argv, or unrestricted file tool.
Design
The server exposes 14 narrow MCP tools and one versioned MCP Apps resource. A caller registers an exact Git
worktree under /home/aidev/Projects, receives an opaque repository ID, and
uses that ID for all later operations. Starting a scan persists the request and
captured Git revision in SQLite before returning a durable job ID. One local
worker invokes the pinned Codex Security executable with an internally built
argument array. Findings and artifacts remain in private service state and are
returned only as paged metadata or bounded, redacted excerpts.
The resource is ui://sq-security/cockpit-v1.html, a self-contained React
bundle using the MCP Apps bridge. A development-only ?demo=1 fixture is
tree-shaken from production and checked out by validation and installation.
Registration/removal remain chat-only; the widget can inspect summaries, start
scans, and request cancellation with inline confirmation.
Authentication is a local OAuth authorization-server proxy backed by a GitHub OAuth App. It supports protected-resource metadata, OAuth discovery, DCR, CIMD, authorization code with PKCE S256, refresh tokens, encrypted persistent OAuth state, and an exact one-login allowlist. Cloudflare provides HTTPS transport only.
See architecture and the threat model.
Related MCP server: GitHub MCP Server on Amazon Bedrock AgentCore
Requirements
Fedora user session with systemd user services and linger
Python 3.12 or newer and
uvNode.js 22 or newer and
npmGit, curl, OpenSSL, SQLite
the existing file-backed Codex sign-in at
~/.codex/auth.json, or a separately completed login in the service's isolated CLI homecloudflaredand~/.cloudflared/cert.pemfor public routinga GitHub OAuth App created with the exact values in GitHub OAuth setup
Python and Node dependencies are locked inside this repository. No other MCP project is imported or used at runtime.
Install
cd /home/aidev/Projects/004_MCPS/sq-cli-gpt-mcp
./scripts/validate-local.sh
./scripts/install.shThe installer creates:
~/.config/sq-cli-gpt-mcp/sq-cli-gpt-mcp.envwith mode0600;~/.local/state/sq-cli-gpt-mcp/with mode0700;an isolated copy of
~/.codex/auth.jsonat~/.local/state/sq-cli-gpt-mcp/cli-home/auth.json;~/.config/systemd/user/sq-cli-gpt-mcp.service.
It leaves the unit disabled until the GitHub client ID, client secret, and approved login have been placed in the protected environment file. The OAuth JWT/encryption key is generated locally. Rerunning the installer after those values exist enables and starts the unit.
After OAuth values are present:
systemctl --user restart sq-cli-gpt-mcp.service
curl --fail --silent http://127.0.0.1:8630/healthInstall the dedicated named tunnel after the local origin is ready:
./scripts/install-cloudflare.sh
systemctl --user restart cloudflared-sq-cli-gpt-mcp.service
curl --fail --silent https://sqcligpt.fredlingautomation.dev/healthThe tunnel installer creates or reuses only the named tunnel
sq-cli-gpt-mcp, safely checks an existing DNS record, and never edits the
workstation's shared Cloudflare configuration.
Operate
systemctl --user start sq-cli-gpt-mcp.service
systemctl --user stop sq-cli-gpt-mcp.service
systemctl --user restart sq-cli-gpt-mcp.service
systemctl --user status sq-cli-gpt-mcp.service
journalctl --user -u sq-cli-gpt-mcp.service -f
systemctl --user start cloudflared-sq-cli-gpt-mcp.service
systemctl --user stop cloudflared-sq-cli-gpt-mcp.service
systemctl --user restart cloudflared-sq-cli-gpt-mcp.service
systemctl --user status cloudflared-sq-cli-gpt-mcp.service
journalctl --user -u cloudflared-sq-cli-gpt-mcp.service -fLocal health returns only {"status":"ok"}. MCP requests require a bearer
token; unauthenticated /mcp requests return 401.
Back up state while the service is stopped:
systemctl --user stop sq-cli-gpt-mcp.service
./scripts/backup-state.sh /absolute/private/backup-directory
systemctl --user start sq-cli-gpt-mcp.serviceFor recovery, retention, database integrity, audit rotation, and credential rotation, use operations.
Tools
Tool | Purpose |
| Verify database, CLI, CLI authentication, and service readiness |
| Page through safe names and opaque repository IDs |
| Register one exact allowed Git worktree |
| Soft-remove an inactive registration |
| Queue repository, path, diff, or working-tree scan |
| Poll a durable job and inspect coverage |
| Cancel a queued or running process group |
| Page through durable scan history |
| Page through normalized completed-scan findings |
| Retrieve bounded evidence for one local finding ID |
| List private artifact metadata and hashes |
| Read a hash-checked bounded redacted excerpt |
| Ask the verified CLI to compare compatible completed scans |
Only sq_security_open_cockpit renders UI and carries ChatGPT compatibility
aliases. Public submission remains deferred until reviewer authentication,
demo data, publisher verification, support/privacy pages, and a successful
sealed real scan are verified.
The compatibility path is explicit start/status/cancel tools. MCP protocol Tasks are disabled because end-to-end ChatGPT support was not established for this deployment.
Scan boundaries
Initial allowed root:
/home/aidev/ProjectsDefault concurrency: one real scan
Default scan timeout: four hours
Standard/deep modes map only to verified CLI flags
Diff refs are validated by Git and cannot begin with
-Target paths are existing, repository-relative, symlink-free paths
Artifacts are stored under
~/.local/state/sq-cli-gpt-mcp/artifactsLarge outputs are bounded; artifact access accepts IDs, never paths, and opens the stored file descriptor-relative without following symlinks
Registered repositories are read-only scan inputs
The adapter captures branch, commit, detached/dirty state, and sanitized remote metadata at queue time. A changed filesystem topology is revalidated before each scan.
Development and validation
uv sync --frozen --all-groups
npm ci --ignore-scripts
uv run ruff format --check .
uv run ruff check .
uv run mypy
uv run pytest
npm audit --audit-level=highThe controlled fake CLI covers successful, partial, malformed, nonzero, cost-limit, timeout, cancellation, process-group, partial-artifact, and restart paths. It is never used as production evidence. Executed evidence and remaining external checks are tracked in validation.
Connect ChatGPT
After the production service, tunnel, and OAuth values are ready, follow ChatGPT setup. The URL entered in ChatGPT is exactly:
https://sqcligpt.fredlingautomation.dev/mcpTroubleshooting
Readiness and CLI authentication:
CODEX_HOME="$HOME/.local/state/sq-cli-gpt-mcp/cli-home" \
HOME="$HOME/.local/state/sq-cli-gpt-mcp/cli-home" \
./node_modules/.bin/codex-security login statusPort ownership:
ss -ltnp 'sport = :8630'Unit configuration:
systemd-analyze --user verify \
"$HOME/.config/systemd/user/sq-cli-gpt-mcp.service"
systemctl --user cat sq-cli-gpt-mcp.serviceTunnel configuration:
"$HOME/.local/bin/cloudflared" tunnel \
--config "$HOME/.config/sq-cli-gpt-mcp/cloudflared.yml" ingress validate
dig +short CNAME sqcligpt.fredlingautomation.devIf OAuth metadata changes, restart both services and refresh the MCP connection from the ChatGPT Plugins page before retesting.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAquality-maintenanceEnterprise-grade MCP (Model Context Protocol) server for detecting secrets and sensitive information in GitHub repositories. Scans for 35+ types of secrets including API keys, passwords, tokens, and credentials with production-ready reliability features.Last updated50
- Flicense-quality-maintenanceProvides a private, managed instance of the official GitHub MCP server hosted on Amazon Bedrock AgentCore with Okta authentication. It allows developers to securely interact with GitHub through MCP-compatible IDEs over a private AWS infrastructure.Last updated
- AlicenseBqualityAmaintenanceSelf-hosted GitHub MCP server for PR, repo file, and Dependabot operations, supporting multiple MCP clients with personal access token auth.Last updated7MIT
- AlicenseAqualityBmaintenanceMCP server for the Codex Security Cloud service, enabling agents to list, inspect, close, reopen findings, request PRs, and apply generated patches.Last updated7181MIT
Related MCP Connectors
MCP server for Appcircle mobile CI/CD platform.
A MCP server built for developers enabling Git based project management with project and personal…
A paid remote MCP for CodeG, built to return verdicts, receipts, usage logs, and audit-ready JSON.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/itsimonfredlingjack/sq-cli-gpt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server