Skip to main content

Appknox MCP Server

An MCP server that connects your AI coding agent to Appknox KnoxIQ, so it can fetch the vulnerabilities Appknox found in your app, fix them in your repo, and verify each fix with the finding's own proof-of-concept — without leaving your editor.

Works with any MCP-capable agent. Verified with Claude, Codex, Copilot, Cursor, and Windsurf — anything else that speaks MCP should work too.


Install

Two ways: ask your agent (no clone, recommended) or run the guided script.

Option A — Ask your agent (no clone)

If you already have an AI coding agent running (Claude Code, Cursor, Codex, …), paste this — the install guide bundled in the package has every remaining step (credentials, client config, the Claude Code plugin, restarting), so there's nothing else to keep in sync here:

Install the appknox-mcp MCP server for me:
1. `uv tool install --reinstall appknox-mcp` —
   **always include `--reinstall`**: without it, `uv` silently does nothing if
   any version is already installed, even a stale one missing this exact flag.
2. Run `appknox-mcp --install-guide` and follow it exactly.

That's it — the agent installs it, reads the guide, asks you for credentials, writes the config, and tells you to restart the client.

Option B — Guided script (auto-detects your clients)

Prefer a deterministic install? Clone and run the installer — macOS, Linux, and Windows all get the identical flow and write identical config, just via a .sh or .ps1 wrapper around the same Python backend:

macOS / Linux / WSL / Git Bash:

git clone git@github.com:appknox/appknox-mcp.git
cd appknox-mcp
./scripts/install.sh

Windows (PowerShell):

git clone git@github.com:appknox/appknox-mcp.git
cd appknox-mcp
.\scripts\install.ps1

It installs uv if missing, auto-detects the MCP clients on your machine, and lets you pick which to configure (space-separated numbers, a for all, or m for manual steps). It prompts for your token (hidden input) and your base URL (no default offered — always ask, since white-labeled deployments use a different host), merges the server into each selected client's config without touching anything else, and git-ignores any token-bearing config. If Claude Code is selected, it also installs the plugin (claude plugin marketplace add + claude plugin install, user scope) so the /appknox:* slash commands and the fixer agent are available from any repo, not just this one. Then restart the client(s).

Name clients directly to skip detection: ./scripts/install.sh cursor codex (or .\scripts\install.ps1 cursor codex on Windows). Set APPKNOX_ACCESS_TOKEN / APPKNOX_BASE_URL beforehand to skip the prompts.

Full step-by-step, per-client config paths, and by-hand setup: INSTALL.md.


Verify it's connected

MCP servers only load at startup, so restart the client first, then check it picked up appknox:

Claude Code

Run /mcp in any session — it's registered at user scope, so this works in any project, not just one repo — you should see appknox listed with ~9 tools. If you also installed the plugin, try /appknox:triage to confirm the slash commands loaded (this needs the plugin's own credentials — see INSTALL.md for the env-var export it relies on).

Claude Desktop

Fully quit (Cmd+Q) and reopen — it only reads config at launch. Then either:

  • click the hammer/tools icon in the chat input and look for resolve_latest_file, list_analyses, etc., or
  • click + below the chat box → Connectors, or
  • go to Settings → Developer to see the server's status and logs.
Codex CLI

Restart the Codex session, then run /mcp — appknox should appear in the server list.

GitHub Copilot CLI

Restart your copilot session, then run /mcp inside it — or run copilot mcp list directly from your shell. Either should show appknox.

Also run with --allow-all-mcp-server-instructions (v1.0.66+) if you want the guided workflow (resolve → triage → fix → verify, exploitability shown by default, etc.) — Copilot CLI doesn't feed any MCP server's instructions to the model without it, so without this flag it'll still call the tools correctly but skip the intended flow unless you spell each step out yourself.

Cursor

Restart Cursor, then open Settings → MCP. appknox should show a green dot with a tool count next to it. (Green dot but 0 tools? Cursor caps tools at 40 across all enabled servers combined — check what else you have enabled.)

Windsurf

Restart Windsurf, then click the MCPs icon in the top-right of the Cascade panel — appknox should show a green status indicator with its tools listed underneath.

VS Code (incl. Copilot Chat)

Reload the window (Command Palette → Developer: Reload Window), then Command Palette → MCP: List Servers — appknox should appear with start/stop/restart options. Once started, open Copilot Chat and check the tools icon next to the model picker — appknox's tools should be listed and toggled on there.


Usage

Inside your app's repository, once the server is connected:

