ChatGPT Local Agent MCP (XxYouDeaDPunKxX/chatgpt-local-agent-mcp) is an MCP server listed on the M8ven Trust Index. It scores 47 out of 100, grade D. It declares 53 tools. No publisher has claimed this listing.

D
Caution
47/100

ChatGPT Local Agent MCP

This MCP server gives ChatGPT controlled access to your Windows PC, enabling it to inspect files, run commands, apply patches, and interact with the desktop under your supervision.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

XxYouDeaDPunKxX

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Tool annotations don’t match behaviour
4 read-only tools perform write/delete/exec — browser_screenshot (line 1505: fs.mkdir(directory, { recursive: true })); process_list (line 377: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line)); tail_log (line 218: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line))
⚠️
Tool descriptions don’t match what handlers do
2 tools describe read intent but their handlers mutate — process_list (line 377: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line)); tail_log (line 218: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line))
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 2 credentials: GITHUB_CLIENT_SECRET, OAUTH_CLIENT_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes53 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

browser_cdp_connect

Escape hatch for attaching to an existing Chromium-based browser/profile through Chrome DevTools Protocol. Prefer browser_session_create for isolated browsing unless you explicitly need an already logged-in profile or existing tab state.

browser_session_create

Preferred browser entry point for web work. Creates an isolated local Playwright browser session; use this instead of browser_cdp_connect unless an existing logged-in profile is required.

browser_session_list

List active local Playwright browser sessions.

browser_session_close

Close a local Playwright browser session and release its browser process.

browser_page_list

List pages/tabs available inside a browser session.

browser_page_select

Select the active page/tab inside a browser session by pageIndex from browser_page_list.

browser_navigate

Navigate a browser session to a URL.

browser_snapshot

Preferred structured read of a web page. Return an ARIA snapshot optimized for AI use; use this before element interactions and prefer it over screenshots unless pixels/layout must be inspected.

browser_click

Click an element by CSS selector or ARIA snapshot ref. Prefer ariaRef from browser_snapshot when available. On CDP existing-profile sessions, confirm=true is required.

browser_fill

Fill an input-like element by CSS selector or ARIA snapshot ref. Prefer ariaRef from browser_snapshot when available. On CDP existing-profile sessions, confirm=true is required.

browser_type

Type text into an element by CSS selector or ARIA snapshot ref. Prefer browser_fill for replacing input values. On CDP existing-profile sessions, confirm=true is required.

browser_press_key

Press a keyboard key in the active page. Prefer browser_click/fill/type for semantic interactions when possible. On CDP existing-profile sessions, confirm=true is required.

browser_wait

Wait for time, selector visibility, URL match, or load state in a browser session.

browser_screenshot

Capture a PNG screenshot of the current browser page. Prefer browser_snapshot for DOM/ARIA understanding; use screenshot when visual layout, pixels, or rendering must be inspected.

browser_console

Return recent console messages captured for a browser session.

browser_network

Return recent network response/failure events captured for a browser session.

desktop_mouse_position

Return current Windows desktop mouse position, screen bounds, and active window.

desktop_mouse_move

Fallback tool for coordinate-level desktop UI control when browser/CDP/structured tools cannot act. Move the Windows desktop mouse cursor to absolute screen coordinates. Defaults to dryRun=true.

desktop_mouse_click

Fallback tool for coordinate-level desktop UI control when browser/CDP/structured tools cannot act. Move and click the Windows desktop mouse at absolute screen coordinates. Defaults to dryRun=true.

desktop_key_press

Fallback tool for active-window keyboard control when browser/CDP/structured tools cannot act. Send a SendKeys key string to the active Windows desktop application. Defaults to dryRun=true.

desktop_hotkey

Fallback tool for active-window hotkeys when browser/CDP/structured tools cannot act. Send a structured hotkey to the active Windows desktop application, e.g. CTRL+L. Defaults to dryRun=true.

desktop_text_type

Fallback tool for active-window text entry when browser/CDP/structured tools cannot act. Type text into the active Windows desktop application. Defaults to dryRun=true. Journal redacts text content.

stat

Return metadata for a local path.

stat_many

Return metadata for multiple local paths.

read_file_range

Read a byte range from a local file.

read_many

Read multiple local files.

hash

Hash a local file.

tree

Return a bounded recursive tree of a directory.

list_dir

List directory entries on the local machine. Use this to inspect filesystem state.

read_file

Read a local text file from the machine running the MCP server.

write_file

Preferred tool for creating or replacing a local text file. Use this instead of shell redirection, Set-Content, Out-File, echo > file, or heredoc writes when writing a whole file. Prefer the narrowest practical cwd plus a short relative path; the tool returns warnings when cwd is broader than the ta

mkdir

Preferred tool for creating directories. Use this instead of shell mkdir, md, or New-Item -ItemType Directory when practical.

delete

Preferred tool for deleting a file with dry-run, confirm, backup, and journal effects. Use this instead of shell Remove-Item, del, erase, or rm when practical. Directory deletion is intentionally not supported yet.

move

Preferred tool for moving or renaming a file with dry-run, confirm, backup, and journal effects. Use this instead of shell move, mv, Rename-Item, or Move-Item when practical. Directory moves are intentionally not supported yet.

copy

