MCP Server
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>]
| Option | Default | Values |
|---|---|---|
--transport | stdio | stdio, sse, streamable-http |
--host | 127.0.0.1 | Any bind address |
--port | 8080 | Any 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
| URI | Description |
|---|---|
sysplant://docs/guide | Full 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
- Ask your AI assistant to call
list_supported_syscalls()to discover available functions. - Ask it to call
get_function_prototype("NtCreateThreadEx")to inspect the signature. - Ask it to call
generate_syscalls(language="c", iterator="canterlot", method="random", preset="common", scramble=True). - The returned C header is ready to compile.