First run — resolving which build to check

The tools work against a specific Appknox file_id (a scanned build). You don't need to look one up:

  • Don't mention one and the agent detects your app's package_name (and Android/iOS platform) from the repo, resolves it to the latest scanned build on Appknox, and tells you which build it found before doing anything else — confirm it or point it at a different one.
  • Already have a file_id (e.g. checking an older build on purpose)? Just say so — it's used directly, after a quick check that it's still current.
You:   Find and fix the Appknox vulnerabilities in this repo.
Agent: No file_id given — I'll detect this app from the repo and use its
       latest scanned build. Found com.appknox.demo (Android), latest is
       file_id 48213 (v3.2.1, scanned 2 days ago). Use this one?
You:   Yes.
Agent: [checks scan readiness, then lists vulnerabilities by exploitability…]

Claude Code

Command What it does
/appknox:triage Lists KnoxIQ vulnerabilities for the latest scanned build and — on your selection — fixes them, verifying each with its PoC.
/appknox:fix <selection> Fixes the finding(s) you name — a single analysis_id, all, a severity, or an exploitability range (highly exploitable) — and verifies each with its PoC. Optional file_id second arg.
/appknox:upload <binary-path> Uploads a built binary (APK/IPA/…) to Appknox and starts a fresh scan; returns the new file_id.
/appknox:verify <new_file_id> [old_file_id] Compares the re-scanned build to report which vulnerabilities are resolved vs still open.

No file_id needed for triage/fix — the app is resolved from the repo's package_name. If KnoxIQ isn't enabled or the scan isn't ready, the command says so instead of showing an empty list.

Full loop: /appknox:triage → fix → build → /appknox:upload → /appknox:verify.

Any other client (Codex, Cursor, Claude Desktop, …)

No slash commands, but the same workflow is built into the server, so just ask:

  • "Find and fix the Appknox vulnerabilities in this repo."
  • "Fix Appknox analysis 405." / "Fix all highly exploitable findings."
  • "Upload build/app-release.apk to Appknox."
  • "Did my fixes work? Compare build 987 against 950."

The fixes are left staged for you to review — the commands never commit. A local PoC check is confidence, not proof; the Appknox re-scan is the ground truth.


Credentials

Create a service account in the Appknox dashboard under Service Accounts and copy the Access Key ID and Secret Access Token. The token format is <Access Key ID>:<Secret Access Key>.

Environment Variable Required Default Description
APPKNOX_ACCESS_TOKEN Yes — <Access Key ID>:<Secret Access Key>
APPKNOX_BASE_URL No https://publicapi.appknox.com API host (use staging while KnoxIQ is in beta)

Per-client config file paths and shapes: INSTALL.md.


Uninstall

Installed via Option A (no clone)? Use the bundled command — it needs nothing but the package you already have:

appknox-mcp --remove-client cursor        # same client names as install

Then, to remove the package itself: uv tool uninstall appknox-mcp.

Installed via Option B (cloned the repo)? Use the installer scripts — functionally identical, just also cleans up the Claude Code plugin registration:

./scripts/uninstall.sh cursor        # same client names as install
.\scripts\uninstall.ps1 cursor       # Windows

Either way, only the appknox entry is removed from that client's config; nothing else is touched. Restart the client afterwards.

Release files for appknox-mcp 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for appknox-mcp 1.0.1
File Size Uploaded
appknox_mcp-1.0.1.tar.gz 59.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for appknox-mcp 1.0.1
File Interpreter ABI Platform
appknox_mcp-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 106.5 kB

Release files / appknox_mcp-1.0.1.tar.gz

Download URL appknox_mcp-1.0.1.tar.gz
Size 59.3 kB
Tags Source
SHA-256 checksum
How to use checksums
faafb84d1d208cd3cabcb52730f5e5020ea19341053ca445a00f04dda72c3c92
BLAKE2b-256 checksum
How to use checksums
d6100a07b9782adb5c7bc8c2f0800f89b165a4eb9102c6f181c4b5958ad8dfa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / appknox_mcp-1.0.1-py3-none-any.whl

Download URL appknox_mcp-1.0.1-py3-none-any.whl
Size 47.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bebf45977e7a076862efac60e0919c68b3d4da44ddc5b484ca4ca979dded8339
BLAKE2b-256 checksum
How to use checksums
7e7d57a9b94eeb19c82e9702dd64bd9910d84508b71474b431d60c47103dbfac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.0.2

2 release files

This release

1.0.1 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page