arx-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arx-mcprun this arx code: println('hello')"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
nyxilum-mcp
An MCP server that lets an AI assistant (Claude, Cursor, etc.) directly
compile/run/lint/format NyxilumLang (.nx) code via
NyxilumNode — without manual
dotnet run/copy-paste into a terminal.
Why a separate repo instead of part of NyxilumLang
This project's node_modules shouldn't end up in NyxilumLang's dotnet build or
publish/. It lives alongside it, as a sibling project.
Related MCP server: Arduino MCP Server (Simple)
Installation
git clone https://github.com/Faneraiy14/NyxilumMcp.git
cd NyxilumMcp
npm installNeeds a built NyxilumNode nearby (../NyxilumLang by default,
dotnet build src/NyxilumLang there) — or set the path explicitly:
# Linux/Mac
export NX_NODE_PATH=/path/to/NyxilumLang # .exe on Windows, .dll — then runs via `dotnet`
# or
export NX_ECOSYSTEM_ROOT=/path/to/NyxilumLang# Windows
$env:NX_NODE_PATH = "C:\path\to\NyxilumLang.exe"
# or
$env:NX_ECOSYSTEM_ROOT = "C:\path\to\NyxilumLang"Connecting (Claude Desktop / Claude Code)
{
"mcpServers": {
"nyxilum": {
"command": "node",
"args": ["/path/to/NyxilumMcp/src/server.js"]
}
}
}Tools
Tool | What it does |
| Compiles and runs code in a sandbox (separate process, timeout, GC-allocation limit) |
| Lexer+parser only — checks syntax WITHOUT running the code (cheaper and safer than |
| Style warnings (line length, empty blocks) — not a syntax check, always exitCode=0 |
| Formats code |
| Version of the NyxilumNode found — doubles as a health check |
| GUIDE.md in full, or a specific section (by |
|
|
| NyxilumLang's |
| Starts a long-lived sandboxed REPL session — |
| Runs code in an existing REPL session |
| Ends a REPL session and cleans up its temp folder |
Execution security (nyxilum_run)
Code NEVER ends up in the shell/argv as text — it's always written to its own temp file, whose path is passed as a normal process argument (
execFile, withoutshell: true).A process
timeout(10s by default, 60s max) is the only real protection againstwhile (true) {}with no allocations:NX_GC_MAX_OBJECTSonly counts NyxilumLang allocations (arrays/structs/maps), not loop iterations by themselves.envis an allowlist (PATH,SystemRoot,TEMP,DOTNET_ROOT, etc.), not the wholeprocess.envof this server process.NX_SANDBOX=1(fixed, doesn't depend on the tool's input arguments) — file I/O is restricted to the run's temp folder, and network (httpGet/httpServer/wsConnect, etc.) and reading environment variables (osEnv) are completely forbidden. Requires a NyxilumNode build withNX_SANDBOXsupport (see the NyxilumLang README); with an older binary the flag is simply ignored.Output (
stdout/stderr) is truncated to 32 KB per stream — a loop that prints millions of lines won't fill up the response context.The temp folder is always removed in a
finally, even on timeout.
RunFile in Nx.cs writes Runtime Error:/Parse Error: to stdout
(not stderr) and exits with exitCode=1 — that's NyxilumNode's own
behavior, not this server's; every tool explicitly notes this in its
description.
nyxilum_repl_* — persistent state, same sandbox
nyxilum_run starts a brand-new process every call — no memory between
calls. The nyxilum_repl_* tools instead keep one nx REPL process alive
across multiple nyxilum_repl_eval calls, so a var/func declared in
one call is still visible in the next — useful for stepping through an
exploration ("try this, look at the result, adjust") instead of
re-writing the whole accumulated script every time. Same sandbox as
nyxilum_run (NX_SANDBOX=1, env allowlist, own temp working directory
per session, output truncated to 32 KB).
Two things that follow directly from the REPL being a real, long-lived process reading stdin line by line, not a one-shot file:
Newlines in
codeare flattened to spaces before being sent. The REPL reads oneConsole.ReadLine()per statement — afuncbody split across lines breaks it (Error: expected '}' on line 1, verified live) the moment a\nis written to its stdin mid-declaration. Braces don't care about line breaks, so multi-linefunc {...}/struct {...}still work fine once flattened — but//line comments do NOT survive flattening (the comment would silently eat everything after it on the now-single line), so avoid//inside multi-linecodepassed here.A timed-out
nyxilum_repl_evalkills the session. There's no safe way to keep waiting on a process that might be stuck in an infinite loop indefinitely, so a call that doesn't respond withintimeout_msterminates the session immediately (sessionKilled: truein the response) — start a new one withnyxilum_repl_start.
Reading the response reliably (not just "wait a bit and read stdout")
needed its own protocol: right after the caller's code, the session
writes a second line — print() of a random one-time marker — and reads
stdout until that marker shows up in the buffer. Everything before it,
minus the REPL's own "> " prompt (stripped positionally, as a fixed
2-byte suffix right before the marker — not a blind find-and-replace, so
legitimate output containing "> " itself, e.g. print("a > b"), comes
through untouched) is the real output of the caller's code.
Sessions are capped at 5 concurrent and auto-close after 10 minutes idle
— always call nyxilum_repl_stop when done with one rather than relying
on the idle timeout.
nyxilum_dev_build/nyxilum_dev_test — a different trust model
These two are NOT sandboxed (no NX_SANDBOX, no env allowlist, no
temp file with code): they run dotnet build/tests/run_all.sh
on the NyxilumLang repo itself, not on arbitrary .nx code from the
call. The caller passes no text that could end up in the command —
only optional configuration/timeout_ms. Meant for developing
the language itself (changing the VM's/compiler's C# code), not for
checking untrusted code — that's what nyxilum_run/nyxilum_check are for.
Tests
npm test32 checks: smoke.mjs calls the handlers directly (successful run,
unhandled throw, infinite-loop timeout, gc_max_objects,
large-output truncation, resilience to shell metacharacters in the code,
nyxilum_check (passes/catches a syntax error/does NOT run the code),
no temp-directory leaks), repl.mjs (state persists across calls within
one session, multi-line func flattening, legitimate "> " output
surviving intact, an error not killing the session, two sessions not
seeing each other's variables, an infinite loop's timeout killing the
session cleanly, no temp-directory leaks), transport.mjs — the same
things but through the REAL MCP protocol (StdioClientTransport +
Client), not just direct function calls.
Updating
No separate build/publish step for the MCP server itself — claude mcp add
points straight at this checkout's src/server.js, so updating it is just
git pull && npm install, taking effect on the next new Claude Code
session. Separately, if NyxilumLang itself has moved on, rebuild the
NyxilumNode binary this server talks to (dotnet build src/NyxilumLang in
the NyxilumLang checkout) — the two update independently.
License
MIT — Faneraiy14.
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Deploy and manage Jade Hosting projects from AI clients. Jade account and OAuth required.
1- mcp-serverOAuthai.cdbx
Build Apps and run code in 30 languages — sandboxed, with persistent sessions for agent loops.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to compile, execute, and check Almide code for syntax or compilation errors. It provides tools for generating ASTs and accessing language grammar resources.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Arduino boards for compiling, uploading sketches, and serial communication.6MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to compile, upload, and monitor Arduino boards via natural language, with electrical safety checks and dependency management.2189 npm19MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage project analysis, code metrics, documentation, Git operations, code quality, and file organization through natural language commands.10 npm2MIT