Free Codin Agent
Enables video rendering and media helper capabilities through FFmpeg.
Provides Git integration for version control and project inspection, enabling agents to manage repositories and inspect history.
Provides headless language-server operations for Python projects.
Provides headless language-server operations for TypeScript projects.
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., "@Free Codin Agent run the test suite and fix the first failing test"
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.
Free Codin Agent 4 Ever
A client-agnostic Model Context Protocol (MCP) server that gives an AI coding host controlled access to local developer capabilities: files, shell, Git, LSP, browser automation, Windows UI automation, VS Code state, long-running jobs, checkpoints, and resource-aware execution.
This repository is intentionally provider-neutral. It does not require or dispatch work to any hosted model vendor.
What this public repository contains
Standard MCP over stdio for local MCP clients.
Standard MCP over Streamable HTTP at
/mcp.Legacy MCP HTTP+SSE compatibility at
/sse+/messages.Transactional file edits with checkpoints and optimistic SHA-256 preconditions.
Shell, PTY, background processes, durable jobs, Git, and project inspection.
Headless language-server operations.
Isolated Playwright browser automation.
Optional companion Chrome extension for the user's real browser.
Optional companion VS Code extension for editor diagnostics/references/debug state.
Windows UI automation and media helpers.
Filesystem root allowlisting and resource admission controls.
Related MCP server: AI Knowledge Center MCP
Arena / LM Arena
The server itself is plain MCP and is not tied to a specific chat product. Use it with an MCP-capable host or with an Arena deployment/product surface that accepts standard MCP servers. No private Arena API, browser cookie, session token, or reverse-engineered endpoint is included here.
Fastest installation on Windows
Option A — download and double-click
Download the repository as a ZIP and extract it.
Double-click
install.cmd.Enter the folder that the coding agent is allowed to access.
Copy the MCP configuration printed by the installer into your MCP client.
If Node.js 20+ is missing and Windows Package Manager is available, the installer offers to install Node.js LTS automatically. The agent itself is installed globally, so the extracted ZIP can be deleted afterwards.
After installation the MCP client does not need a repository path. It launches:
free-codin-agent stdioThe generated MCP configuration is:
{
"mcpServers": {
"free-codin-agent": {
"command": "free-codin-agent",
"args": ["stdio"]
}
}
}Option B — npm package
The package is structured for global npm installation:
npm install -g free-codin-agent-4-ever
free-codin-agent setupOnce the package is published to the npm registry, these two commands are enough.
Useful commands:
free-codin-agent start MCP over stdio
free-codin-agent setup choose/configure the allowed workspace
free-codin-agent doctor verify the local installation
free-codin-agent print-config
free-codin-agent http start the local HTTP transportConfiguration and runtime state are stored in the current user's standard application-data directories. They are never stored in this public repository.
Do I need a domain?
No for local MCP. A stdio-capable MCP client starts free-codin-agent
directly on the same machine, so there is no website, public IP, DNS record,
domain, TLS certificate, or tunnel involved.
Yes, an HTTPS-reachable endpoint is needed when the MCP host runs somewhere else and must connect back to the user's computer. That endpoint can be a per-user tunnel URL, a domain owned by that user, or a secure relay service. Every installation should have its own authenticated endpoint; users should not share one unrestricted public bridge.
A marketing/documentation website is optional and is unrelated to the MCP transport itself.
Requirements
Node.js 20 or newer.
Windows for the full Windows automation feature set.
Optional: Chrome for browser automation.
Optional: FFmpeg for video rendering.
Optional: Go / TypeScript / Python language servers depending on the projects you inspect.
Manual developer install
npm install
Copy-Item .env.example .envFor normal end users, prefer install.cmd / free-codin-agent setup.
The repository-local .env workflow is retained only for development and advanced deployments.
Start over stdio
This is the preferred local MCP transport:
npm startExample generic MCP client configuration for a source checkout:
{
"mcpServers": {
"free-codin-agent-4-ever": {
"command": "node",
"args": ["<ABSOLUTE_PATH_TO_REPOSITORY>/stdio.js"]
}
}
}Replace <ABSOLUTE_PATH_TO_REPOSITORY> with the location where you cloned
the repository. No machine path, username, drive letter, workspace, or account
is built into the project.
Start over HTTP
npm run start:httpDefault endpoint:
http://127.0.0.1:3000/mcpWhen MCP_API_KEY is set, clients must send:
Authorization: Bearer <MCP_API_KEY>Without a key, HTTP access is accepted only from a direct loopback connection. Requests arriving through a proxy/tunnel are rejected.
Security model
This server can edit files and execute commands. Treat it like local developer access.
Recommended public defaults:
Keep
MCP_HOST=127.0.0.1unless you intentionally expose the HTTP server.Set
MCP_ALLOWED_ROOTSto the repositories the agent may touch.Set a strong
MCP_API_KEYbefore any non-loopback exposure.Do not commit
.env, generated logs, browser profiles, screenshots, clips, checkpoints, memory, or job state.Review destructive tool calls in the MCP client.
Use the Chrome pairing token only with the unpacked extension instance you control.
Configuration
See .env.example. Important settings:
Variable | Purpose |
| Known repositories, separated by comma or semicolon |
| Default directory for relative paths |
| Optional filesystem sandbox |
| Bearer token for HTTP transport |
| Browser origins allowed to call HTTP endpoints |
| Enable/disable the companion Chrome bridge |
| Chrome extension pairing secret |
| Optional extension identity pin |
| Local VS Code companion endpoint |
Chrome companion extension
Open Chrome's extension management page.
Enable Developer mode.
Load
chrome-extensionas an unpacked extension.Set
CHROME_BRIDGE_TOKENin.env.Open the extension popup and save the same token and port.
Optionally set
CHROME_EXTENSION_IDafter Chrome assigns the unpacked extension an ID.
The extension has no hardcoded identity key in this repository.
VS Code companion extension
The source is under vscode-extension. It exposes only a loopback HTTP helper for diagnostics, references, definitions, open files, and debug state.
Its configuration key is:
freeCodinAgent.portDefault port: 3005.
Verification
npm run check
npm run privacy
npm run preflight
npm testPrivacy / publication hygiene
The public source tree intentionally excludes:
local
.envfiles and API keys;tunnel URLs and connector URLs;
browser profiles, screenshots, clips, logs, checkpoints, job/task state, and local memory;
prior conversation archives;
fixed Chrome extension identity keys;
machine-specific repository paths;
model-provider orchestration code and account-specific integrations.
Run your own secret scanner before publishing any later local changes.
License
ISC. See LICENSE.
Available Tools
114 toolsapply_patchADestructive
Apply a multi-file patch atomically (nothing is written unless every hunk applies). Preferred way to change code. Format: *** Begin Patch *** Update File: src/app.ts @@ function main() { (optional anchor line to jump near the change) context line (space prefix) -removed line +added line *** Add File: src/new.ts +file content line *** Delete File: src/old.ts *** Update File: a.ts *** Move to: b.ts *** End Patch Include ~3 unchanged context lines around each change. The result reports compiler/linter problems in the changed files and a checkpoint id for undo.
Inputs: patch (required), cwd, check.
batchBDestructive
Run several tool calls in one request. Parallel mode is allowed only when every called tool is read-only.
Inputs: calls (required), parallel, stopOnError, failOnAnyError.
browser_clickBDestructive
Click an element by ref (preferred), selector or text. Returns the updated snapshot.
Inputs: ref, text, button, selector, +3 more.
browser_closeADestructive
Close the Playwright browser (the persistent profile stays on disk).
Inputs: no named parameters.
browser_consoleCRead-onlyIdempotent
Console messages, page errors, failed requests and dialogs captured from the browser.
Inputs: clear, limit, onlyErrors.
browser_dialogBDestructive
Inspect or answer a JavaScript dialog (alert/confirm/prompt) in the Playwright browser. Dialogs are never accepted automatically.
Inputs: action, promptText.
browser_evaluateBDestructive
Run JavaScript in the page. Pass an expression ("document.title") or a function body using return.
Inputs: script (required).
browser_get_textCRead-onlyIdempotent
Visible text of the page or of an element (CSS selector).
Inputs: maxChars, selector.
browser_hoverCDestructive
Hover over an element.
Inputs: ref, text, selector.
browser_press_keyBDestructive
Press a key or chord on the page, e.g. "Enter", "Escape", "Control+A", "ArrowDown".
Inputs: key (required), snapshot.
browser_record_startADestructive
Start recording a video of a browser session. Opens a dedicated recording tab (with your profile logins); every browser_* action afterwards is filmed until browser_record_stop.
Inputs: fps, url, name, width, +5 more.
browser_record_stopBDestructive
Stop the recording and save the clip (mp4 via ffmpeg). Returns the file path.
Inputs: discard, trimStart.
browser_resizeCDestructive
Set the viewport size.
Inputs: width (required), height (required).
browser_screenshotARead-onlyIdempotent
Screenshot of the page (or one element). The image is returned so you can see it, and saved to disk.
Inputs: ref, text, fullPage, selector.
browser_scrollCDestructive
Scroll the page by deltaY/deltaX pixels, or scroll an element (ref/selector/text) into view.
Inputs: ref, text, deltaX, deltaY, +1 more.
browser_select_optionCDestructive
Select option(s) in a .
Inputs: ref, text, value, values, +1 more.
browser_snapshotARead-onlyIdempotent
Accessibility snapshot of the current page with [ref=eN] handles. Use it before clicking/typing.
Inputs: no named parameters.
browser_tabsCDestructive
List, open (new), select or close tabs by index.
Inputs: url, index, action.
browser_typeADestructive
Type into an input/textarea/contenteditable. Replaces its value unless slowly: true (types key by key). submit: true presses Enter.
Inputs: text (required), ref, slowly, submit, +1 more.
browser_upload_fileCDestructive
Upload local file(s) through a file input or an upload button (ref/selector/text).
Inputs: ref, path, text, paths, +1 more.
browser_wait_forBDestructive
Wait for a selector or text to appear (state visible/hidden/attached), or just wait timeoutMs.
Inputs: text, state, selector, timeoutMs.
capability_callCDestructive
Fallback dispatcher for a capability present on the live server but missing from a cached client catalog.
Inputs: tool (required), args.
capability_listBRead-onlyIdempotent
List the live MCP capability catalog. Use prefix to filter tool names.
Inputs: prefix, includeDescriptions.
check_filesBRead-onlyIdempotent
Run the relevant compilers/linters (tsc, eslint, node --check, go vet, gofmt, py_compile, ruff, JSON) on specific files and report problems.
Inputs: path, paths.
checkpoint_listARead-onlyIdempotent
List recent checkpoints (one per file-changing tool call) with the files each one touched.
Inputs: limit.
checkpoint_rewindADestructive
Undo: restore files to their state before the given checkpoint (default: the latest), undoing it and every later checkpoint.
Inputs: id.
chrome_call_site_toolADestructive
Invoke a tool the web page itself declares (window.mcp / window.mcp_tools / meta[name=webmcp-tool]). Take a chrome_snapshot first to see the catalog.
Inputs: toolName (required), args, tabId, frameId, +1 more.
chrome_clickADestructive
Click an element by its [#N] ref using a real (trusted) mouse click via the Chrome debugger; falls back to a DOM click if the debugger cannot attach.
Inputs: ref (required), tabId, frameId, snapshotId, +1 more.
chrome_close_tabCDestructive
Close a tab.
Inputs: tabId (required).
chrome_consoleCRead-onlyIdempotent
Console messages and exceptions captured from a tab since the debugger attached to it.
Inputs: clear, tabId.
chrome_dialogADestructive
Inspect or answer a JavaScript dialog (alert/confirm/prompt/beforeunload) that is blocking a tab. Dialogs are never accepted automatically: read the message, then accept or dismiss (promptText for prompt()).
Inputs: tabId, action, promptText.
chrome_downloadsBRead-onlyIdempotent
Recent Chrome downloads (file path, state, size, source URL, referrer).
Inputs: limit, since.
chrome_evaluateBDestructive
Run JavaScript in a tab's page context (via the debugger). Pass an expression; the JSON-serializable result is returned.
Inputs: expression (required), tabId.
chrome_extension_reloadADestructive
Reload the Free Codin Agent Chrome extension from disk (after it was updated) and report the new version.
Inputs: no named parameters.
chrome_get_textBRead-onlyIdempotent
Visible text of a tab (document.body.innerText, truncated).
Inputs: tabId, maxChars.
chrome_list_tabsARead-onlyIdempotent
List all tabs in the user's real Chrome.
Inputs: no named parameters.
chrome_new_tabCDestructive
Open a new tab in the real Chrome.
Inputs: url, active.
chrome_pairing_setupADestructive
Securely configure or rotate the Chrome bridge pairing token in both the connected extension and .env. The secret is never returned. Restart the MCP worker afterwards to enforce it.
Inputs: rotate.
chrome_press_keyADestructive
Press a key or chord (e.g. "Enter", "Tab", "Escape", "Control+a") as a trusted key event in the tab.
Inputs: key (required), ref, tabId, frameId, +1 more.
chrome_screenshotARead-onlyIdempotent
Screenshot of a tab in the real Chrome (visible viewport). The image is returned so you can see it.
Inputs: tabId.
chrome_scrollBDestructive
Scroll the inspected tab by y pixels (negative scrolls up).
Inputs: y, tabId, frameId, snapshotId.
chrome_snapshotARead-onlyIdempotent
Semantic snapshot of a tab: interactive elements with [#N] refs, plus page-declared site tools. Take one before clicking or typing.
Inputs: tabId, frameId, snapshotId, maxElements.
chrome_statusBRead-onlyIdempotent
Connection status of the Chrome extension bridge (the user's real, logged-in Chrome).
Inputs: no named parameters.
chrome_switch_tabBDestructive
Activate a tab and focus its window.
Inputs: tabId (required).
chrome_typeADestructive
Focus an element by ref and type text with trusted input (replaces the current value unless append: true). submit: true presses Enter afterwards.
Inputs: ref (required), text (required), tabId, append, +3 more.
copy_pathCDestructive
Copy a file or directory.
Inputs: source (required), destination (required), overwrite, allowPartialUndo.
delete_pathADestructive
Delete a file, or a directory when recursive is true. Undoable with checkpoint_rewind.
Inputs: path (required), recursive, allowPartialUndo.
edit_fileADestructive
Replace exact text in one file. Either oldText/newText, or edits: [{oldText,newText,replaceAll}] applied atomically in order. oldText must match exactly once unless replaceAll. Reports diagnostics and a checkpoint id.
Inputs: path (required), check, edits, newText, +3 more.
fetch_urlARead-onlyIdempotent
Fetch a URL (follows redirects) and return readable text. raw: true returns the unprocessed body (useful for JSON/APIs).
Inputs: url (required), raw, maxChars.
file_infoBRead-onlyIdempotent
Check whether a path exists and get its type, size and modification time.
Inputs: path (required).
find_filesBRead-onlyIdempotent
Find files by glob pattern, e.g. "**/*.test.js" or "package.json".
Inputs: pattern (required), path, maxResults.
find_symbolBRead-onlyIdempotent
Find where a function/class/type/method is defined (name or Container.name) and where it is used (whole-word references).
Inputs: name (required), kind, path, exact, +2 more.
get_system_infoARead-onlyIdempotent
Host info, configured workspaces, default workspace and available integrations. Call this first in a new conversation.
Inputs: no named parameters.
git_commitBDestructive
Stage files (all changes by default) and create a commit.
Inputs: message (required), path, files.
git_diffARead-onlyIdempotent
Full unified diff of the working tree (or staged changes, or against a ref), optionally for one file.
Inputs: ref, file, path, staged.
git_logCRead-onlyIdempotent
Recent commit history.
Inputs: path, limit.
git_statusBRead-onlyIdempotent
git status (short) plus diff stat against HEAD.
Inputs: path.
job_cancelBDestructive
Cancel a running job (kills its process tree).
Inputs: id (required).
job_listBRead-onlyIdempotent
Recent background jobs with status.
Inputs: no named parameters.
job_outputBRead-onlyIdempotent
Read a job log: tail (default 200 lines), a line range (fromLine/lines), or grep (regex with context lines).
Inputs: id (required), grep, tail, lines, +2 more.
job_startADestructive
Run a long command (test suite, build, install, benchmark) as a background job. Waits up to waitMs (default 25s): if it finishes you get a smart summary (pass/fail counts, failing tests with context, output tail) instead of the raw log; otherwise poll job_status.
Inputs: command (required), cwd, title, waitMs, +3 more.
job_statusARead-onlyIdempotent
Status of a job; waitMs (≤50s) waits for it to finish. Finished jobs return the failure summary.
Inputs: id (required), waitMs.
kill_processBDestructive
Kill an OS process tree by PID.
Inputs: pid (required).
list_directoryBRead-onlyIdempotent
Tree listing of a directory (skips node_modules, .git, build outputs unless includeIgnored).
Inputs: path, depth, includeIgnored.
list_processesARead-onlyIdempotent
List OS processes (optionally filtered by name substring).
Inputs: filter.
list_workspacesARead-onlyIdempotent
List configured project workspaces with git branch and number of changed files.
Inputs: no named parameters.
lsp_callsBRead-onlyIdempotent
Call hierarchy of the function at file:line: incoming (who calls it) or outgoing (what it calls).
Inputs: file (required), line (required), symbol, character, +1 more.
lsp_code_actionsARead-onlyIdempotent
List language-server code actions/quick fixes/refactors for a source range without applying them.
Inputs: file (required), line (required), only, limit, +4 more.
lsp_definitionBRead-onlyIdempotent
Go to definition (kind: definition | typeDefinition | implementation) of the symbol at file:line (give character or symbol name).
Inputs: file (required), line (required), kind, symbol, +1 more.
lsp_diagnosticsARead-onlyIdempotent
Compiler/type-checker diagnostics from the real language server (gopls, typescript-language-server, pyright) for files or a directory — no VS Code needed. all: true also returns diagnostics the server reported for other files of the project.
Inputs: all, path, paths, waitMs.
lsp_format_previewBRead-onlyIdempotent
Preview language-server formatting edits for a file without applying them.
Inputs: file (required), limit, tabSize, insertSpaces.
lsp_hoverBRead-onlyIdempotent
Type signature and documentation of the symbol at file:line.
Inputs: file (required), line (required), symbol, character.
lsp_referencesARead-onlyIdempotent
All references to the symbol at file:line, resolved by the language server (exact, not text search).
Inputs: file (required), line (required), limit, symbol, +2 more.
lsp_rename_previewARead-onlyIdempotent
Preview the exact workspace edits a semantic rename would make. Does not write files; apply reviewed changes through apply_patch/edit_file.
Inputs: file (required), line (required), newName (required), limit, +2 more.
lsp_statusARead-onlyIdempotent
Which language servers are installed and running (language, project root, pid).
Inputs: no named parameters.
lsp_symbolsBRead-onlyIdempotent
Symbols: of one file (file), or matching a query across the project (query + path).
Inputs: file, path, limit, query.
move_pathCDestructive
Move or rename a file or directory.
Inputs: source (required), destination (required), overwrite, allowPartialUndo.
outlineARead-onlyIdempotent
All symbols (functions, classes, methods, types) of a file with line numbers, so you can read_file just the part you need. A directory gives a repo map of it.
Inputs: path (required).
process_inputADestructive
Write text to stdin of a process started with process_start (REPLs, prompts, interactive CLIs). close: true writes the data and closes stdin.
Inputs: id (required), data (required), close.
process_listARead-onlyIdempotent
List background processes started by this bridge.
Inputs: no named parameters.
process_outputARead-onlyIdempotent
Read new output from a background process since the last read (or all buffered output with all: true).
Inputs: id (required), all.
process_startADestructive
Start a long-running background command (dev server, watcher, long build). Returns an id; read logs with process_output, stop with process_stop.
Inputs: command (required), cwd, name, waitMs, +1 more.
process_stopADestructive
Stop a background process started with process_start (kills its whole process tree).
Inputs: id (required).
project_contextARead-onlyIdempotent
Start here for any project: detected stack and build/test/lint commands, git state, top-level layout, project instruction files, README start and saved memory notes.
Inputs: path.
project_memoryADestructive
Durable per-project notes shown by project_context in future conversations. action: list | add (note) | remove (index). Save conventions, gotchas and verified commands — not temporary state.
Inputs: note, path, index, action.
pty_listBRead-onlyIdempotent
List interactive PTY sessions.
Inputs: no named parameters.
pty_readARead-onlyIdempotent
Read new terminal output from a PTY session (or all buffered output with all: true). ANSI escapes are stripped by default.
Inputs: id (required), all, raw, maxChars.
pty_resizeCDestructive
Resize a PTY terminal.
Inputs: id (required), cols, rows.
pty_startBDestructive
Start a real interactive terminal backed by Windows ConPTY. Use for REPLs, debuggers, SSH/TUI programs and CLIs that require a terminal. By default starts the configured interactive shell; command runs inside it, or file+args starts an executable directly.
Inputs: cwd, args, cols, file, +5 more.
pty_stopCDestructive
Stop and remove an interactive PTY session.
Inputs: id (required).
pty_writeBDestructive
Write to an interactive PTY. enter: true appends the Enter key.
Inputs: id (required), data (required), enter.
read_fileARead-onlyIdempotent
Read a text file with line numbers. Relative paths resolve against the default workspace. Use startLine/endLine for large files.
Inputs: path (required), endLine, startLine.
read_many_filesARead-onlyIdempotent
Read up to 50 files in one call (strings, or {path,startLine,endLine}). Much faster than several read_file calls.
Inputs: files (required), maxTotalChars.
record_clipADestructive
Render a video clip from code: pass a complete HTML document (CSS/JS/canvas/SVG animation) or a URL; it is played headlessly at the given size for durationMs and saved as mp4/webm/gif. Default 1080x1920 (vertical, Shorts/TikTok/Reels). If the page defines window.startClip(), it is called when recording begins.
Inputs: fps, url, html, name, +7 more.
repo_mapBRead-onlyIdempotent
Compact map of a codebase: the most-referenced files with their key functions/classes/types and line numbers. Understand a large project in one call. focus: file names or symbols to prioritise.
Inputs: path, focus, maxChars.
resource_statusARead-onlyIdempotent
Current workstation resource pressure and admission-controller slots for commands, builds/tests, LSP, diagnostics, background processes and video work.
Inputs: no named parameters.
run_commandADestructive
Run a shell command (/bin/bash) and wait for it to finish. Returns exitCode, stdout, stderr. Use for builds, tests, git, npm, python, ffmpeg, etc. For servers/watchers that never exit use process_start.
Inputs: command (required), cwd, stdin, timeoutMs, +2 more.
search_codeARead-onlyIdempotent
Search file contents with a regex (ripgrep when installed, Node fallback otherwise). Returns path:line: text; context adds surrounding lines.
Inputs: query (required), glob, path, context, +3 more.
vscode_add_breakpointCDestructive
Add a breakpoint (optionally conditional).
Inputs: file (required), line (required), condition.
vscode_debug_stateCRead-onlyIdempotent
Active debug session and breakpoints.
Inputs: no named parameters.
vscode_diagnosticsARead-onlyIdempotent
Live compiler/linter errors and warnings from VS Code language servers (optionally filtered to one file).
Inputs: file.
vscode_find_referencesBRead-onlyIdempotent
All references to the symbol at a position (via the language server).
Inputs: file (required), line (required), character (required).
vscode_go_to_definitionCRead-onlyIdempotent
Definition location of the symbol at a position.
Inputs: file (required), line (required), character (required).
vscode_open_fileBDestructive
Open a file in VS Code at a line so the user can see it.
Inputs: file (required), line.
vscode_open_filesCRead-onlyIdempotent
Open editor tabs and the active file in VS Code.
Inputs: no named parameters.
web_searchBRead-onlyIdempotent
Search the web (DuckDuckGo). Returns title, url, snippet for the top results.
Inputs: query (required).
windows_actionADestructive
Act on a native Windows UI Automation element from windows_snapshot: invoke, setValue, toggle, select, expand, collapse, focus or scrollIntoView. Re-snapshot after meaningful UI changes.
Inputs: ref (required), action (required), pid, title, +1 more.
windows_listBRead-onlyIdempotent
List visible top-level native Windows application windows with process IDs and UI Automation refs.
Inputs: limit.
windows_screenshotARead-onlyIdempotent
Capture the visible bounds of a native Windows application window selected semantically by pid/title. Returns the PNG to the client and saves it under screenshots/.
Inputs: pid, title.
windows_snapshotBRead-onlyIdempotent
Semantic Windows UI Automation snapshot of a native app window. Returns stable runtime refs, control names/types, supported patterns and bounds. Prefer this over coordinate clicking.
Inputs: pid, title, maxElements, includeOffscreen.
windows_waitBRead-onlyIdempotent
Wait for a semantic native Windows control to appear, become enabled, or disappear. Matches by accessible name substring, AutomationId and/or control type.
Inputs: pid, name, state, title, +6 more.
write_fileADestructive
Create or fully overwrite a file (parent folders are created). Prefer apply_patch/edit_file for changes to existing files.
Inputs: path (required), content (required), check, expectedSha256.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 114 tools
Distinct domain prefixes (browser_, chrome_, lsp_, vscode_, pty_, job_) and detailed descriptions help, but there are multiple overlapping suites for similar actions, such as browser_* vs chrome_* and run_command vs process_start vs job_start. An agent can usually pick correctly from context, yet the parallel tool families create real misselection risk.
Most tools use snake_case with a predictable domain prefix and action-oriented names, especially browser_, chrome_, windows_, lsp_, vscode_, pty_, job_, and process_. There are minor deviations like outline, batch, repo_map, and project_context, but the overall naming pattern is readable and mostly consistent.
The server exposes 114 tools, far beyond the 3–15 range for a well-scoped set. Even with broad coding-agent capabilities, this volume makes discovery, selection, and maintenance unusually heavy.
The surface is very broad: file editing, code search, LSP, terminals, background jobs, browser and Chrome automation, Windows UI automation, video recording, git, web search, and project memory. Some lifecycle gaps remain, such as git branch/push/pull/merge operations and dedicated test/package management, but most agent workflows are covered.
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.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Related MCP Servers
- AlicenseBqualityDmaintenanceProduction-grade MCP server that gives AI agents safe access to your local dev environment: filesystem, databases, processes, and OpenAPI specs.1555 npm4MIT
- AlicenseNot gradedqualityCmaintenanceLocal-first MCP server that provides project context, verification gates, and structured tools for coding agents to discover knowledge, run diagnostics, and execute allowlisted commands within a repository.41 npmMIT
- AlicenseNot gradedqualityCmaintenanceA self-hosted MCP server that gives AI agents controlled access to a machine: filesystem, shell, background processes, git, web fetching and persistent key-value memory.GPL 3.0
- AlicenseAqualityDmaintenanceA lightweight MCP server that enables AI assistants to execute local development tools and retrieve system status with low latency over stdio or HTTP.153 npm3MIT