Windows Scoped Remote MCP Server
by moosin76
README.md
# ๐ก๏ธ Windows Scoped Remote MCP Server
Windows ํ๊ฒฝ์์ ๋์ํ๋ **๋ณด์ ๊ฒฉ๋ฆฌํ ์๊ฒฉ ๊ฐ๋ฐ MCP(Model Context Protocol) ์๋ฒ**์
๋๋ค.
ChatGPT, Claude ๋ฑ MCP๋ฅผ ์ง์ํ๋ LLM ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐํ์ฌ ์ค์ Windows ๊ฐ๋ฐ ํ๊ฒฝ์ ํ์ผ, ํฐ๋ฏธ๋, ํ๋ก์ธ์ค, ๋ธ๋ผ์ฐ์ , ์ฌ๋ฌ Workspace๋ฅผ ๋ํํ์ผ๋ก ๋ค๋ฃฐ ์ ์์ต๋๋ค.
๋ํ Godot, Blender ๋ฑ ๋ณ๋์ Remote MCP๋ฅผ **Provider**๋ก ์ฐ๊ฒฐํ ์ ์์ด ํ๋์ Gateway์์ ๋ค์ํ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
### โค๏ธ ํ๋ก์ ํธ ํ์
WSR์ด ์ ์ฉํ๋ค๋ฉด GitHub Sponsors๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
**[๐ GitHub Sponsors๋ก ํ์ํ๊ธฐ](https://github.com/sponsors/moosin76)**
ํ์์ WSR์ ์ ์ง๋ณด์์ ์๋ก์ด MCP Provider ๋ฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
---
## ์ฃผ์ ํน์ง
- **Windows SandboxGuard** โ ์ค์ ํ Workspace ๊ฒฝ๊ณ ์์์ ํ์ผ๊ณผ ๋ช
๋ น ์คํ์ ์ ํํฉ๋๋ค.
- **Multi-Workspace** โ ์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ๋ฑ๋กํ๊ณ ํ์ฑ Workspace๋ฅผ ์ ํํ ์ ์์ผ๋ฉฐ, ChatGPT/MCP ์ธ์
๋ณ๋ก ํ์ฑ Workspace ์ํ๊ฐ ๋
๋ฆฝ๋ฉ๋๋ค.
- **ํ์ผ/์ฝ๋ ๊ด๋ฆฌ** โ ์กฐํ, ์์ฑ, ์์ , ์ด๋, ๋ณต์ฌ, ์ญ์ , patch ์ ์ฉ ๋ฑ์ ์ง์ํฉ๋๋ค.
- **PowerShell / CMD / ํ๋ก์ธ์ค ๊ด๋ฆฌ** โ ๊ฐ๋ฐ ๋ช
๋ น ์คํ๊ณผ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- **Playwright ๋ธ๋ผ์ฐ์ ์๋ํ** โ ์ค์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด๊ณ ํ์, ์
๋ ฅ, ํด๋ฆญ, ์คํฌ๋ฆฐ์ท ๋ฑ์ ์ํํฉ๋๋ค.
- **Remote MCP Provider** โ Godot, Blender ๋ฑ ์ํ๋ MCP๋ฅผ Gateway์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- **Provider ์ฅ์ ๊ฒฉ๋ฆฌ** โ ํ๋์ MCP๊ฐ ๊บผ์ ธ ์์ด๋ WSR Core์ ๋ค๋ฅธ Provider๋ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- **Provider Scheduler** โ MCP์ ์ฐ๊ฒฐ ์ํ์ `tools/list`๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๊ณ ์๋ ์ฌ์ฐ๊ฒฐ ๋ฐ Tool Registry ๊ฐฑ์ ์ ์ํํฉ๋๋ค.
- **Provider Tool ๋ณ๊ฒฝ ์๋ฆผ** โ Remote MCP์ Tool ๋ชฉ๋ก์ด ๋ฐ๋๋ฉด ์ง์ํ๋ modern MCP ํด๋ผ์ด์ธํธ์ `tools/list_changed` ์๋ฆผ์ ์ ๋ฌํฉ๋๋ค.
- **Project Handoff / Resume** โ `workspace_context`์ `workspace_resume`์ผ๋ก Git, AGENTS, Roadmap, Session ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ AI/์ธ์
์์ ์์
์ํ๋ฅผ ์ด์ด๋ฐ์ ์ ์์ต๋๋ค.
- **WSR ์ด์ ์ง๋จ** โ `wsr_status` ํ๋๋ก WSR, Workspace, Provider, Browser, cloudflared ๋ฐ ์ธ์ฆ ์ค์ ์ํ๋ฅผ ๋น๋ฐ๊ฐ ์์ด ํ์ธํ ์ ์์ต๋๋ค.
- **OAuth 2.1 / Cloudflare Tunnel ์ง์** โ ์๊ฒฉ MCP ํด๋ผ์ด์ธํธ์ ์์ ํ๊ฒ ์ฐ๊ฒฐํ ์ ์๋ ๊ตฌ์ฑ์ ์ ๊ณตํฉ๋๋ค.
- **MCP 2026-07-28 + legacy ํธํ** โ `server/discover` ๊ธฐ๋ฐ ์ต์ stateless ์์ฒญ๊ณผ 2025 `initialize` ํ๋ฆ์ ๊ฐ์ `/mcp` endpoint์์ ์ง์ํฉ๋๋ค.
---
## ์ํคํ
์ฒ
```text
ChatGPT / Claude
โ
MCP / HTTPS
โ
Cloudflare Tunnel
โ
โผ
Windows Scoped Remote MCP Server
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ โ โ
Workspace Playwright Providers
โ โ โ
Files / Process Browser tools โโโโโโผโโโโโโ
โ โ โ
Godot Blender ...
โ โ
godot_* blender_*
```
WSR ์์ฒด๋ Gateway ์ญํ ์ ํ๊ณ , ์ธ๋ถ MCP๋ `RemoteMcpProvider`๋ฅผ ํตํด ์ฐ๊ฒฐํฉ๋๋ค. Provider transport๋ Streamable HTTP, legacy SSE, local stdio๋ฅผ ์ง์ํฉ๋๋ค.
HTTP MCP ๊ณ์ธต์ ๊ณต์ TypeScript SDK v2์ `createMcpHandler`๋ฅผ ์ฌ์ฉํฉ๋๋ค. `2026-07-28` ํด๋ผ์ด์ธํธ์๋ `server/discover`์ ์์ฒญ๋ณ `_meta` envelope๋ฅผ ์ ๊ณตํ๊ณ , ๊ธฐ์กด ํด๋ผ์ด์ธํธ์๋ ๊ฐ์ tool ์ ์๋ก 2025-era stateless `initialize` fallback์ ์ ๊ณตํฉ๋๋ค.
```text
POST /mcp
โโ MCP 2026-07-28 โ server/discover / per-request envelope
โโ MCP 2025-era โ initialize / notifications/initialized
```
---
## Remote MCP Provider
์ฌ์ฉ์๋ง๋ค ํ์ํ MCP๊ฐ ๋ค๋ฅด๋ฏ๋ก WSR์ ํน์ MCP ํ๋์ ์ข
์๋์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด:
```text
WSR
โโโ Godot MCP
โโโ Blender MCP
โโโ Playwright
โโโ ์ฌ์ฉ์๊ฐ ์ถ๊ฐํ MCP
```
๊ฐ Provider์๋ namespace๋ฅผ ์ฌ์ฉํฉ๋๋ค.
| MCP | Namespace ์์ |
| :--------- | :------------- |
| Godot | `godot_*` |
| Blender | `blender_*` |
| Browser | `browser_*` |
| ์๋ก์ด MCP | `<provider>_*` |
์๋ฅผ ๋ค์ด Blender MCP์ `get_scene`์ WSR์์ `blender_get_scene`์ผ๋ก ๋
ธ์ถ๋ฉ๋๋ค.
### MCP๋ฅผ ์ถ๊ฐํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ
ํ๋ก์ ํธ๋ฅผ ๋ฐ์ ํ ChatGPT์๊ฒ ๋ค์์ฒ๋ผ ์์ฒญํ ์ ์์ต๋๋ค.
```text
์ด windows-scoped-remote-mcp-server ํ๋ก์ ํธ์ Blender MCP๋ฅผ ์ถ๊ฐํด์ค.
AGENTS.md์ skills/add-remote-mcp-provider/SKILL.md๋ฅผ ๋จผ์ ์ฝ๊ณ
๊ธฐ์กด RemoteMcpProvider / ProviderRegistry ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ ์์
ํด์ค.
Blender MCP์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ํ์ํ ์ค์ ์ ํ์ธํ๊ณ
blender_* namespace๋ฅผ ์ฌ์ฉํด์ค.
ํ
์คํธ์ ๋ฌธ์๋ ์
๋ฐ์ดํธํ๊ณ typecheck์ ์ ์ฒด ํ
์คํธ๊น์ง ์คํํด์ค.
```
์์ธํ ์ ์ฐจ๋ `skills/add-remote-mcp-provider/SKILL.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## Provider๊ฐ ๊บผ์ ธ ์์ด๋ WSR์ ๊ณ์ ์คํ๋ฉ๋๋ค
Remote MCP๋ ์ ํ์ ์์กด์ฑ์
๋๋ค.
```text
Godot MCP OFF
โ
โผ
Godot Provider = unavailable
โ
โโโ WSR Core โ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅ
โโโ Playwright โ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅ
โโโ ๋ค๋ฅธ Provider โ ๊ณ์ ์ฌ์ฉ ๊ฐ๋ฅ
```
Provider ์ฐ๊ฒฐ ์คํจ ๋๋ฌธ์ WSR ์ ์ฒด๊ฐ ์ข
๋ฃ๋์ง ์์ต๋๋ค.
Provider-specific tool์ ํธ์ถํ์ ๋ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฉด ๋ช
ํํ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
```text
MCP provider 'godot' (godot) is not connected.
Start the godot MCP server/editor and try again.
```
ํ์ฌ ์ํ๋ `mcp_provider_status` tool๋ก ํ์ธํ ์ ์์ต๋๋ค.
---
## Provider Scheduler
WSR์ `ProviderScheduler`๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ์ฌ Remote MCP์ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
```text
ProviderScheduler
โ
โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโ
โผ โผ
CONNECTED UNAVAILABLE
โ โ
tools/list reconnect
โ โ
๋ณ๊ฒฝ ์ฌ๋ถ ํ์ธ tools/list
โ โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
โผ
Tool Registry ๊ฐฑ์
```
๊ธฐ๋ณธ๊ฐ:
- ์ฐ๊ฒฐ๋ Provider health check: **10์ด**
- ์ฐ๊ฒฐ๋์ง ์์ Provider retry: **5์ด**
ํ๊ฒฝ๋ณ์๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
```env
MCP_PROVIDER_HEALTH_INTERVAL_MS=10000
MCP_PROVIDER_RETRY_INTERVAL_MS=5000
```
### MCP๋ฅผ ์ผฐ๋ค ๊บผ๋ ์๋์ผ๋ก ๋ฐ๋ผ๊ฐ๋๋ค
```text
WSR ์คํ
โ
Godot OFF
โ
Provider unavailable
โ
Godot ์คํ
โ
Scheduler๊ฐ ์๋ ๋ฐ๊ฒฌ
โ
tools/list
โ
godot_* Tool Registry ๊ฐฑ์
```
๋ฐ๋ผ์ Provider๋ฅผ ์ผ๊ฑฐ๋ ๋ค์ ์คํํ๊ธฐ ์ํด WSR ์์ฒด๋ฅผ ์ฌ์์ํ ํ์๊ฐ ์์ต๋๋ค.
Remote MCP์ Tool ์ ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด `tools/list` ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ์ฌ Registry snapshot๋ ๊ฐฑ์ ํฉ๋๋ค.
Remote MCP์ Tool ์ ์๊ฐ ๋ฐ๋๋ฉด Registry snapshot์ ๊ฐฑ์ ํ ๋ค, ์ง์ํ๋ modern MCP ํด๋ผ์ด์ธํธ์๋ ํ์ค `tools/list_changed` ์๋ฆผ์ fan-outํฉ๋๋ค. ์๋ฆผ์ ์ง์ํ์ง ์๋ legacy ํด๋ผ์ด์ธํธ๋ ๋ค์ `tools/list` ์์ฒญ์์ ์ต์ Registry๋ฅผ ๋ฐ์ต๋๋ค. Provider์ ์คํ/์ข
๋ฃ๋ Tool ๋ชฉ๋ก ๋ณ๊ฒฝ ๋๋ฌธ์ WSR ์์ฒด๋ฅผ ๋ค์ ์์ํ ํ์๋ ์์ต๋๋ค.
---
## ํ๋ก์ ํธ ์์
์ธ๊ณ์ ์ฌ๊ฐ
WSR์ Codex, ChatGPT/WSR ๋ฑ ์๋ก ๋ค๋ฅธ AI ์์
ํ๊ฒฝ ์ฌ์ด์์ **๋ํ ๊ธฐ๋ก์ด ์๋๋ผ ์ ์ฅ์ ์์ฒด๋ฅผ ๊ณตํต ๊ธฐ์ค**์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
๊ณตํต ๊ธฐ์ค์ Git ์ํ, `AGENTS.md`, Roadmap, TODO, Session/Handoff ๋ฌธ์์
๋๋ค.
`workspace_context`๋ ๋ฑ๋ก๋ Workspace๋ฅผ ์ ํํ์ง ์๊ณ ๋ค์ ์ ๋ณด๋ฅผ read-only๋ก ์์งํฉ๋๋ค.
- ํ์ฌ Git branch / HEAD / dirty ์ํ / ์ต๊ทผ commit
- `AGENTS.md` ๋๋ `AGENT.md`
- Roadmap
- ์ต๊ทผ Session/Handoff ๋ฌธ์
- TODO ๋ฌธ์
`workspace_resume`๋ ์ด ์ ๋ณด๋ฅผ ๋ค์ ํด์ํด ์์
์ฌ๊ฐ์ ํ์ํ ํํธ๋ฅผ ๊ตฌ์กฐํํฉ๋๋ค.
```text
workspace_context(workspace="ec")
workspace_resume(workspace="ec")
โ branch/session ๋ถ์ผ์น ๊ฒฝ๊ณ
โ dirty ๋ณ๊ฒฝ ์์ญ ์์ฝ
โ Roadmap์ ๋ค์ ์์
โ ์ต์ handoff ๊ธฐ์ค resume summary
```
๋ Tool ๋ชจ๋ ๋์ Workspace๋ฅผ ์ ํํ๊ฑฐ๋ ์์ ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ChatGPT์์ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํ๋ฅผ ํ์ธํ๋ฉด์ ํ์ฌ ํ์ฑ Workspace๋ฅผ ๊ทธ๋๋ก ์ ์งํ ์ ์์ต๋๋ค.
์์ธํ ๋์์ `docs/workspace-context.md`์ `docs/workspace-resume.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## WSR ์ด์ ์ํ ์ง๋จ
`wsr_status`๋ ์ฌ๋ฌ ๊ฐ์ ์ง๋จ Tool์ ๋ฐ๋ก ํธ์ถํ์ง ์๊ณ WSR์ ํต์ฌ ์ด์ ์ํ๋ฅผ ํ ๋ฒ์ ํ์ธํ๋ read-only Tool์
๋๋ค.
์ฃผ์ ์ ๋ณด:
- WSR version / Git commit / uptime / Node version
- active Workspace์ ๋ฑ๋ก Workspace ์
- Provider ์ฐ๊ฒฐ ์ํ์ Tool ๊ฐ์
- Browser manager ์ด๊ธฐํ/ํ์ด์ง ์ํ
- cloudflared ์ค์น ๋ฐ ๋ฒ์
- public endpoint, OAuth, static auth, Tunnel token์ **์ค์ ์ฌ๋ถ**
- ์ด์์ ์ฃผ์๊ฐ ํ์ํ warning
์๋ต์๋ ์ค์ token/password/cookie/session ๊ฐ์ด๋ Provider raw error๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. WSR ์์ ๋ก๊ทธ์ Tunnel ์ฐ๊ฒฐ ๋ก๊ทธ ์ญ์ Bearer token ์๋ฌธ์ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ `docs/wsr-status.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## Multi-Workspace
์ฌ๋ฌ ํ๋ก์ ํธ๋ฅผ ํ๋์ WSR์์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
```env
MCP_WORKSPACE_FILE=workspaces.local.json
```
`workspaces.example.json`์ `workspaces.local.json`์ผ๋ก ๋ณต์ฌํ ๋ค Workspace๋ฅผ ํ ํญ๋ชฉ์ฉ ๋ฑ๋กํฉ๋๋ค. ํ์ผ์ ๋ฑ๋ก๋ ์ฒซ ๋ฒ์งธ Workspace๊ฐ ์๋์ผ๋ก ํ์ฑ Workspace๊ฐ ๋ฉ๋๋ค. ๋ณ๋์ `MCP_WORKSPACE_ROOT` ์ค์ ์ ํ์ํ์ง ์์ต๋๋ค. ๊ธฐ์กด `MCP_WORKSPACE_ROOTS` ํ ์ค ํ์์ ํธํ์ฑ์ ์ํด ๊ณ์ ์ง์๋ฉ๋๋ค.
ํ์ฑ Workspace ์ํ๋ MCP ์ธ์
๋ณ๋ก ๋
๋ฆฝ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์๋ก ๋ค๋ฅธ ChatGPT ์ฑํ
์์ ๊ฐ๊ฐ `game`, `tools`์ฒ๋ผ ๋ค๋ฅธ Workspace๋ฅผ ์ ํํด๋ `switch_workspace` ์ํ๊ฐ ๋ค๋ฅธ ์ฑํ
์ผ๋ก ์ ํ๋์ง ์์ต๋๋ค. MCP 2025-era๋ `Mcp-Session-Id`, ChatGPT์ MCP 2026-07-28 ์ฐ๊ฒฐ์ `x-openai-session`์ ๊ธฐ์ค์ผ๋ก ์ธ์
์ ๊ตฌ๋ถํฉ๋๋ค.
Workspace ๊ฒฝ๊ณ๋ฅผ ๋ฒ์ด๋ ํ์ผ ๋ฐ ๋ช
๋ น ์ ๊ทผ์ SandboxGuard๊ฐ ์ฐจ๋จํฉ๋๋ค. ์ธ๋ถ ๊ตฌํ์ `docs/session-scoped-workspaces.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## Playwright
Playwright๊ฐ ํตํฉ๋์ด ์ค์ ๋ธ๋ผ์ฐ์ ๋ฅผ MCP๋ฅผ ํตํด ์กฐ์ํ ์ ์์ต๋๋ค.
```text
ChatGPT
โ
"๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง๋ฅผ ์ด๊ณ ๋ฒํผ์ ๋๋ฌ์ค"
โ
WSR
โ
Playwright
โ
์ค์ ๋ธ๋ผ์ฐ์
```
์ง์ ์:
- URL ์ด๋
- ์์ ํด๋ฆญ
- ์
๋ ฅ/ํผ ์์ฑ
- ํค๋ณด๋ ์
๋ ฅ
- ํ์ด์ง ๋ด์ฉ ์กฐํ
- JavaScript ํ๊ฐ
- ์คํฌ๋ฆฐ์ท
- ๋ธ๋ผ์ฐ์ ์ธ์
๊ด๋ฆฌ
---
## ์ค์น
```cmd
git clone <repository-url>
cd windows-scoped-remote-mcp-server
npm install
copy .env.example .env
copy workspaces.example.json workspaces.local.json
npm run build
npm test
```
Windows์์๋ CMD/PowerShell์ฉ `start.bat`์ Git Bash์ฉ `start.sh`๋ฅผ ๋ชจ๋ ์ง์ํฉ๋๋ค.
```cmd
start.bat
```
```bash
./start.sh
# ๋๋
bash start.sh
```
๋ ์์ ์คํฌ๋ฆฝํธ๋ `uvx`๊ฐ ์์ผ๋ฉด Astral ๊ณต์ ์ค์น ์คํฌ๋ฆฝํธ๋ก `uv`/`uvx` ์ค์น๋ฅผ ์๋ํ๊ณ , ํ์ฌ ํ๋ก์ธ์ค PATH์ `%USERPROFILE%\.local\bin`์ ๋ฐ์ํฉ๋๋ค. ๋ํ `bin\cloudflared.exe`๊ฐ ์์ผ๋ฉด ์ต์ Windows 64-bit ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ด๋ ค๋ฐ์ต๋๋ค. ๋ฐ์ด๋๋ฆฌ๊ฐ ์ค๋น๋ ๋ค์๋ ํ์ฌ ๋ฒ์ ์ ํ์ํ๊ณ `cloudflared update`๋ก ๊ณต์ ์
๋ฐ์ดํธ ์๋ฒ๋ฅผ ํ์ธํฉ๋๋ค. ์
๋ฐ์ดํธ ํ์ธ์ด ์คํจํด๋ ๊ธฐ์กด ๋ฐ์ด๋๋ฆฌ๋ก WSR ์์์ ๊ณ์ํฉ๋๋ค.
WSR์ Windows ๊ธฐ๋ณธ ์
ธ์ ์๋์ผ๋ก ์ ํ๋ฉ๋๋ค. Git Bash๊ฐ ์ค์น๋์ด ์์ผ๋ฉด PATH ๋ฑ๋ก ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ผ๋ฐ์ ์ธ Git for Windows ์ค์น ๊ฒฝ๋ก๊น์ง ํ์ํด Git Bash๋ฅผ ์ฐ์ ์ฌ์ฉํฉ๋๋ค. Git Bash๋ฅผ ์ฐพ์ง ๋ชปํ๋ฉด PowerShell 7(`pwsh`)์ ์ฌ์ฉํ๋ฉฐ, PowerShell 7๋ ์์ผ๋ฉด `winget`์ผ๋ก ์ค์น๋ฅผ ์๋ํฉ๋๋ค.
---
## ChatGPT์ WSR ์ฐ๊ฒฐ
์ต๊ทผ ChatGPT์์๋ WSR ๊ฐ์ Remote MCP ์๋ฒ๋ฅผ ๋จผ์ **Custom MCP app**์ผ๋ก ๋ฑ๋กํฉ๋๋ค. ํ์ํ๋ค๋ฉด ์ด MCP app์ ๋ณ๋์ Plugin ๊ตฌ์ฑ์ ํฌํจํ ์ ์์ง๋ง, WSR ์์ฒด ์ฐ๊ฒฐ ์ ์ฐจ๋ MCP app ์์ฑ ํ๋ฆ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํฉ๋๋ค.
๋จผ์ WSR๊ณผ Cloudflare Tunnel์ ์คํํ ์ํ์์ ์ค์ MCP endpoint๋ฅผ ํ์ธํฉ๋๋ค.
```text
MCP_PUBLIC_URL=https://mcp.example.com
MCP_ENDPOINT=/mcp
ChatGPT์ ์
๋ ฅํ MCP endpoint:
https://mcp.example.com/mcp
```
์ค์: `MCP_PUBLIC_URL`์ **๊ธฐ๋ณธ ๊ณต๊ฐ URL**์ด๋ฉฐ ๊ธฐ๋ณธ MCP ๊ฒฝ๋ก `/mcp`๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ChatGPT์ ๋ฑ๋กํ ๋๋ `MCP_PUBLIC_URL + MCP_ENDPOINT`๋ฅผ ์ฌ์ฉํฉ๋๋ค. `MCP_ENDPOINT`๋ฅผ ๋ฐ๋ก ๋ฐ๊พธ์ง ์์๋ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ `/mcp`์
๋๋ค.
ChatGPT ์ชฝ ๋ฑ๋ก ์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ChatGPT์ **Settings โ Apps โ Create**๋ก ์ด๋ํฉ๋๋ค. ๊ด๋ฆฌํ Workspace์์๋ **Workspace Settings โ Apps โ Create** ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2. ๊ณ์ /Workspace ์ ์ฑ
์ ํ์ํ ๊ฒฝ์ฐ Developer mode๋ฅผ ํ์ฑํํฉ๋๋ค. ๋ฉ๋ด ์์น๋ ํ๋๊ณผ Workspace ๊ถํ์ ๋ฐ๋ผ **Settings โ Apps โ Advanced Settings** ๋๋ Workspace ์ค์ ์ ์์ ์ ์์ต๋๋ค.
3. ์ Custom MCP app์ ๋ง๋ค๊ณ ์ด๋ฆ(์: `wsr`)๊ณผ MCP endpoint๋ฅผ ์
๋ ฅํฉ๋๋ค.
4. ์ธ์ฆ ๋ฐฉ์์ **OAuth**๋ฅผ ์ ํํฉ๋๋ค.
5. **Scan Tools**๋ฅผ ์คํํฉ๋๋ค. WSR OAuth ์น์ธ ํ๋ฉด์ด ์ด๋ฆฌ๋ฉด `.env`์ `MCP_AUTH_TOKEN` ๊ฐ์ ์
๋ ฅํ๊ณ ์น์ธํฉ๋๋ค.
6. Tool scan์ด ๋๋๋ฉด app ์์ฑ์ ์๋ฃํฉ๋๋ค.
์์:
```text
Name: wsr
MCP endpoint: https://mcp.example.com/mcp
Authentication: OAuth
```
Godot, Blender ๋ฑ Provider๋ฅผ ์๋ก ํ์ฑํํ๊ฑฐ๋ Provider ๋ฒ์ ๋ณ๊ฒฝ์ผ๋ก Tool ๋ชฉ๋ก์ด ๋ฐ๋๋ฉด ChatGPT์ WSR app ์ค์ ์์ **Refresh / Scan Tools**๋ฅผ ๋ค์ ์คํํด์ผ ํฉ๋๋ค. ChatGPT๋ ์น์ธ๋ MCP Tool ๊ตฌ์ฑ์ ์๋์ผ๋ก ์ฆ์ ๊ฐฑ์ ํ์ง ์์ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ํ์๋ ์ ์ฑํ
์์ WSR app์ ์ ํํ ๋ค ๋ค์์ฒ๋ผ ํ์ธํ ์ ์์ต๋๋ค.
```text
"WSR ์ํ ํ์ธํด์ค" โ wsr_status
"์ํฌ์คํ์ด์ค ๋ชฉ๋ก ํ์ธํด์ค" โ list_workspaces
"Provider ์ฐ๊ฒฐ ์ํ ํ์ธํด์ค" โ mcp_provider_status
```
---
## ์ฃผ์ ํ๊ฒฝ๋ณ์
| ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
| :-------------------------------- | :-------------------------- | :------------------------------------- |
| `MCP_PORT` | `12000` | WSR HTTP ์๋ฒ ํฌํธ |
| `MCP_WORKSPACE_FILE` | ์์ | Workspace JSON ํ์ผ. ์ฒซ ํญ๋ชฉ์ด ํ์ฑ Workspace |
| `MCP_WORKSPACE_ROOTS` | ํ์ฌ ๊ฒฝ๋ก | ๋ ๊ฑฐ์ ํ ์ค Multi-Workspace ํ์ |
| `MCP_AUTH_TOKEN` | ์์ | ์ธ์ฆ์ฉ ํ ํฐ |
| `MCP_PUBLIC_URL` | ์์ | ๊ณต๊ฐ ๊ธฐ๋ณธ URL (`/mcp` ์ ์ธ) |
| `MCP_ENDPOINT` | `/mcp` | ChatGPT๊ฐ ์ฐ๊ฒฐํ MCP ๊ฒฝ๋ก |
| `CLOUDFLARE_TUNNEL_TOKEN` | ์์ | Cloudflare Tunnel ํ ํฐ |
| `MCP_BROWSER_HEADLESS` | `false` | Playwright Headless ์ฌ๋ถ |
| `MCP_PROVIDER_HEALTH_INTERVAL_MS` | `10000` | ์ฐ๊ฒฐ๋ Provider ๊ฒ์ฌ ์ฃผ๊ธฐ(ms) |
| `MCP_PROVIDER_RETRY_INTERVAL_MS` | `5000` | ์ฐ๊ฒฐ๋์ง ์์ Provider ์ฌ์ฐ๊ฒฐ ์ฃผ๊ธฐ(ms) |
| `MCP_NEEDLE_ENABLED` | `false` | Needle 3 Fast Tool Router ํ์ฑํ |
| `MCP_NEEDLE_PYTHON` | `python` | Needle sidecar Python ์คํ ๋ช
๋ น |
| `MCP_NEEDLE_CONFIDENCE_THRESHOLD` | `0.70` | ์ถ์ฒ์ผ๋ก ์ธ์ ํ ์ต์ confidence |
| `MCP_NEEDLE_TOOL_INDEX_PATH` | `.cache/needle/wsr-tools.idx` | Needle Tool index ๊ธฐ์ค ๊ฒฝ๋ก |
| `MCP_NEEDLE_REQUEST_TIMEOUT_MS` | `60000` | Needle ์์ฒญ timeout(ms) |
| `MCP_NEEDLE_MAX_CATALOG_TOOLS` | `24` | Needle์ ์ ๋ฌํ ์ ์ฒด Tool ์ํ |
| `MCP_GODOT_ENABLED` | `false` | Godot AI MCP Provider ํ์ฑํ |
| `MCP_GODOT_COMMAND` | `uvx` | Godot AI attach ์คํ์ฉ uvx ๋ช
๋ น |
| `MCP_GODOT_VERSION` | `4.3.0` | Godot AI Python package ๋ฒ์ |
| `MCP_GODOT_HTTP_PORT` | `8001` | Godot AI HTTP ํฌํธ |
| `MCP_GODOT_WS_PORT` | `8002` | Godot AI WebSocket ํฌํธ |
| `MCP_BLENDER_ENABLED` | `false` | Blender MCP Provider ํ์ฑํ |
| `MCP_BLENDER_COMMAND` | `uvx` | Blender MCP stdio ์คํ ๋ช
๋ น |
| `MCP_BLENDER_VERSION` | `1.0.3` | Blender Lab ๊ณต์ MCP ์๋ฒ ๋ฒ์ |
| `MCP_BLENDER_HOST` | `127.0.0.1` | Blender add-on socket host |
| `MCP_BLENDER_PORT` | `9876` | Blender add-on socket port |
| `MCP_WINDOWS_ENABLED` | `false` | Windows Computer Use Provider ํ์ฑํ |
| `MCP_WINDOWS_COMMAND` | `uvx` | Windows-MCP stdio ์คํ ๋ช
๋ น |
| `MCP_WINDOWS_TOOLS` | UI allowlist | WSR์ ๋
ธ์ถํ Windows-MCP ๋๊ตฌ ๋ชฉ๋ก |
| `MCP_GAS_ENABLED` | `false` | Game Assets Studio MCP Provider ํ์ฑํ |
| `MCP_GAS_URL` | `http://127.0.0.1:52214/mcp` | GAS Desktop MCP endpoint |
### Needle 3 Fast Tool Router
Needle์ ์ ํ ๊ธฐ๋ฅ์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋ฉ๋๋ค. ํ์ฑํํ๋ ค๋ฉด ๋จผ์ ๋ก์ปฌ Python์ `cactus-needle`์ ์ค์นํ๊ณ ๋ค์์ฒ๋ผ ์ค์ ํฉ๋๋ค.
```bash
python -m pip install cactus-needle
```
```env
MCP_NEEDLE_ENABLED=true
MCP_NEEDLE_PYTHON=python
MCP_NEEDLE_CONFIDENCE_THRESHOLD=0.70
```
`needle_route`๋ Tool์ ์คํํ์ง ์๊ณ ์ถ์ฒ๋ง ๋ฐํํฉ๋๋ค. AI ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์์ ์ธ์ด์ ๊ด๊ณ์์ด ์์ฒญ์ ์งง์ ์์ด canonical command๋ก ์ ๊ทํํด์ `query`์ ๋ฃ๊ณ , ์๋ฌธ์ ํ์ํ๋ฉด `originalQuery`๋ก ํจ๊ป ์ ๋ฌํฉ๋๋ค. Workspace alias, ๊ฒฝ๋ก, URL, branch, object/schema/table ์ด๋ฆ ๊ฐ์ literal ๊ฐ์ ๋ฒ์ญํ์ง ์์ต๋๋ค.
Provider๊ฐ ๋ช
ํํ ์์ฒญ์ `scope="providers"`์ `providerId`๋ก ์ขํ๊ณ , Core ์์ฒญ์ `scope="core"`๋ฅผ ์ฌ์ฉํฉ๋๋ค. confidence๊ฐ threshold ๋ฏธ๋ง์ด๊ฑฐ๋ `escalate=true`๋ฉด ์ผ๋ฐ LLM reasoning์ผ๋ก fallbackํฉ๋๋ค.
๋ฏผ๊ฐํ ํ ํฐ๊ณผ ๋น๋ฐ๋ฒํธ๋ `.env`์๋ง ์ ์ฅํ๊ณ Git์ ์ปค๋ฐํ์ง ๋ง์ธ์.
---
## ๊ฐ๋ฐ
```cmd
npm run typecheck
npm test
npm run build
```
MCP SDK๋ v2 split package ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฒ ๋ฐ `createMcpHandler`: `@modelcontextprotocol/server`
- Node/Express adapter: `@modelcontextprotocol/node`
- Streamable HTTP Provider client: `@modelcontextprotocol/client`
- legacy SSE / stdio Provider compatibility client: `@modelcontextprotocol/sdk`
- ๊ธฐ์กด ๋ด์ฅ OAuth Authorization Server ํธํ ๊ณ์ธต: `@modelcontextprotocol/server-legacy/auth`
๋ง์ง๋ง ํญ๋ชฉ์ ๊ณต์ v1โv2 ๋ง์ด๊ทธ๋ ์ด์
๋ธ๋ฆฌ์ง์ด๋ฉฐ deprecated ์ํ์
๋๋ค. discovery ๋ณต๊ตฌ์ ๊ธฐ์กด OAuth ๋์ ๋ณด์กด์ ์ํด ์ ์งํ๋, ์ฅ๊ธฐ์ ์ผ๋ก๋ ์ ์ฉ OAuth/IdP ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
์ MCP Provider๋ฅผ ์ถ๊ฐํ ๋๋ ๋ค์ ๋ฌธ์๋ฅผ ๋จผ์ ์ฝ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- `AGENTS.md` โ ํ๋ก์ ํธ ์์
๊ท์น
- `docs/mcp-gateway-architecture.md` โ Gateway / Provider ๊ตฌ์กฐ
- `docs/workspace-context.md` โ Workspace ์์
์ํ ์์ง
- `docs/workspace-resume.md` โ ์์
์ฌ๊ฐ ํํธ
- `docs/provider-tool-change-notifications.md` โ Provider Tool ๋ณ๊ฒฝ ์๋ฆผ
- `docs/wsr-status.md` โ WSR ์ด์ ์ง๋จ
- `skills/add-remote-mcp-provider/SKILL.md` โ MCP ์ถ๊ฐ ์ ์ฐจ
- `skills/test-mcp-provider/SKILL.md` โ Provider ํ
์คํธ
- `skills/debug-mcp-gateway/SKILL.md` โ MCP ๋ฌธ์ ํด๊ฒฐ
---
## ์ค์ ๊ฒ์ฆ ์ฌ๋ก
ํ์ฌ WSR์ Godot MCP์ ์ค์ ์ฐ๊ฒฐํ์ฌ ๋ค์ ์์
์ ๊ฒ์ฆํ์ต๋๋ค.
```text
ChatGPT
โ
WSR
โ
Godot MCP
โ
Godot Editor
โ
Scene ์์ฑ / ์์ / ์ ์ฅ
```
ํ
์คํธ Scene:
```text
res://mcp_test.tscn
McpTest (Node3D)
โโโ TestCube (MeshInstance3D)
โโโ Camera3D
โโโ DirectionalLight3D
```
์ด ํ๋ฆ์ WSR์ด ๋จ์ํ ํ์ผ MCP๊ฐ ์๋๋ผ ์ค์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ฐ๊ฒฐํ๋ Gateway๋ผ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ํ์ ์ธ ํ
์คํธ ์ฌ๋ก์
๋๋ค.
---
## ๋ณด์ ์์น
WSR์ ๊ฐ๋ฐ ์๋ํ๋ฅผ ์ํด ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก ๋ค์ ์์น์ ์ค์ํ๊ฒ ์ทจ๊ธํฉ๋๋ค.
- Workspace ์ธ๋ถ ์ ๊ทผ์ SandboxGuard๋ก ์ ํํฉ๋๋ค.
- ๋ค๋ฅธ Workspace๋ฅผ ์์ ํ์ง ์๋๋ก ๊ต์ฐจ Workspace ๊ถํ์ ๋ถ๋ฆฌํฉ๋๋ค.
- ์ธ์ฆ ํ ํฐ๊ณผ Cloudflare Tunnel ํ ํฐ์ ์์ค ์ฝ๋์ ์ ์ฅํ์ง ์์ผ๋ฉฐ, ์ด์ ๋ก๊ทธ์๋ Bearer token ์๋ฌธ์ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
- ๋ณด์ ๊ธฐ๋ฅ์ ์ ๋์ ์ธ ์์ ๋ณด์ฅ์ผ๋ก ํํํ์ง ์๊ณ ์ค์ ๋ ๊ฒฝ๊ณ์ ๊ถํ ๋ชจ๋ธ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํฉ๋๋ค.
- ์๊ฒฉ MCP Provider ํ๋์ ์ฅ์ ๊ฐ ์ ์ฒด Gateway ์ฅ์ ๋ก ์ด์ด์ง์ง ์๋๋ก ๊ฒฉ๋ฆฌํฉ๋๋ค.
---
## License
MIT License
## Blender Lab ๊ณต์ MCP
WSR์ Blender Lab **๊ณต์ MCP** ์๋ฒ๋ฅผ ๋ก์ปฌ stdio Provider๋ก ์คํํฉ๋๋ค. Blender์ Preferences โ Get Extensions์์ Blender Lab ์ ์ฅ์์ `MCP` ํ์ฅ ๊ธฐ๋ฅ์ ์ค์นํ๊ณ ํ์ฑํํฉ๋๋ค. Blender ํ์ฅ ๊ธฐ๋ฅ์ `9876` ์์ผ์ MCP HTTP ์๋ํฌ์ธํธ๊ฐ ์๋๋๋ค. WSR์ ๊ณต์ Python MCP ์๋ฒ๋ฅผ stdio๋ก ์คํํ์ฌ ์ด ์์ผ์ ์ฐ๊ฒฐํฉ๋๋ค.
Blender ํ์ฅ ๊ธฐ๋ฅ Preferences์์ `Server is running`์ ํ์ธํ๊ณ , `uvx` ๋ฐ Python 3.12๋ฅผ ์ค๋นํ ๋ค ๋ฃจํธ `.env`๋ฅผ ์ค์ ํฉ๋๋ค.
```env
MCP_BLENDER_ENABLED=true
MCP_BLENDER_COMMAND=uvx
MCP_BLENDER_VERSION=1.0.3
MCP_BLENDER_HOST=127.0.0.1
MCP_BLENDER_PORT=9876
```
๊ณต์ MCP ์๋ฒ๋ `https://projects.blender.org/lab/blender_mcp`์ `v1.0.3` ์์ค๋ฅผ `uvx --python 3.12`๋ก ์คํํฉ๋๋ค. ์์ผ ํต์ ํ๊ฒฝ๋ณ์๋ `BLENDER_MCP_HOST`, `BLENDER_MCP_PORT`์
๋๋ค. ์ฐ๊ฒฐ๋ ๋๊ตฌ๋ `blender_*` namespace๋ก ๋
ธ์ถ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ `docs/blender-mcp-provider.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## Windows Computer Use MCP
WSR์ CursorTouch/Windows-MCP๋ฅผ local stdio Provider๋ก ์คํํ ์ ์์ต๋๋ค. ๋ณ๋ ์์ค๋ฅผ `mcp-servers/`์ ๋ณต์ฌํ์ง ์๊ณ `uvx windows-mcp serve`๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ์ฒซ WSR ์์ ์ uv๊ฐ ํจํค์ง์ ์์กด์ฑ์ ๋ด๋ ค๋ฐ์ ์บ์ํ๊ณ ์ดํ WSR ์๋ช
๊ณผ ํจ๊ป ์คํ/์ข
๋ฃํฉ๋๋ค.
๊ธฐ๋ณธ allowlist๋ Windows ํ๋ฉด ๊ด์ฐฐ๊ณผ UI ์
๋ ฅ์ ํ์ํ ๋๊ตฌ๋ง ์ ์งํฉ๋๋ค. `App`, `PowerShell`, `FileSystem`, `Process`, `Notification`, `Registry`, `Scrape`๋ WSR ๊ธฐ์กด ๊ธฐ๋ฅ๊ณผ ๊ฒน์น๊ฑฐ๋ ๊ถํ ๋ฒ์๊ฐ ๋๊ฑฐ๋ ํ์ฌ ๋ชฉ์ ์ ๋ถํ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ๋
ธ์ถํ์ง ์์ต๋๋ค.
```env
MCP_WINDOWS_ENABLED=true
MCP_WINDOWS_COMMAND=uvx
MCP_WINDOWS_TOOLS=DisplayInventory,Snapshot,Screenshot,Click,Type,Scroll,Move,Shortcut,Wait,WaitFor,MultiSelect,MultiEdit,Clipboard
```
Provider ์คํ ํ๊ฒฝ์์๋ Python UTF-8 ๋ชจ๋๋ฅผ ๊ฐ์ ํ๊ณ Windows-MCP ์ต๋ช
telemetry๋ฅผ ๋๋ฉฐ screenshot flash overlay๋ ๋นํ์ฑํํฉ๋๋ค. ์ฐ๊ฒฐ๋ ๋๊ตฌ๋ `windows_*` namespace๋ก ๋
ธ์ถ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ `docs/windows-computer-use-provider.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
---
## PostgreSQL MCP (CrystalDBA)
WSR์ Remote MCP Provider๋ณ๋ก transport๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ํ์ฌ ๊ฒ์ฆ๋ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| Provider | Endpoint | Transport | Tools |
| --- | --- | --- | ---: |
| Godot | `http://127.0.0.1:8000/mcp` | Streamable HTTP | 45 |
| Blender Lab ๊ณต์ MCP 1.0.3 | `uvx --python 3.12` โ ๊ณต์ ์์ผ `127.0.0.1:9876` | stdio | 26 |
| Windows (CursorTouch/Windows-MCP) | `uvx windows-mcp serve` | stdio | 13 (๊ธฐ๋ณธ allowlist) |
| PostgreSQL (CrystalDBA postgres-mcp) | `http://127.0.0.1:10021/sse` | legacy SSE | 9 |
| Game Assets Studio (GAS) | `http://127.0.0.1:52214/mcp` | Streamable HTTP | 16 |
PostgreSQL Provider๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ฃจํธ `.env`์ ๋ค์ ๊ฐ์ ์ค์ ํฉ๋๋ค.
```env
MCP_POSTGRESQL_ENABLED=true
MCP_POSTGRESQL_URL=http://127.0.0.1:10021/sse
```
Docker ์คํ ํ๊ฒฝ์ `mcp-servers/postgres-mcp/`์ ์์ผ๋ฉฐ ์ค์ `DATABASE_URI`๋ ํด๋น ๋๋ ํฐ๋ฆฌ์ `.env`์๋ง ๋ก๋๋ค. DB ๋น๋ฐ๋ฒํธ๋ ์ค์ ์ฐ๊ฒฐ ๋ฌธ์์ด์ Git์ ์ปค๋ฐํ์ง ์์ต๋๋ค.
PostgreSQL MCP๊ฐ ์ ๊ณตํ๋ 9๊ฐ ๋๊ตฌ๋ WSR namespace ์ ์ฉ ํ `postgresql_*` ํํ๋ก ๋
ธ์ถ๋ฉ๋๋ค. ์ค์ ์ฐ๊ฒฐ์์๋ `list_schemas`, `list_objects`, `get_object_details`, `explain_query`, `analyze_workload_indexes`, `analyze_query_indexes`, `analyze_db_health`, `get_top_queries`, `execute_sql`์ ํ์ธํ์ต๋๋ค.
์์ธํ ์ค์น/์ด์ ๋ฐฉ๋ฒ์ `docs/postgresql-mcp-provider.md`์ `mcp-servers/postgres-mcp/README.md`๋ฅผ ์ฐธ๊ณ ํ์ธ์.
### Game Assets Studio MCP
GAS Desktop์ด ์คํ ์ค์ด๋ฉด WSR์ ๊ณ ์ localhost endpoint๋ฅผ Streamable HTTP Provider๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
```env
MCP_GAS_ENABLED=true
MCP_GAS_URL=http://127.0.0.1:52214/mcp
```
GAS ์์ฒด MCP๋ ๋ณ๋ Bearer ์ธ์ฆ ์์ด `127.0.0.1`์๋ง ๋ฐ์ธ๋ฉ๋ฉ๋๋ค. WSR์์๋ Provider id/namespace ๋ชจ๋ `gas`๋ฅผ ์ฌ์ฉํ๋ฉฐ ์๊ฒฉ `job_list` ๊ฐ์ Tool์ `gas_job_list` ํํ๋ก ๋
ธ์ถ๋ฉ๋๋ค. GAS Desktop์ด ๊บผ์ ธ ์์ด๋ WSR Core์ ๋ค๋ฅธ Provider๋ ๊ณ์ ๋์ํ๊ณ Scheduler๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฌ์ฐ๊ฒฐ์ ์๋ํฉ๋๋ค.
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues