Skip to main content
Glama
moosin76

Windows Scoped Remote MCP Server

by moosin76

πŸ›‘οΈ Windows Scoped Remote MCP Server

This is a security-isolated remote development MCP (Model Context Protocol) server that runs in Windows environments.
By integrating with modern LLM clients such as ChatGPT and Claude, it can autonomously perform file creation/editing, PowerShell command execution, project builds, and debugging within a designated local workspace using conversation alone.


πŸ“Œ Key Features

  • Windows-optimized sandbox (SandboxGuard):

    • Blocks 100% of file/folder access and command execution outside the specified MCP_WORKSPACE_ROOT directory.

  • ChatGPT standard OAuth 2.1 integration (RFC 8414 / RFC 9728 / DCR / PKCE):

    • Provides dynamic client registration (DCR) and an interactive secure approval page (/authorize), so only authorized users who know the password token (MCP_AUTH_TOKEN) can connect safely.

  • 19 full-stack MCP development tools & OpenAPI 3.0 spec included:

    • Full support for file and directory CRUD, patch application (apply_patch), asynchronous process and PowerShell/CMD execution, and status monitoring.

  • Cloudflare Tunnel-based Zero Trust communication:

    • Provides a secure HTTPS endpoint through Cloudflare Tunnel without complex port forwarding or firewall openings.

  • Zero-downtime project switching support:

    • Simply change MCP_WORKSPACE_ROOT in .env to instantly switch working folders while maintaining the existing ChatGPT authentication session.


πŸ—οΈ System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   ChatGPT (Web / App)                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ HTTPS (Streamable HTTP / OAuth 2.1)
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚        Cloudflare Zero Trust Tunnel (mcp.yourdomain)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ Local Proxy (HTTP localhost:<MCP_PORT>)
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚            Windows Scoped Remote MCP Server            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Express Router (/mcp, /authorize, /openapi.json) β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                           β”‚                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚   SandboxGuard & ProcessManager & FileService    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚ 격리된 파일 & λͺ…λ Ήμ–΄ μ‹€ν–‰
                            β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚       λ‚΄ 둜컬 μž‘μ—… 곡간 (MCP_WORKSPACE_ROOT)            β”‚
β”‚      예: D:\Godot\mcp-test λ˜λŠ” D:\Godot\MyGame         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Provided Tool List (30 Tools Total)

🌐 1. Browser Automation & Web Testing Tools (Playwright 8 Tools)

Tool Name

Description

browser_navigate

Navigate the browser to a website URL and load the page

browser_screenshot

Capture a screenshot of the current web screen and save it as an image file (PNG) in the working folder

browser_click

Mouse-click a specific HTML element such as a button or link

browser_fill

Automatically type and enter text into search boxes and input forms

browser_get_content

Extract the webpage body text or HTML source

browser_evaluate

Execute JavaScript (JS) code in the browser console and collect the results

browser_press_key

Input keyboard keys (Enter, Tab, Escape, arrow keys, etc.)

browser_close

End the browser session and free memory

πŸ“‚ 2. Multi-Workspace Management Tools (3 Tools)

Tool Name

Description

list_workspaces

View the list of all registered multi-workspaces, aliases, and activation status

get_active_workspace

View the name and absolute path of the currently active default workspace

switch_workspace

Switch the active workspace in real time by alias or path

πŸ“ 3. File and Code Manipulation Tools (11 Tools)

Tool Name

Description

list_directory

View the list of files and subdirectories at the specified path

read_file

Read a text file (supports offset and chunked reading)

write_file

Create a new file and overwrite/append

edit_file

Precisely edit code by specific line numbers and block units

replace_in_file

Search for strings and replace target text in bulk or individually

apply_patch

Apply patches to files in standard Unified Diff / Patch format

make_directory

Create a new directory

delete_file

Delete files and empty directories

move_file

Move files/folders and rename

copy_file

Copy files/folders

stat_path

View file/folder size, modification date, and attribute metadata

⚑ 4. Terminal Command and Script Execution Tools (8 Tools)

Tool Name

Description

search_files

Search for file names using Glob patterns

find_in_files

High-speed search of text and regular expressions inside files

exec_command

Execute PowerShell or CMD commands and return the results

run_script

Execute PowerShell, Batch, Node.js, Python scripts

read_process_output

Read the output buffer of a long-running background process

write_process_input

Send data to the standard input (stdin) of a running process

stop_process

Terminate a background process

list_processes

View the list and status of currently running processes


βš™οΈ 1. Environment Configuration Guide (.env)

Copy the .env.example file in the project root to create a .env file, then configure it:

copy .env.example .env

πŸ“‹ Detailed Description of Key Configuration Items

Environment Variable

Default Value / Example

Required

Description

MCP_PORT

12000

Optional

The port number on which the Express server runs locally (default: 12000)

MCP_WORKSPACE_ROOTS

test:C:\path\to\mcp-test, ether:C:\path\to\ether-chronicle

Required

Multi-workspaces that ChatGPT can manipulate (alias:path)

MCP_AUTH_TOKEN

your_secure_password

Required

The security password to enter on the ChatGPT OAuth approval page (/authorize)

