Usage

MCP Server

Use Sysplant as a Model Context Protocol (MCP) server for AI-native toolchain integration.

MCP Server

Sysplant ships with a Model Context Protocol (MCP) server (bridge_mcp_sysplant.py) that exposes all generation capabilities to AI assistants and LLM pipelines.

Requirements

Install the MCP dependency:

pip install "sysplant[mcp]"
# or from source:
pip install ".[mcp]"

Starting the server

python bridge_mcp_sysplant.py [--transport <mode>] [--host <host>] [--port <port>]
OptionDefaultValues
--transportstdiostdio, sse, streamable-http
--host127.0.0.1Any bind address
--port8080Any port number

Transport modes

  • stdio — Default. The server communicates over stdin/stdout. Ideal for direct MCP client integrations (e.g., VS Code Copilot, Claude Desktop).
  • sse — Server-Sent Events over HTTP. Connect with an SSE-capable MCP client.
  • streamable-http — HTTP with streaming. Useful for web-based integrations.

VS Code integration

The docs-site ships with a .vscode/mcp.json that pre-configures the stdio server:

{
    "servers": {
        "sysplant": {
            "type": "stdio",
            "command": "python",
            "args": ["../bridge_mcp_sysplant.py"]
        }
    }
}

MCP resource

URIDescription
sysplant://docs/guideFull documentation guide including iterator/method/language/preset tables and example workflow

MCP tools

generate_syscalls

Generate a syscall stub file.

generate_syscalls(
    language: str,         # "c" | "cpp" | "nim" | "rust"
    arch: str,             # "x64" | "x86" | "wow"
    iterator: str,         # "hell" | "halo" | ... | "canterlot"
    method: str,           # "direct" | "indirect" | "random" | "egg_hunter"
    preset: str,           # "common" | "donut" | "all"  (mutually exclusive with functions)
    functions: list[str],  # explicit list of Nt* names (mutually exclusive with preset)
    scramble: bool         # randomize SPT_* symbols
) → str

Returns the generated source code as a string.


scan_ntfunctions

Scan a directory for Nt* / Zw* function names.

scan_ntfunctions(search_path: str) → str

Returns a newline-separated list of discovered function names.


list_supported_syscalls

Return all ~300+ function names supported by Sysplant.

list_supported_syscalls() → str

list_common_syscalls

Return the 31 functions in the common preset.

list_common_syscalls() → str

list_donut_syscalls

Return the 14 functions in the donut preset.

list_donut_syscalls() → str

get_function_prototype

Return the full prototype for a given Nt* function, including parameter names, types, and IN/OUT/optional flags.

get_function_prototype(function_name: str) → str

Case-insensitive. Returns formatted parameter list with annotations.


list_iterators

Return a description of all 7 supported iterators.

list_iterators() → str

list_methods

Return a description of all 4 supported methods.

list_methods() → str

list_languages

Return a description of all 4 supported languages, including compiler invocation strings.

list_languages() → str

Example workflow with an LLM

  1. Ask your AI assistant to call list_supported_syscalls() to discover available functions.
  2. Ask it to call get_function_prototype("NtCreateThreadEx") to inspect the signature.
  3. Ask it to call generate_syscalls(language="c", iterator="canterlot", method="random", preset="common", scramble=True).
  4. The returned C header is ready to compile.
Copyright © 2026