What ntobjmanager-mcp MCP server does
The ntobjmanager-mcp MCP server exposes NtObjectManager and NtCoreLib capabilities to MCP clients for Windows RPC attack-surface research. It connects agents to the local RPC runtime through a persistent PowerShell process, allowing parsed server objects, connected clients, and stored variables to remain available between tool calls. The server also supports a persistent guest runspace for PowerShell execution inside a lab virtual machine.
Its intended use is authorized research and validation on Windows systems. The repository includes an authorization policy and audit logging: every tool call is appended to output/mcp_audit.log. The project is categorized under ๐ Security because its tools inspect RPC interfaces, endpoints, access controls, task exposure, and related attack-surface conditions.
How it works
The ntobjmanager-mcp MCP server runs over stdio. Python renders PowerShell command templates, and a persistent powershell.exe process executes them using encoded commands and completion markers. Server state is held in a PowerShell structure containing cached servers, live clients, and variables.
A typical investigation parses a PE file, inspects its interfaces, discovers local or remote endpoints, connects a client, lists opnum-mapped methods, and invokes selected procedures. Results can be retained with store_as and passed into later calls with {"__var__":"name"}. This preserves raw RPC objects, including context handles, instead of forcing each call through a serialization boundary.
The VM bridge follows the same stateful model. rpc_vm_start_listener starts the guest HTTP engine, while rpc_vm_exec runs PowerShell in the guest. The documented vmrun fallback does not preserve state.
Setup and configuration
Install PowerShell 5.1, Python 3.10 or newer, the NtObjectManager PowerShell module, and the Python dependencies from requirements.txt. The documented module setup uses:
Install-Module NtObjectManager -Scope CurrentUser -Force
pip install -r requirements.txt
python server.py
The final command starts the stdio MCP server. The README shows a Claude Code registration using claude mcp add, and a local MCP configuration example for another client. A Windows environment is required for the PowerShell and NtObjectManager workflow.
Tools and capabilities
The ntobjmanager-mcp MCP server provides tools in several groups:
- Parse PE files, cache RPC servers, inspect interfaces, query EPM endpoints, enumerate running servers, connect or disconnect clients, list methods, and invoke procedures.
- Execute persistent PowerShell in a lab VM and start the guest listener.
- Scan context handles, inventory RPC exposure, run primitive-only fuzzing, find interfaces associated with stopped services, inspect ETW reports for unreachable servers, and audit interface security.
- Decode
RpcServerRegisterIf3 flags, export generated C# client code, construct NDR structures, test ALPC port squatting, and enumerate user-startable tasks.
- Manage cached state and stored session variables.
The fuzzing tool defaults to dry-run mode and classifies results as allowed, denied, or errored. RPC endpoint queries can target local or remote systems, subject to the environment and permissions.
Limitations and notes
This tooling is for controlled, authorized environments; its functions include live RPC connections, fuzzing, ALPC operations, and VM execution. Administrative access is required for the ETW unreachable-server workflow. Static findings do not by themselves establish exploitability: the projectโs documented test round included false positives, authorization gates, and cases where the NDR layer could not prove that handles had multiple types.
The README reports a 150-entry eviction cap for cached state. Fuzzing is conservative by default, but changing execution parameters can alter system behavior. Review the projectโs security policy before connecting to production hosts or services.