MCP_PUBLIC_URL

https://mcp.yourdomain.com

Required

The public HTTPS address exposed externally through Cloudflare Tunnel

CLOUDFLARE_TUNNEL_TOKEN

your_tunnel_token

Optional

The fixed tunnel token issued from the Cloudflare Zero Trust dashboard

`MCP_DEFAULT_SHELL``

powershell

Optional

The default shell used when running exec_command (powershell, cmd, pwsh)

MCP_MAX_FILE_CHUNK_BYTES

1048576 (1MB)

Optional

Maximum bytes read per read_file call

MCP_MAX_EDIT_FILE_BYTES

67108864 (64MB)

Optional

Maximum file size that can be modified with edit_file / write_file

MCP_MAX_OUTPUT_BYTES

1048576 (1MB)

Optional

Maximum size of the output buffer for terminal command execution

# [Server Port]
MCP_PORT=12000

# [Multi-Root Security & Directory Sandbox]
MCP_WORKSPACE_ROOTS=test:C:\path\to\mcp-test, ether:C:\path\to\ether-chronicle, server:C:\path\to\localRemoteMcp

# [Authentication - ChatGPT OAuth 2.1]
MCP_AUTH_TOKEN=your_secure_password_here

# [Public Domain & Cloudflare Tunnel]
MCP_PUBLIC_URL=https://mcp.yourdomain.com
CLOUDFLARE_TUNNEL_TOKEN=your_cloudflare_tunnel_token_here

# [Shell Configuration]
MCP_DEFAULT_SHELL=powershell

# [Limits - Safety Guardrails]
MCP_MAX_FILE_CHUNK_BYTES=1048576
MCP_MAX_EDIT_FILE_BYTES=67108864
MCP_MAX_OUTPUT_BYTES=1048576

🌐 2. Cloudflare Tunnel and Domain Integration

This server securely exposes the local port specified in .env (MCP_PORT, default: 12000) to a subdomain of your domain (https://mcp.yourdomain.com) through a Cloudflare Zero Trust tunnel.

πŸ”Œ Cloudflare Dashboard Setup

  1. Go to Cloudflare Zero Trust Dashboard βž” Networks βž” Tunnels menu.

  2. Click [Create a tunnel] to create a Cloudflared tunnel.

  3. Add a Public Hostname:

    • Subdomain: mcp (or your desired subdomain)

    • Domain: yourdomain.com (select your domain)

    • Service Type: HTTP

    • URL: localhost:<MCP_PORT> (e.g., localhost:12000)

  4. Copy the issued tunnel token and paste it into the CLOUDFLARE_TUNNEL_TOKEN field in .env.


πŸ“¦ 3. Cloudflare Binary (bin/cloudflared.exe) Guide

This project uses the cloudflared.exe binary to automatically start the tunnel.

  • Automatic download support (recommended):

    • When start.bat or start.ps1 is first run, if bin/cloudflared.exe does not exist, the latest binary is automatically downloaded from the official Cloudflare GitHub Release and placed in the directory.

    • You only need to run start.bat β€” no separate download is required.

  • Manual download (offline / firewall environments):

    • If automatic download is restricted, download the cloudflared-windows-amd64.exe file from the Cloudflare official release page, then rename it to bin/cloudflared.exe in the project directory.


πŸš€ 4. How to Run the Server

Method A. One-Click Automatic Execution (start.bat / Recommended)

Double-click start.bat or run it from the console:

start.bat

(Automatically installs npm packages βž” checks .env βž” checks the cloudflared binary βž” runs the TypeScript build, server, and tunnel all at once)

Method B. Manual Terminal Execution

# 1. μ˜μ‘΄μ„± μ„€μΉ˜
npm install

# 2. TypeScript 컴파일
npm run build

# 3. ν…ŒμŠ€νŠΈ μ‹€ν–‰
npm test

# 4. μ„œλ²„ μ‹œμž‘
npm start

πŸ€– 5. ChatGPT App / Plugin Connection Guide (Step by Step)

Step 1. Register the ChatGPT App

  1. Go to ChatGPT Web and navigate to [Settings] βž” [Plugins / Developer Mode].

  2. Click [+ New Plugin / Create App].

  3. Enter the settings as follows:

    • Name: my-remote (or your desired name)

    • Connection: Server URL βž” https://mcp.yourdomain.com/mcp (your domain)

    • Authentication: Select OAuth

  4. Click [Create].

Step 2. Secure Login Approval

  1. On the registered app details screen, press the [Connect βž”] button.

  2. A browser popup will show the [Windows Scoped Remote MCP Approval] web page.

  3. Enter the MCP_AUTH_TOKEN value set in .env in the password field and click [Approve and return to ChatGPT].

Step 3. Permission Settings ("Allow All Actions")

  • Set the Permissions option on the app details screen to Allow all actions.

  • (ChatGPT will autonomously proceed with development without a confirmation popup appearing every time a tool is called)


πŸ’¬ 6. Real-World Conversational Development Prompt Examples

In a new chat window (or an @ plugin chat window), you can give instructions like this:

# 1. ν”„λ‘œμ νŠΈ 파일 λͺ©λ‘ 및 ꡬ쑰 νŒŒμ•…
@my-remote ν˜„μž¬ μž‘μ—… κ³΅κ°„μ˜ 파일과 폴더 λͺ©λ‘μ„ μ •λ¦¬ν•΄μ„œ λ³΄μ—¬μ€˜

# 2. μ›Ή κ²Œμž„ / ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈ 개발
@my-remote HTML5 Canvas둜 λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ λ ˆνŠΈλ‘œν’ 벽돌깨기 κ²Œμž„(breakout.html)을 μ„Έλ ¨λ˜κ²Œ λ§Œλ“€μ–΄μ€˜

# 3. Godot 4 κ²Œμž„ 슀크립트 μž‘μ„±
@my-remote Godot 4 κΈ°μ€€μœΌλ‘œ 2D 캐릭터 이동, λŒ€μ‹œ, 점프 및 물리 μΆ©λŒμ„ μ²˜λ¦¬ν•˜λŠ” Player.gdλ₯Ό μž‘μ„±ν•΄μ€˜

# 4. νŒ¨ν‚€μ§€ μ„€μΉ˜ 및 ν…ŒμŠ€νŠΈ μ‹€ν–‰
@my-remote npm install λͺ…λ Ήμ–΄λ‘œ ν•„μš”ν•œ 라이브러리λ₯Ό μ„€μΉ˜ν•˜κ³  npm testλ₯Ό 돌렀 κ²°κ³Όλ₯Ό ν™•μΈν•΄μ€˜

# 5. μ›Ή λΈŒλΌμš°μ € μžλ™ν™” & ν™”λ©΄ 캑처 (Playwright)
@my-remote 넀이버(naver.com)둜 μ΄λ™ν•΄μ„œ 검색창에 'Godot Engine 4' κ²€μƒ‰ν•˜κ³  κ²°κ³Ό νŽ˜μ΄μ§€ μŠ€ν¬λ¦°μƒ· μ°μ–΄μ„œ search.png둜 μ €μž₯ν•΄μ€˜

# 6. λ‚΄κ°€ λ§Œλ“  둜컬 μ›ΉνŽ˜μ΄μ§€ μ‹€μ‹œκ°„ 검증
@my-remote 둜컬 μ›Ήμ„œλ²„λ₯Ό μ‹€ν–‰ν•˜κ³  λΈŒλΌμš°μ €λ‘œ μ ‘μ†ν•΄μ„œ [κ²Œμž„ μ‹œμž‘] λ²„νŠΌμ„ λˆ„λ₯Έ λ‹€μŒ 화면이 잘 λ‚˜μ˜€λŠ”μ§€ μŠ€ν¬λ¦°μƒ·μœΌλ‘œ ν™•μΈν•΄μ€˜

πŸ“‚ 7. Multi-Project Management and Real-Time Switching

This server supports multi-workspaces, so you can register multiple projects at once and switch between them in real time during a conversation.

Method A. Real-Time Switching via ChatGPT Conversation (No Server Restart ⭐)

  1. Check the current workspace:

    @my-remote ν˜„μž¬ μž‘μ—… 곡간이 μ–΄λ””λ‘œ μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•΄μ€˜
  2. View the list of all registered projects:

    @my-remote λ“±λ‘λœ λͺ¨λ“  μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λͺ©λ‘μ„ λ³΄μ—¬μ€˜
  3. Switch workspaces immediately:

    @my-remote ether ν”„λ‘œμ νŠΈλ‘œ μž‘μ—… 곡간을 μ „ν™˜ν•΄μ€˜

    (ChatGPT calls the switch_workspace(name: "ether") tool to instantly switch to that project without a server restart)

Method B. Registering a New Project (.env)

  1. Add a new project alias and path to MCP_WORKSPACE_ROOTS in the .env file:

    MCP_WORKSPACE_ROOTS=test:C:\path\to\mcp-test, ether:C:\path\to\ether-chronicle, mygame:C:\path\to\mygame
  2. Re-run start.bat in the terminal and the added projects become immediately accessible and switchable. (The OAuth authentication token session is permanently preserved)


πŸ”’ 8. Security and Troubleshooting

  • Q. Is there no risk of outsiders gaining unauthorized access to my computer?

    • It is fully protected by a 3-layer security structure:

      1. Password authentication: Only your ChatGPT account that knows the MCP_AUTH_TOKEN password can access it.

      2. Sandbox isolation: Files and commands operate only within the specified MCP_WORKSPACE_ROOT, and any access to parent paths is immediately blocked.

      3. Cloudflare Zero Trust: You can add firewall rules in the Cloudflare dashboard to allow only your IP.

  • Q. What if the tunnel doesn't connect or I get a 502 error?:

    • Check that the local server (port: MCP_PORT in .env) is running properly in the start.bat window, and visit https://mcp.yourdomain.com/health in your browser to verify that the { status: "ok" } response appears.


πŸ“„ License

MIT License

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • Persistent cloud development environments that coding agents create, run and test software in.

  • Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/moosin76/windows-scoped-remote-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server