Skip to main content
Glama
skyxtools

SkyXtools-Mcp

Official
by skyxtools
README.md
# SkyXtools-Mcp — Manual Listener

Python-only implementation following the same connection pattern used by HexStrike AI:

```text
OpenCode
  └─ skyxtools_mcp.py (MCP stdio bridge; OpenCode starts this)
       └─ HTTP requests to http://127.0.0.1:8888
            └─ skyxtools_server.py (listener; you start this manually)
                 └─ local security tools
```

The listener is a local REST service, not a remote MCP endpoint. This keeps the long-running strategy state, evidence, and tool processes separate from OpenCode.

## Install

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
nano .env
```

Set authorized scope:

```text
SKY_SCOPE=example.com,*.example.com
```

Or use:

```bash
./scripts/install.sh
```

## 1. Start listener manually

Keep this terminal open:

```bash
source .venv/bin/activate
set -a; source .env; set +a
python3 skyxtools_server.py
```

Custom port or debug:

```bash
python3 skyxtools_server.py --port 8888 --debug
```

Verify:

```bash
curl http://127.0.0.1:8888/health
```

Expected:

```json
{"status":"healthy","service":"SkyXtools-Mcp","mode":"manual-listener"}
```

## 2. Configure OpenCode bridge

Copy `opencode.example.jsonc` into your OpenCode configuration and replace `/ABSOLUTE/PATH/SkyXtools-Mcp` with the actual repository path.

Example:

```jsonc
{
  "mcp": {
    "skyxtools-mcp": {
      "type": "local",
      "command": "/home/kali/SkyXtools-Mcp/.venv/bin/python",
      "args": [
        "/home/kali/SkyXtools-Mcp/skyxtools_mcp.py",
        "--server",
        "http://127.0.0.1:8888"
      ],
      "enabled": true,
      "timeout": 300000
    }
  }
}
```

OpenCode starts only the lightweight stdio bridge. The HTTP listener must already be running.

## Check

```bash
opencode mcp list
```

Inside OpenCode, call `listener_health` before other tools.

## Stop listener

Return to the listener terminal and press:

```text
Ctrl+C
```

## Components

- `skyxtools_server.py` — manually started Flask listener.
- `skyxtools_mcp.py` — FastMCP stdio bridge used by OpenCode.
- `skyxtools_core.py` — scope guard, adapters, evidence, and strategy engine.
- `.opencode/skills/.../SKILL.md` — OpenCode strategy skill.

The listener refuses non-loopback bind addresses. Do not expose port 8888 publicly.