NotiCode
You can perform file operations, run shell commands, and get system info on the host machine.
Read files (full or line range) via
fs_read.Create or overwrite files via
fs_write.Edit files by exact substring replacement via
fs_edit.List files and directories up to a given depth via
fs_list.Find files by glob and grep file contents via
fs_search.Execute arbitrary shell commands with optional cwd and timeout via
shell_exec.Get OS, CPU, memory, user, and workspace info via
sys_info.
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., "@NotiCode create a new file named 'test.py' that prints '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.
NotiCode
The blue, MCP-native AI agent for your whole machine.
Runs as an MCP server so Claude (or any MCP client) can plug in, chat, and let it edit files and drive your machine. DM it on Telegram. Or run everything at once and control one shared agent from your MCP client and your phone.
What is this?
NotiCode is an open AI agent in the spirit of OpenCode and Claude Code, with one twist: it speaks MCP first.
It has hands. It can read/write files, run shell commands, inspect your system, drive a headless browser, take screenshots and webcam photos, control your Home Assistant smart home, schedule recurring jobs, and message you on Telegram (text and photos). Connect it to an MCP client, talk to it in your terminal, or DM the Telegram bot, all backed by the same toolset.
It is blue. Not orange. On purpose.
Related MCP server: vulcan-file-ops
The one-command setup: all
node dist/index.js all
# or: npm run allThis boots everything in a single process:
the HTTP MCP server (prints a URL you paste into any MCP client),
the Telegram bot (DM it from your phone),
the scheduler (cron jobs that notify you when done).
They all share the same tools and workspace. So you can text the bot "измени мои файлы" / "edit my files and run the tests", or type the same thing into an MCP client, and the same agent does the work on the same machine. Needs ANTHROPIC_API_KEY (for the bot) and TELEGRAM_BOT_TOKEN (to enable Telegram); the HTTP server and scheduler run even without them.
Do I need an API key?
noticode mcp/noticode serve-- no key. NotiCode is just the hands; the MCP client you connect brings the brain.noticode chat/noticode telegram/noticode all-- needsANTHROPIC_API_KEY, because here NotiCode calls the model itself.
Modes
Command | What it does | Needs key? |
| HTTP MCP + Telegram bot + scheduler, one process, shared agent. | Yes (for bot) |
| MCP server over stdio (connect Claude Desktop). | No |
| MCP server over HTTP, prints a connectable URL. | No |
| Interactive terminal agent. | Yes |
| Telegram bot only. | Yes |
Quick start
git clone https://github.com/Antropov31/noticode-mcp.git
cd noticode-mcp
npm install
npx playwright install chromium # only if you want the browser_* tools
npm run build
cp .env.example .env # fill in keys you want to useThen pick a mode, e.g. the full stack:
npm run allConnect Claude Desktop (stdio)
Add to claude_desktop_config.json:
{
"mcpServers": {
"noticode": {
"command": "node",
"args": ["/absolute/path/to/noticode-mcp/dist/index.js", "mcp"],
"env": { "NOTICODE_WORKSPACE": "/absolute/path/to/your/project" }
}
}
}Connect by URL (HTTP)
npm run serve (or all) prints something like http://127.0.0.1:4319/mcp. Paste it into any MCP client that supports the HTTP (Streamable HTTP) transport.
Telegram
Create a bot with @BotFather, put the token in
TELEGRAM_BOT_TOKEN.(Recommended) Get your chat ID from @userinfobot and set
TELEGRAM_CHAT_IDto lock the bot to just you.npm run telegram(ornpm run all). Text the bot./startand/resetare supported.
Tools
Tool | What it does |
| Read, create/overwrite, exact-match edit files. |
| List dirs; glob + grep file contents. |
| Run any shell command on the host. |
| OS, CPU, memory, user, workspace. |
| Message the user on Telegram (text/photo), read incoming messages. |
| Send a task/event notification (via Telegram, or logged). |
| List Home Assistant entities; control devices and scenes. |
| Drive a headless Playwright browser. |
| Screenshot the desktop / snap a webcam photo (saved as PNG). |
| Cron jobs that run a command, an agent prompt, or a reminder. |
Image tools save a PNG and return its path; send it on with tg_send_photo. All tools are defined once in src/tools/ and shared by every mode.
Scheduler
schedule_add takes a cron expression and a job type:
shell-- run a command; you get the output when it finishes.prompt-- run an agent instruction (only inall/chatwith an API key).notify-- a plain reminder.
Results are pushed to you via Telegram when configured. Example: "every weekday at 9am, pull the repo and run tests" becomes a shell job on 0 9 * * 1-5.
Configuration
Env var | Default | Purpose |
| -- | Required for chat / telegram / all. |
|
| Root directory the agent operates in. |
|
| HTTP server bind. |
| -- | Optional bearer token for the HTTP endpoint. |
| -- | Host-header allowlist for HTTP mode (DNS-rebinding protection). Empty = allow all. |
| -- | Origin allowlist for HTTP mode (browser clients). Requests without |
|
| Max concurrent HTTP MCP sessions; new handshakes get |
|
| Idle HTTP sessions older than this are closed and evicted. |
|
| Model for chat/telegram/all. |
|
|
|
|
|
|
|
| Max chars returned per tool call. |
| -- | Bot token from @BotFather. |
| -- | Lock the bot to one chat; default notify target. |
| -- | Base URL of your Home Assistant. |
| -- | Long-lived access token for Home Assistant. |
Security
NotiCode runs arbitrary commands, edits files, drives a browser, sees your screen and camera, and can control your home. That power is the point and the risk. Scope NOTICODE_WORKSPACE tightly, flip NOTICODE_ALLOW_SHELL / NOTICODE_ALLOW_WRITE to false when you only need read access, keep the HTTP bind on 127.0.0.1 and set NOTICODE_TOKEN before tunneling, and always set TELEGRAM_CHAT_ID so a stranger who finds your bot can't drive your machine.
When you bind HTTP beyond localhost, also set NOTICODE_ALLOWED_HOSTS (Host-header allowlist against DNS rebinding) and NOTICODE_ALLOWED_ORIGINS (which browser origins may connect). NOTICODE_MAX_SESSIONS / NOTICODE_SESSION_TTL_MS bound resource usage per session.
Trust model: sandboxed files, privileged shell
fs_read/fs_write/fs_edit/fs_list/fs_searchare sandboxed toNOTICODE_WORKSPACE(including symlink/junction escape checks). Paths outside the workspace are rejected with aPath must stay inside the workspaceerror — that rejection is the sandbox working, not a bug.shell_execis deliberately privileged: it starts in the workspace but, like a normal user terminal, cancdanywhere and run anything (including absolute paths andgitcommands outside the workspace). Treat shell access as full local-user access and gate it withNOTICODE_ALLOW_SHELL=falsewhen you need a locked-down agent.
Project structure
src/
index.ts CLI entry (all | mcp | serve | chat | telegram | help)
config.ts Env-based configuration
theme.ts Blue terminal palette + banner
runner/
all.ts Unified mode: HTTP MCP + Telegram bot + scheduler
mcp/
server.ts buildMcpServer + stdio entry point
http.ts Streamable HTTP entry point (prints a URL)
agent/
core.ts Shared agent loop (model + tool-use)
agent.ts Interactive terminal chat
telegram-bot.ts Telegram bot bridge to the agent loop
scheduler/
scheduler.ts Cron scheduler runtime
tools/
index.ts Tool registry
types.ts Shared tool + context types
filesystem.ts fs_read / fs_write / fs_edit / fs_list / fs_search
shell.ts shell_exec
system.ts sys_info
telegram.ts tg_send / tg_send_photo / tg_read
notify.ts notify
home-assistant.ts ha_states / ha_call_service
browser.ts browser_navigate / click / type / eval / screenshot
capture.ts screen_capture / webcam_capture
scheduler.ts schedule_add / schedule_list / schedule_cancelRoadmap
HTTP / Streamable HTTP transport in addition to stdio
Telegram bot bridge
Unified
allmodeBrowser automation, screen/webcam capture, Home Assistant, scheduler
Streaming responses in chat mode
Pluggable LLM providers (OpenAI, local models)
Per-tool permission prompts
Git-aware diffs before writes
License
MIT © Antropov31
Available Tools
7 toolsfs_editC
Replace an exact substring in a file. old_string must match exactly once unless replace_all is true.
Inputs: path (required), new_string (required), old_string (required), replace_all.
fs_listA
List files and directories under a path, up to a given depth.
Inputs: path, depth.
fs_readA
Read a UTF-8 text file. Returns the full content, or a line range when start_line/end_line are given.
Inputs: path (required), end_line, start_line.
fs_searchA
Find files by glob pattern. If query is set, also returns matching lines inside those files (grep-style).
Inputs: glob, query.
fs_writeA
Create or overwrite a file with the given content. Parent directories are created automatically.
Inputs: path (required), content (required).
shell_execA
Run a shell command on the host machine and return combined stdout/stderr. Full system access.
Inputs: command (required), cwd, timeout_ms.
sys_infoA
Return host system information: OS, CPU, memory, user, and the active workspace.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: file operations (list, read, write, edit, search) are well-separated, while shell_exec handles arbitrary commands and sys_info provides system details. No overlap or ambiguity.
Tool names follow a clear prefix convention: 'fs_' for file operations, 'shell_' for shell, 'sys_' for system. The naming is consistent and predictable, making it easy for an agent to infer functionality.
With 7 tools, the server is well-scoped for file and system utilities. Each tool earns its place without being overwhelming or sparse.
The file operations cover list, read, write, edit, and search, but a delete operation is missing. While shell_exec can compensate, the dedicated file surface has a minor gap.
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP (Model Context Protocol) server for file system operations, providing Claude and other AI assistants with access to local files and directories.2MIT
- AlicenseAqualityBmaintenanceMCP server that gives Claude Desktop and other desktop MCP clients filesystem powers—read, write, edit, and manage files like AI coding assistants.1767 npm9MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that proxies file and shell tools (Read, Write, Edit, Bash, etc.) to a remote Linux host over SSH, enabling MCP clients like Claude Code to operate on remote codebases.1MIT
- FlicenseNot gradedqualityDmaintenanceMCP server providing filesystem operations, shell execution, and web search capabilities.-