Preferred tool for copying a file with dry-run, confirm, backup-on-overwrite, and journal effects. Use this instead of shell copy, cp, or Copy-Item when practical. Directory copy is intentionally not supported yet.

search

Preferred tool for bounded text search under a directory. Use this instead of shell grep, rg, or Select-String when practical so secret guards and search limits apply.

apply_patch

Preferred tool for targeted edits in existing files and multi-file changes represented as a unified diff. Use this instead of shell heredocs, Set-Content, or ad-hoc file rewrite commands when practical; supports dry-run, touched file detection, backups, and journal effects.

rollback_backup

Restore a file from a local backup created by a destructive tool.

git_status

Preferred tool for repository status. Use this instead of shell git status when practical.

git_diff

Preferred tool for repository diffs. Use this instead of shell git diff when practical.

git_commit

Preferred tool for creating a git commit with dry-run and confirm semantics. Use this instead of shell git commit when practical. By default commits currently staged changes.

process_list

List local operating-system processes.

port_list

List local TCP/UDP ports using netstat.

wait_for_port

Wait until a TCP host:port becomes reachable.

tail_log

Preferred tool for reading log tails or stdout/stderr from a managed process. Use this instead of shell Get-Content -Tail, tail, or polling log files when practical.

start_process

Preferred tool for starting long-running local processes such as dev servers. Use this instead of shell Start-Process, npm run dev, npm start, vite, or watch commands when the process should keep running; stdout/stderr are captured to managed log files and stop_process can clean it up. Prefer the na

stop_process

Stop a process started by start_process.

process_kill

Kill a local process by PID.

window_list

Preferred desktop-observation tool before coordinate fallback actions. List visible top-level desktop windows on the local Windows session. Window titles are redacted by default.

screen_screenshot

Visual fallback for desktop inspection. Capture a PNG screenshot of all screens, the primary screen, or an explicit region; prefer window_list, browser_snapshot, browser_console, or browser_network when structured data is enough.

screen_ocr

Visual text fallback over a screen_screenshot artifact. Prefer browser_snapshot or structured tools when available; OCR is best-effort and requires local tesseract executable.

shell

Escape hatch for local command execution when no dedicated MCP tool covers the action. Use shell for tests, builds, one-shot CLI commands, and true fallback cases. Do not use it for file writes, git operations, long-running processes, log tailing, search, delete/move/copy/mkdir when dedicated tools

workspace_info

Return runtime information about the local MCP runner and its default workspace.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configCLOUDFLARED_CONFIGC:\Users\you\.cloudflared\config.yml
configCLOUDFLARED_EXE
configCLOUDFLARE_TUNNEL_NAME
configDEV_IDENTITY_LOGIN
configGITHUB_CLIENT_ID
🔐 secretGITHUB_CLIENT_SECRET
configGPT_FS_MCP_BACKUP_DIR
configGPT_FS_MCP_DEFAULT_CWDonly controls the starting directory for relative paths and commands. If it is empty, it falls back to the user Documents\GitHub folder. It does not limit filesystem access by itself.
configGPT_FS_MCP_HOST
configGPT_FS_MCP_JOURNAL_PATH
configGPT_FS_MCP_MAX_POLICY_MODEdestructive
configGPT_FS_MCP_UNTRUSTED_CONTENT_ROOTS
configGPT_FS_MCP_WORKSPACE_PROFILES_JSONFor a safer first workspace, define for one test folder, keep auth enabled, and guard command execution:
configOAUTH_CLIENT_ID
🔐 secretOAUTH_CLIENT_SECRET
configPUBLIC_BASE_URL
// quality suggestions

Dependencies

8 dependencies, 1 flagged: playwright

Tool annotations match behaviour

4 read-only tools perform write/delete/exec — browser_screenshot (line 1505: fs.mkdir(directory, { recursive: true })); process_list (line 377: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line)); tail_log (line 218: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line))

Either remove the readOnlyHint:true annotation, or remove the write/delete call from the tool handler.

Destructive tools are labelled

2 tools perform destructive updates without destructiveHint — browser_screenshot deletes at line 1509 (fs.unlink(filePath)); screen_screenshot deletes at line 396 (fs.rm(filePath, { force: true }))

Add destructiveHint:true to any tool whose handler calls .delete(), .upsert(), .update(), unlink, rm, DELETE, DROP, REPLACE INTO, or any operation that overwrites existing data.

Descriptions match behaviour

2 tools describe read intent but their handlers mutate — process_list (line 377: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line)); tail_log (line 218: /^(\d+)\s+(\d+)\s+(\S+)\s*(.*)$/.exec(line))

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Tool inputs are validated

49/53 tool handlers declare input schemas (92%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool test coverage

Only 4/53 tools referenced in tests (8%)

Write tests that reference each tool by name so every tool has at least one test.

Shell command execution

5 child_process calls — runs shell commands

Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.

Tool description accuracy

process_list: description implies read-only but handler writes/deletes/executes; tail_log: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/xxyoudeadpunkxx/chatgpt-local-agent-mcp?variant=verified)](https://m8ven.ai/mcp/xxyoudeadpunkxx/chatgpt-local-agent-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 216e78440e18558202a7c894b3eaf6f7b6c28e0f
code hash: bcd56de0cff09398cd024ebd32dcedfe4d4a8d906edf063fcd0e56f0b4f1d811
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client