cortex MCP server
2026년 11월 13일 커밋AI 에이전트가 Windows 실행 파일, .NET 및 Electron 애플리케이션에 대해 메모리 스캔, 디버깅 및 정적 분석을 수행할 수 있도록 지원합니다.
다른 이름 PdB333/cortex
- 스타
- 34
- Tools
- —
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 13일
- 라이선스
- MIT
cortex MCP란?
cortex은(는) MCP server입니다. AI 에이전트가 Windows 실행 파일, .NET 및 Electron 애플리케이션에 대해 메모리 스캔, 디버깅 및 정적 분석을 수행할 수 있도록 지원합니다.
프로젝트 README에서 생성된 요약
cortex MCP server 정보
Cortex는 Windows 시스템의 리버스 엔지니어링, 디버깅 및 메모리 분석을 위한 전문 워크스페이스를 제공합니다. 사용자는 PE 파일, .NET 어셈블리, Electron 애플리케이션을 포함하여 실행 중인 프로세스나 정적 파일을 조사할 수 있습니다. 이 도구는 메모리 스캐너, 디스어셈블러, 디버거를 하나의 엔진으로 결합한 통합 환경으로 작동합니다. 개발자는 네이티브 데스크톱 GUI, CLI 또는 AI 에이전트를 위한 MCP server를 통해 이를 사용할 수 있습니다.
MCP를 통해 사용할 경우, AI 클라이언트는 메모리 스캔, 메모리 읽기 또는 브레이크포인트 설정과 같은 도구를 실행할 수 있습니다. 서버는 안전을 위해 기본적으로 읽기 전용 모드로 작동하며, 에이전트가 대상을 수정해야 하는 경우 --allow-writes 플래그를 명시적으로 사용해야 합니다. 사용자는 데스크톱 애플리케이션의 AI Activity 패널을 통해 에이전트가 수행하는 모든 작업을 모니터링할 수 있습니다. 또한 Ghidra, ILSpy, Vineflower와 같은 외부 엔진과 통합되어 디컴파일된 코드 분석을 제공합니다.
활용 사례
- 1메모리 쓰기 명령 식별AI 에이전트가 실행 중인 프로세스에서 특정 값을 스캔하고 해당 값을 변경하는 정확한 명령을 찾을 수 있습니다.
- 2Electron 앱 정적 분석 수행개발자가 코드를 실행하지 않고도 Electron asar 파일을 조사하여 IPC 채널 및 contextBridge 노출 여부를 확인할 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →아직 인증되지 않았습니다. 서버는 80점 이상의 점수, 심각한 결함 없음, 그리고 검사에 충분한 데이터를 갖추어야 합니다. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능pdb333/cortex is public and reachablegithub.com/pdb333/cortex ↗통과
- 패키지가 이 저장소를 소스로 명시검사되지 않음
- 빌드 출처(Sigstore 증명)검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-13github.com/pdb333/cortex ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기See a value change in a program you own. Find the instruction that changed it. Show the evidence.
Memory scanner, debugger and reverse-engineering workspace for Windows software in one native app. It reads files as well as live processes, can use Ghidra, ILSpy and live debuggers, and has an MCP server so an AI agent can do the same work under your control.
Two ways to use it · Quick start · See it work · What you can analyze · AI & MCP · Safety · FAQ · Docs
Recorded from the real desktop against the repository's test target: attach, scan, narrow down, find out what writes, disassembler. No speed-up and no edits besides the captions.
[!WARNING] Use Cortex only on software and systems you own or are authorized to inspect. It is for debugging, research, interoperability, accessibility, testing and controlled modding. Anti-cheat, DRM and access-control bypass, and interference with online services, are out of scope.
Why Cortex
- One tool instead of five. Scanner, memory viewer, disassembler, debugger, patcher, tracer, RE workspace, scripting and diagnostics all work on the same target and project, with one shared address menu.
- Read-only until you decide otherwise. Every session starts Read-only. Writes, freezes, patches, breakpoints, and even loading the runtime into the target, need Writes allowed in the desktop or
--allow-writeson the MCP server. An agent cannot grant itself that. - Files as well as processes. Inspect a PE, a .NET assembly, an Electron
.asaror a JavaScript bundle without running it. Optionally hand it to Ghidra, ILSpy or Vineflower and map the results back to the live process by module and RVA. - Built for agents, watched by people.
cortex.exe mcpis a native MCP server. Each tool call an agent makes shows up live in the desktop's AI Activity panel. - Claims come with evidence. Results record where they came from, their status (
observed,validated…) and their limits. An observation is never presented as an explanation of the code.
Two ways to use Cortex
One cortex.exe and one engine, with two ways to drive it. Both share the same targets, projects and evidence, so you can switch between them in the middle of an investigation.
Desktop (GUI): run cortex.exe. Attach to a process, scan, debug, disassemble and inspect files in dockable workspaces. Everything is clicks and right-click menus.
Command line (CLI): the same engine from a terminal or a script, with nothing to click:
cortex.exe inspect app.asarto analyze a file;cortex.exe provider run ghidra …to decompile;cortex.exe live watch …for a live debugger;cortex.exe evidence exportto export the evidence.
Use it for automation, CI or quick checks.
Who decides: you. A session starts Read-only; switch to Writes allowed only when you mean to change the target.
MCP server: your AI client (Claude Code, Cursor, any MCP client) starts cortex.exe mcp in the background and calls Cortex's tools: scan, read memory, breakpoints, inspect, Ghidra and ILSpy, live debuggers.
You stay in control:
- You choose what the agent may do, in the client's configuration: read-only by default,
--allow-writesonly if you add it. The agent cannot change this. - Every change must also be requested explicitly (
mutation_permission: true). - Open the desktop to watch every call live in AI Activity.
- Right-click an address and choose Share with investigation context to give the agent the address you selected.
- Approve or reject each step of an investigation (desktop, or
cortex.exe investigation approve).
A typical session mixes the two: the agent narrows down a value and finds the instruction that writes it, then you open that address in the desktop and check it yourself.
Quick start
Download cortex-v<version>-windows-portable.zip from the latest release and extract the whole archive (or use the cortex-imgui-gui-tested-portable artifact of a green CI run for the current branch).
By hand (desktop):
- Run
cortex.exe. The start page offers Analyze a file, Inspect a running program and Work with an AI agent; for memory, click Select a process... and attach to your target. - In Memory › Value scan, enter the current value and run First scan. Change the value in the target, then run Next scan.
- Double-click a result to keep it. Right-click it to open it in the Memory viewer, Disassembler or Debugger, or to find out what writes to this address.
- Switch the header to Writes allowed only when you mean to change something.
From the command line:
cortex.exe inspect C:\path\to\app.asar # analyze a file; nothing runs
cortex.exe probe --pid 1234 # read-only health of a running target
With an AI agent (MCP): add Cortex to your client's MCP configuration, then ask the agent for something like "attach to PID 1234 (my own test program), find the address of the health value and what writes it":
{
"mcpServers": {
"cortex": { "command": "C:/Cortex/cortex.exe", "args": ["mcp"] }
}
}
This configuration is read-only. Add "--allow-writes" to args only if you want the agent to be able to change the target (breakpoints, writes, loading the runtime). See AI & MCP.
New to Cortex? Follow the illustrated walkthrough (français) or the manual workflow demo.
See it work
An agent finds what writes a value
Left: an MCP client. It is a short script standing in for an agent, and every call and reply in it is real. It scans for 100, narrows to one address after a hit, sets a logging hardware write breakpoint (mutation_permission: true, server started with --allow-writes), and resolves the trap to cortex_test_target_x64.exe + 0x1504, just after mov [rax+0x04], ecx. Right: the desktop lists each tool call in AI Activity as it happens.
Static analysis, no process needed
cortex.exe inspect on the repository's fixtures:
- an Electron
.asargives its IPC channels, with sender and handler, and itscontextBridgeexposure, each with file and line; - a .NET assembly gives its types and the CIL of
Actor::ApplyDamage.
Nothing is executed: the files are parsed as untrusted input.
The GIFs were recorded on Linux under Wine with Xvfb against the repository's test target and fixtures. The same flows run on Windows in CI: tests/manual_demo_e2e.py, tests/artifact_mcp_e2e.py and tests/dotnet_e2e.py.
What you can analyze
Each row lists how its validation is done. "Validated" means checked in CI against a named fixture, not "works on every program".
| Target | What Cortex returns | Needs | Validation |
|---|---|---|---|
| Running Windows processes (x86, x64) | Value and pointer scans, memory, disassembly, CFG and xrefs, software and hardware breakpoints, what writes / accesses, traces, patches, snapshots, Lua | Nothing else | GUI and MCP suites on cortex_test_target (x64 and x86). v1.0 was also tested by hand on AssaultCube 1.3 |
| PE files and native code | Headers, sections, imports and exports, functions, xrefs, CFG, annotations | Nothing else | Compared with objdump (tests/native_static_e2e.py) |
| .NET assemblies | Metadata (all 45 tables), types, members, P/Invoke, CIL with exception clauses | Nothing else | Compared with System.Reflection.Metadata (tests/dotnet_e2e.py) |
| JavaScript / TypeScript, Electron | Modules and imports, bundles, source maps, package.json, preload, webPreferences, IPC channels |
Nothing else | tests/fixtures/electron-app.asar and its expected output |
| Decompiled native code | Functions, calls, types and C by RVA, mapped to the live module when the SHA-256 matches | Ghidra 11.x and JDK 21 | PE x64 and x86, ELF x86-64 (analysis-engines CI job) |
| Decompiled C# | C# project or a single type | ILSpy ilspycmd 9.x |
The decompiled project is rebuilt and compared with the original |
| Decompiled Java | Java sources | Vineflower 1.11 and a JDK | Sources recompile; javap -p signatures match |
| Live Node.js | Scripts, sources, log breakpoints with stack and locals, console | node --inspect on 127.0.0.1 |
Real Node 22 (tests/live_e2e.py). Electron itself is not validated |
| Live Python | Log breakpoints with stack and locals | debugpy | Real debugpy 1.8 against tests/fixtures/python-live |
| Live .NET | Log breakpoints with stack and locals | netcoredbg 3.1, started by Cortex in stdio mode | Real netcoredbg 3.1.2 against tests/fixtures/dotnet-live, on Windows (stdio mode) and Linux |
| Live Java | Log breakpoints with stack and locals | A JVM started with JDWP | Real JVM against tests/fixtures/java-live |
Live providers never evaluate code. At a log breakpoint they record the stack and locals and resume at once, and a pause Cortex did not set is resumed too. Python bytecode, Unity/IL2CPP and WebAssembly are planned; see the roadmap.
How it fits together
The desktop runs in its own process and draws nothing inside the target. The runtime (cortex_core.dll) is loaded only when a feature needs to run in-process: from the desktop, only with writes allowed. External engines and debug adapters run as separate processes started from paths the operator configures (--ghidra-dir, --ilspycmd, --netcoredbg…), never linked into Cortex. See architecture and analysis providers.
Features
Memory Scanning on par with Cheat Engine:
- every value type (byte through double, string, array of bytes with wildcards);
- exact, comparative and unknown-initial scans;
- region and protection filters.
An address list with freezes, module+offset and pointer entries, groups and hotkeys, which opens and saves Cheat Engine .CT tables. Also: a hex viewer with a data inspector, a pointer scanner and pointer spider, structure dissect, structures with inference, and snapshots with diff and rewind.
Code
- Zydis-backed x86/x64 disassembly that can follow the instruction pointer.
- CFG, structured CFG and cross-references.
- PDB and DWARF symbols.
- An assembler and Auto Assembler style code injection: cave allocation, relocated instructions, jump and return, restore.
- AOB signatures.
- Reversible patches: bytes, NOP, assembly, detours, trampolines, caves.
- A speedhack for the target's clock.
Debugging
- Threads, registers and stack.
- Software and hardware breakpoints with hit counters, thread coverage and hit logs.
- Pause, continue, step into and step over.
- Per-thread traces with register snapshots.
- Two backends: an external Windows debugger or an in-process VEH backend.
Reverse engineering & evidence
- Tracked objects, last-writer detection, transition tracing.
- Experiments with automatic rollback.
- Evidence records with provenance and status, and investigations with a plan, journal and report.
- An AI Investigation workspace with Approve/Reject for each step.
- Project knowledge with revisions.
Observe & automate
- A Lua engine, compatible with Cheat Engine's, that works from outside the process.
- What accesses / writes and instruction watches.
- Page-access and allocation instrumentation, network events and screenshots.
- Input sequences with record and replay.
- A reversible journal of every action.
Diagnostics
- Crash and hang capture from outside the process.
- Minidumps and symbolized stacks.
- Hook verification and breadcrumbs.
- An evidence-based analyzer.
- A C++ SDK that mods can use to add context.
Every panel is a dockable window. Presets arrange them for the task: Home, Files and AI need no process; Memory, Debug, RE, Trace, Automation and Runtime work on one. Keyboard: Ctrl+O open a file · Ctrl+G go to · Ctrl+Shift+P command palette · Alt+←/→ history · Space freeze · F2 edit · Ctrl+B breakpoint.
AI & MCP
MCP is built into cortex.exe. Configure your client once; the server starts without a target and attaches to processes on request.
{
"mcpServers": {
"cortex": { "command": "C:/Cortex/cortex.exe", "args": ["mcp"] }
}
}
That server is read-only:
- it attaches only to a process whose runtime is already loaded (
cortex.exe inject <pid>, or the desktop); - every call that would change the target is refused.
To let the agent load the runtime and change the target, add "--allow-writes" to args. That is your decision; the agent cannot make it. "--allow-state" lets it save only its own records (notes, knowledge, journals).
- Dynamic targets:
cortex_processes,cortex_attach,cortex_targetsandcortex_detach, withtools/list_changednotifications. Several targets at once, each with its own runtime connection. - Compact by default: semantic tools run bounded steps and return the raw evidence.
--tools allexposes every primitive. - Two keys for every change:
mutation_permission=truein the call (the agent saying it means to) and write authority from outside the model. Supported changes run in rollback-aware transactions. - Engines and live debuggers: the
cortex_analysis_*andcortex_live_*tools, pluscortex_analysis_mapto map an engine's RVA onto the running module. - Visible: the desktop's AI Activity panel shows each agent session and tool call.
Known limit: the pipe token is a file the same Windows user can read. An agent that also has a shell or file access is not held back by any of this.
Details: MCP internals · Agent guide · Semantic tools · Investigations · Evidence
Safety model
| Without authority | With authority | |
|---|---|---|
| Read memory, scan, disassemble, inspect files, run engines on files | ✅ | ✅ |
| Write memory, freeze, patch, breakpoints, input, load the runtime | ❌ refused and logged to cortex_denied_mutations.jsonl |
✅ only if the call also says mutation_permission: true |
| Live debuggers | Status, scripts, sources | Log breakpoints only. No evaluation, no method calls |
| Network | Debug interfaces on 127.0.0.1 only, ports allowed with --inspect-port |
Same |
Data read from a target (memory, strings, files, logs) is treated as untrusted input, never as instructions. Cortex does not circumvent protections such as anti-cheat, DRM, obfuscation or an Electron app's disabled inspector. See SECURITY.md.
Command line
cortex.exe # desktop application
cortex.exe mcp [--pid N] [--tools all] [--allow-state | --allow-writes]
cortex.exe inspect <file> [--cil METHOD] # PE, .NET, ASAR, JS/TS, ZIP; nothing runs
cortex.exe provider list|run ... # Ghidra, ILSpy, Vineflower
cortex.exe live targets|scripts|watch ... # CDP, DAP (debugpy, netcoredbg), JDWP
cortex.exe evidence export|list # evidence records (JSON or Markdown)
cortex.exe investigation list|show|approve # investigations and their steps
cortex.exe probe --pid 1234 # read-only target and runtime health
cortex.exe diagnose --pid 1234 # crash and hang watcher
cortex.exe inject <target> # load the runtime (a change to the target)
Portable bundle
Cortex/
├─ cortex.exe desktop, CLI and MCP
└─ runtime/
├─ x64/cortex_core.dll runtime for 64-bit targets
└─ x86/cortex_core.dll runtime for 32-bit targets
x86/cortex_runtime_helper.exe
Windows cannot load a 64-bit DLL into a 32-bit process, so there is one runtime per architecture. You never pick one: Cortex reads the target's architecture. Settings live in %LOCALAPPDATA%\Cortex; an empty cortex.portable file beside cortex.exe keeps them next to the executable. External engines are not bundled: install them yourself and point Cortex at them (analysis providers, third-party notices).
Build from source
Requirements: Windows, CMake 3.21+, Ninja and a C++17 compiler (CI uses MSYS2 MinGW-w64). Dear ImGui, cpp-httplib, nlohmann/json and Zydis are fetched at pinned revisions.
cmake -S app_imgui -B build/ui -G Ninja -DCMAKE_BUILD_TYPE=Release # desktop
cmake --build build/ui --parallel
cmake -S . -B build/runtime-x64 -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF
cmake --build build/runtime-x64 --target core # runtime
See CONTRIBUTING.md for the tests to run before a pull request.
Quality gates
CI checks every change on Windows:
- Desktop builds and GUI suites: headless, native window, workspaces, attached target, multi-session, cross-bitness.
- x64 and x86 runtimes.
- MCP end-to-end tests, including a regression check that no call changes a target without
--allow-writes. - The manual workflow demo.
- Static analysis compared with
objdumpandSystem.Reflection.Metadata. - Evidence and investigations.
- The
analysis-enginesjob, with pinned Ghidra, ILSpy, Vineflower, netcoredbg, debugpy and a JDK.
Automated validation does not replace testing against real, authorized targets. Version 1.0 was also exercised by hand on AssaultCube 1.3.0.2.
FAQ
No. cortex.exe inspect, the Artifacts workspace and the cortex_artifact_* / cortex_analysis_* MCP tools work on files alone. Attach only when you want live memory, the debugger or a live provider.
No. Built-in parsers cover PE, native code, .NET metadata and CIL, ASAR, JS/TS and ZIP. Ghidra, ILSpy, Vineflower and the debug adapters are optional. You install them, and Cortex runs them as separate processes from the paths you give it.
No. Cortex has no telemetry or update check and uploads nothing. External engines run locally, and debug interfaces are reached only on 127.0.0.1. Your MCP client decides what it sends to its own model.
Only if you started the server with --allow-writes, and then only for calls that also say mutation_permission: true. Refused attempts are logged. mutation_permission is the agent's intent, not your consent: the authority is the flag you set.
It is not designed to, and it will not try to get around them. Use offline software you own, test builds, or the repository's fixtures.
No. It provides bounded, supervised experiments (a launcher limited to profiles the operator configures, a test runner and reports), not universal autonomous gameplay.
cortex MCP 질문
AI 에이전트가 수행하는 작업을 어떻게 모니터링할 수 있나요?
Cortex 데스크톱 애플리케이션을 열면 AI Activity 패널을 통해 에이전트가 호출하는 모든 도구를 실시간으로 확인할 수 있습니다.