FolderBridge MCP
FolderBridge MCP
简体中文 | English
[!TIP] FolderBridge 자체는 단일 파일 Windows 앱입니다:
FolderBridge.exe직접 다운로드 후 더블 클릭하세요. Python이나 Node.js 설치가 필요 없습니다. 바이너리는 GitHub Releases → latest release → Assets에 있습니다. 저장소의 소스 파일 목록에는 나타나지 않습니다. 웹용 ChatGPT의 경우 FolderBridge는 여전히 OpenAI가 별도로 배포하는 공식tunnel-client.exe를 사용합니다. 런처가 선택 과정을 안내합니다. EXE 및 선택적 SHA-256 체크섬 파일은 전체 릴리스 페이지에서도 열 수 있습니다.
AI 클라이언트와 사용자가 명시적으로 선택한 소수의 폴더 사이의 더 안전하고 로컬 우선 브리지입니다.
FolderBridge MCP는 제로 의존성 Python MCP 서버와 데스크톱 런처입니다. 웹의 ChatGPT 또는 로컬 stdio MCP를 지원하는 모든 클라이언트가 제한된 로컬 작업 영역을 검사하고 신중하게 편집할 수 있게 해줍니다. 공개 HTTP 서버, 임의 셸 액세스, 원격 측정, 조용한 백그라운드 서비스를 의도적으로 피합니다.
[!IMPORTANT] 이 프로젝트는 초기 공개 베타 단계입니다. 공격 표면을 줄여 주지만 운영 체제 샌드박스는 아닙니다. 신뢰하는 폴더와 저장소만 노출하세요.
0.5.1 하이라이트
브라우저 인증 GitHub 게시: 새로 번들된
git-publisher확장은 Git Credential Manager를 통해 GitHub 인증을 열고, OAuth 자격 증명을 Windows 자격 증명 관리자에 보관하며, 명시적 파일 허용 목록만 커밋하고, 현재 브랜치만 기존 GitHub HTTPS 원격으로 푸시할 수 있습니다. 모델에 토큰/PAT/비밀번호 필드가 노출되지 않습니다.Git 게시는 계속 제한됩니다: Publisher는 기존 스테이징 변경 사항, 자격 증명/키 유사 파일, 콘텐츠를 변환하는 Git 속성 및 안전하지 않은 저장소 로컬 Git 설정을 거부합니다.
git add .를 실행하지 않으며, 임의의 remote/ref를 허용하지 않고, 제한된 커밋에 대해 훅/서명을 비활성화하며, 강제 푸시를 하지 않습니다.네이티브 Microsoft Office 시각적 파이프라인: 번들된
office확장은 로컬에 설치된 Microsoft Office로.pptx,.docx,.xlsx를 렌더링할 수 있습니다. PowerPoint는 슬라이드를 PNG로 직접 내보내고, Word/Excel은 네이티브 고정 형식 레이아웃 엔진과 Windows PDF 렌더러를 사용하여 페이지 PNG를 생성합니다.Word를 실행하지 않고 Word 구조 읽기:
inspect_docx는 OOXML에서 단락, 스타일/번호 매기기, 표, 섹션/페이지 설정, 머리글/바닥글, 미디어, 하이퍼링크, 각주/미주 및 주석을 노출합니다.Excel을 실행하지 않고 Excel 구조/수식 읽기:
inspect_xlsx는 시트, 제한된 셀 범위, 수식 및 캐시된 값, 병합된 범위, 숨겨진 행/열, 정의된 이름, 계산 설정 및 외부 링크 부분을 노출합니다.감사 준비 출력: 네이티브 렌더링은 결정적 PNG 디렉터리와 함께 같은 위치의 ZIP을 작성하고 Office 소스 및 생성된 출력 모두에 대해 SHA-256/크기 메타데이터를 반환합니다. 기존
image_open도구는 각 페이지 또는 ZIP 구성원을 시각적으로 검사할 수 있습니다.Office 자동화는 제한됩니다: 작업 영역 기준의 비링크 경로만 허용됩니다. 매크로 사용 형식은 제외됩니다. Office 자동화 매크로는 강제로 비활성화됩니다. 파일은 읽기 전용으로 열립니다. Excel 링크 업데이트는 비활성화됩니다. 번들된 PowerShell 스크립트는 고정되어 있으며 임의의 명령을 허용하지 않습니다.
기존 0.4.x 안전성/UI 개선 사항 유지: 고DPI 스크롤, ComfyUI 관리 서비스 진단, 안정적인 확장 게이트웨이, 제한된 전역 기능, 단일 파일 Windows 배포는 변경되지 않았습니다.
전체 릴리스 기록은 CHANGELOG.md를, 관리 서비스 및 플러그인 경계는 Extension ABI v1을 참조하세요.
Related MCP server: Forge Workspace MCP Server
FolderBridge를 사용하는 이유
독립적인 폴더 경계: 하나의 연결에는 최대 8개의 정식 작업 영역이 포함될 수 있습니다. 모든 다중 작업 영역 도구 호출은 루트를 병합하는 대신
workspace_id를 선택합니다.기본적으로 읽기 전용: 런처에서 명시적으로 읽기/쓰기로 전환합니다.
충돌 방지 편집: 기존 파일은 마지막 읽기에서 반환된 SHA-256이 필요합니다. 오래된 편집은 최신 작업을 덮어쓰는 대신 실패합니다.
임의 셸 없음: 선택적 작업은 이름이 지정되고, 로컬에서 검토되며, 정확한 구성 해시로 승인됩니다.
공개 리스너 없음: MCP 서버는 stdio만 사용합니다.
원격 측정 없음: FolderBridge 자체는 네트워크 요청을 하지 않습니다.
비밀 인식 런처: OpenAI Runtime API 키는 메모리에 유지되며 로컬 MCP 프로세스가 사용할 수 있기 전에 제거됩니다.
초보자 친화적 데스크톱 UI: 폴더 추가/제거 목록, 전역 액세스 모드, Tunnel 설정, 진단, 시작/중지, 프로세스 모니터링, 마스킹된 로그가 하나의 창에 있습니다.
Windows 배율 지원: 글꼴과 창 크기는 현재 디스플레이 DPI를 따르며 배율이 다른 모니터 간에 이동할 때 새로 고쳐집니다.
빠른 시작
요구 사항은 FolderBridge 사용 방법에 따라 다릅니다.
독립 실행형 Windows EXE: 별도의 Python 또는 Node.js 설치가 필요 없습니다. Windows는 테스트된 더블 클릭 런처 환경입니다.
소스에서 실행/개발: Python 3.11 이상이 필요합니다. Python 3.11 x64가 권장 Windows 빌드 기준입니다.
프로젝트 기능: 작업 영역 자체에 필요한 도구 체인만 설치합니다(예: Node/npm 프로젝트의 테스트/빌드 스크립트용 Node.js LTS). 기능을 활성화해도 해당 도구 체인은 설치되지 않습니다.
Git은 선택 사항입니다. 제한된
status/diff보기는 Git을 사용할 수 있을 때 사용합니다. Git Publisher 확장은 브라우저 인증 GitHub 커밋/푸시를 위해 Git Credential Manager가 포함된 Git for Windows를 추가로 요구합니다.
Windows 실행 파일 — 권장
단일 FolderBridge.exe를 최신 GitHub 릴리스 Assets에서 다운로드하거나 EXE를 직접 다운로드하세요. 바이너리는 저장소의 소스 파일 목록에 나타나지 않습니다. FolderBridge.exe는 완전한 FolderBridge 애플리케이션이며 이미 Python 런타임을 포함하고 있으므로 일반 EXE 사용자는 Python이나 Node.js를 설치하지 않습니다. 인접한 FolderBridge.exe.sha256 파일은 선택 사항이며 무결성 검증을 위해서만 존재합니다.
단일 파일 실행 파일은 의도적으로 OpenAI가 독립적으로 배포한 tunnel-client를 다시 번들하지 않습니다. 공식 클라이언트를 OpenAI 릴리스에서 별도로 다운로드하고 웹에서 ChatGPT를 사용할 때만 런처에서 tunnel-client.exe를 선택하세요.
[!NOTE] 현재 커뮤니티 빌드는 코드 서명되지 않았으므로 Windows에서 게시자를 알 수 없음으로 식별합니다. 서명되지 않은 바이너리를 신뢰할 수 없다면 감사된 소스에서 직접 빌드하세요.
소스에서 실행
저장소를 클론하고 GUI를 시작하세요:
git clone https://github.com/MoonTzai/folderbridge-mcp.git
cd folderbridge-mcp
python .\folderbridge_launcher.py gui필요한 작업 영역을 추가하고, 첫 실행에서는 Read only를 선택한 상태로 유지한 후 상태 패널을 사용하여 설정을 완료하세요. 런처 기본 설정은 저장소 외부에 저장되며 Runtime API 키는 절대 저장되지 않습니다. 레거시 단일 작업 영역 설정은 자동으로 첫 번째 목록 항목으로 마이그레이션됩니다.
folderbridge_gui.pyw는 .pyw 연결이 Tkinter가 있는 인터프리터를 가리키는 Python 설치를 위한 소스 전용 편의 파일로 유지됩니다. 독립 실행형 FolderBridge.exe가 지원되는 더블 클릭 진입점입니다.
선택적 개발 및 프로젝트 도구 체인
이들은 일반적인 FolderBridge.exe 사용을 위한 전제 조건이 아닙니다:
소스 개발 또는 Windows EXE 재빌드를 위해 공식 Python Windows 다운로드에서 Python 3.11 x64를 설치하고
python --version을 확인하세요. 패키징 흐름은 격리된.build-venv와requirements-build.txt를 사용합니다.대상 Node/npm 작업 영역이 자체 테스트 또는 빌드 명령에
node/npm이 필요할 때만 공식 Node.js 다운로드에서 Node.js LTS를 설치하고node --version및npm --version으로 확인하세요.다른 프로젝트는 자체 런타임 또는 컴파일러가 필요할 수 있습니다. FolderBridge 기능은 인증과 제한된 검색/실행을 제공하며 종속성 설치는 제공하지 않습니다.
웹에서 ChatGPT 연결
ChatGPT는 로컬 stdio 프로세스에 직접 연결할 수 없습니다. FolderBridge는 이 경로에 OpenAI의 공식 Secure MCP Tunnel을 사용합니다. 필요한 것:
[!IMPORTANT] Secure MCP Tunnel은 이 컴퓨터에서 **아웃바운드 HTTPS(기본적으로 포트 443)**만 필요하며 인터넷에 노출되는 인바운드 포트가 필요 없습니다. FolderBridge를 위해 Windows 원격 데스크톱, 라우터 포트 포워딩, DMZ, UPnP 매핑 또는 포트
3389를 절대 활성화하지 마세요. 이들 중 어느 것도 Tunnel 설정의 일부가 아닙니다. 방화벽이 인바운드 액세스에 대해 묻는 경우 Tunnel을 작동시키기 위해 광범위한 공용 인바운드 규칙을 만들지 마세요.
OpenAI Platform Tunnel 설정에서
tunnel_id;같은 조직의 Runtime API Keys에서
tunnel-client용 키;공식
tunnel-client;계정 또는 작업 영역에 적합한 ChatGPT 개발자 모드 액세스.
런처 오른쪽 위의 连接设置向导 (연결 설정 가이드)를 클릭하면 아래의 동일한 단계와 바로 가기(선택적 Python/Node 부록 포함)를 볼 수 있습니다.
1. 공식 Windows x64 클라이언트 다운로드
[!WARNING] 완전한
tunnel-client-v<version>-windows-amd64.zip아카이브만 다운로드하세요.tunnel-client-runtime-*파일은 절대 다운로드하거나 선택하지 마세요. 런타임 파일은 내부 구성 요소이며 설정에 필요한init명령을 구현하지 않습니다. 이름이 비슷해도 “configuration failed”가 발생할 수 있습니다. 완전한 아카이브를 추출한 후 정확히tunnel-client.exe라는 이름의 기본 프로그램만 선택하세요.
최신
openai/tunnel-client릴리스를 열고 Assets를 펼치세요.tunnel-client-v<version>-windows-amd64.zip이라는 이름의 완전한 아카이브를 다운로드하세요. 릴리스 파일 이름에서amd64는 Windows x64를 의미하며 대부분의 Intel/AMD PC에 적합합니다.선택적으로
SHA256SUMS.txt를 다운로드하여 검증하세요.tunnel-client-runtime-*,windows-arm64,all.zip, 소스 코드 아카이브 또는 라이선스 파일을 선택하지 마세요. Runtime 아카이브는 완전한 클라이언트를 대체할 수 없습니다.전체 ZIP을 안정적인 폴더에 추출하세요. 설치 프로그램이 없으며 아카이브 내부에서 실행해서는 안 됩니다. 가이드는 권장 위치로
%LOCALAPPDATA%\FolderBridge\bin을 만들고 열 수 있습니다.FolderBridge로 돌아가 选择已解压的 EXE를 클릭하고 정확히
tunnel-client.exe라는 이름의 파일만 선택하세요.
2. Platform Tunnel 만들기
OpenAI Platform Tunnel 설정을 열고 Create tunnel을 클릭한 후 다음 현재 선택 사항을 사용하세요:
필드 | 권장 값 | 참고 사항 |
이름 |
| 사용자 지정 표시 이름 |
설명 |
| 필수 항목, 사용자 지정 가능 |
Organizations | 개인 계정의 경우 | 팀의 경우 이 Tunnel을 관리하는 Platform 조직을 선택하세요 |
ChatGPT workspaces | 앱을 만들 작업 공간 | 비워 두지 마세요. 개인 계정에는 일반적으로 작업 공간 ID가 하나 있습니다 |
생성 후 tunnel_로 시작하는 Tunnel ID를 복사하세요. 실행 및 선택에는 Tunnels Read + Use 권한이 필요하며, 생성 또는 편집에도 Manage 권한이 필요합니다. 이 로컬 작업 공간에 액세스해야 하는 조직과 ChatGPT 작업 공간만 연결하세요.
같은 Platform 조직의 Runtime API Keys에서 tunnel-client용 키를 생성하세요. 키 생성자에게는 Tunnels Read + Use 권한이 필요합니다. 이 키는 FolderBridge에만 붙여넣고, 프로세스 메모리에만 유지됩니다. Admin API 키는 사용하지 마세요. Runtime 키를 ChatGPT 앱의 Authentication 필드에 넣지 마세요.
3. FolderBridge 시작
명시적 작업 공간 폴더를 하나 이상(최대 8개) 추가하고 첫 실행에서는 읽기 전용(권장) 을 유지하세요. 전역 액세스 모드는 나열된 모든 폴더에 적용됩니다.
전체 아카이브에서
tunnel-client.exe를 선택하세요.tunnel-client-runtime-*구성 요소는 절대 선택하지 마세요. 기본folderbridge프로필로 충분합니다.동일한 Tunnel ID와 Runtime API 키를 입력하세요. 원하는 전역 기능을 한 번만 활성화할 수 있습니다. 사용자 지정 명령이 필요하지 않으면 작업 공간별 고급 명명 작업은 비활성화된 상태로 두세요.
연결 시작을 클릭하세요. 런처는 공식
init,doctor,run흐름을 실행합니다. 상단 상태가 运行中(실행 중)으로 표시된 후에만 계속 진행하세요. 나중에 폴더나 액세스 모드를 변경할 때는 应用配置(구성 적용)을 다시 클릭하세요. 런처는 관리하는 동일한 프로파일을 업데이트합니다.
4. ChatGPT 개발자 모드 앱 만들기
ChatGPT Plugins을 열고 **+**를 클릭한 후 다음 중요한 선택을 하세요:
필드 | 필수 선택 |
Connection | Tunnel |
Available Tunnel | 동일한 Tunnel을 선택하거나 |
Authentication | 인증 없음 |
[!WARNING] 양식을 기본 OAuth 선택으로 두지 마세요. Server URL에
https://tunnel-service...주소를 붙여넣지 마세요. FolderBridge는 사용자 OAuth를 구현하지 않으므로 해당 구성은does not implement OAuth오류를 생성합니다.
ChatGPT 대화에서 앱 호출
FolderBridge 상태를 运行中(실행 중)으로 유지한 후 새 ChatGPT 대화를 시작하세요.
작성기 옆의 **+**를 선택하고 More를 연 다음 방금 만든 FolderBridge 앱을 선택하세요.
다음과 같은 작업을 보내세요: "먼저 FolderBridge
server_info를 사용하여 사용 가능한 작업 공간을 나열한 다음, 제가 지정한 작업 공간의 루트를 읽으세요." 승인 전에 도구 확인에서workspace_id와 대상 파일을 검토하세요.
이 진입점은 OpenAI 공식 연결 및 테스트 가이드를 따릅니다. 런처의 연결 가이드에는 동일한 단계와 원클릭 복사 가능한 예제 프롬프트가 포함되어 있습니다.
ChatGPT가 작업 공간을 사용하는 동안 런처를 계속 실행하세요. 런처를 닫으면 Tunnel 프로세스가 중지됩니다. 계정 수준의 개발자 모드 및 앱 설치 확인은 ChatGPT에 남아 있습니다. FolderBridge는 브라우저 세션이나 보안 설정을 자동화하지 않습니다.
브라우저 확장 프로그램은 필요하지 않습니다. FolderBridge는 의도적으로 네트워크에서 전달된 바이너리를 자동으로 다운로드하거나 실행하지 않습니다.
다른 로컬 MCP 클라이언트 연결
예. FolderBridge의 호환성 접합부는 표준 MCP stdio 서버입니다. ChatGPT Tunnel은 로컬 프로세스를 시작할 수 없는 웹 클라이언트를 위한 브리지일 뿐입니다. MCP stdio 전송은 클라이언트가 서버 하위 프로세스를 시작하고 표준 입력/출력으로 JSON-RPC를 교환하도록 지정합니다. MCP stdio 사양
클라이언트 요구 사항
로컬 명령 + 인수 쌍을 구성하고 하위 프로세스를 계속 실행할 수 있어야 합니다.
stdio를 통한 MCP를 지원하며 프로토콜 메시지용으로 stdout을 예약해야 합니다.MCP 도구(
initialize,tools/list,tools/call또는 최신 2026-07-28 검색 흐름)를 검색하고 호출할 수 있어야 합니다.세션이 종료되면 stdin을 닫거나 하위 프로세스를 종료해야 합니다.
도구 승인 UX가 있는 클라이언트를 선호하지만, 해당 확인 대화 상자를 유일한 보안 경계로 취급하지 마세요.
FolderBridge는 현재 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, 2026-07-28 프로토콜 경로를 처리합니다. 표준 도구 스키마, 텍스트 콘텐츠 및 structuredContent를 반환합니다. 확인 프롬프트가 표시되는지 여부는 클라이언트에 따라 다릅니다. MCP 도구 사양
클라이언트 유형 | 직접 연결 가능? | 경로 |
stdio MCP를 지원하는 로컬 데스크톱 앱 또는 IDE | 예 |
|
결합된 명령 필드가 하나인 로컬 앱 | 일반적으로 가능 | 전체 stdio 명령을 붙여넣고 경로 따옴표를 유지하세요 |
원격 HTTP/SSE URL만 허용하는 클라이언트 | 아니요 | 해당 클라이언트의 공식 stdio 게이트웨이/프록시를 사용하거나 별도로 보호되는 MCP 브리지를 배포하세요 |
웹 전용, 모바일 또는 클라우드 샌드박스 | 일반적으로 로컬 PC에 연결 불가 | 작업 공간에 도달할 수 있는 신뢰할 수 있는 호스트에서 공급업체의 공식 Tunnel/원격 메커니즘을 사용하세요 |
가장 간단한 로컬 설정
FolderBridge에서 작업 공간을 하나 이상 추가하고 읽기 전용(권장) 을 유지하세요.
连接设置向导의 5페이지를 열고 JSON, TOML 또는 전체 stdio 명령을 복사하세요.
클라이언트의 MCP 서버 설정에 붙여넣고 해당 클라이언트의 정확한 필드 이름에 대한 문서를 따르세요.
클라이언트를 다시 시작하거나 새로 고치고
server_info및workspace가 나타나는지 확인하세요.
직접 stdio 연결에는 tunnel-client, Tunnel ID, Runtime API 키 또는 실행 중인 FolderBridge GUI가 필요 없습니다. 클라이언트는 필요할 때 이 명령을 시작합니다:
FolderBridge.exe serve --workspace C:\path\to\repo --read-only각 루트를 독립적으로 유지하면서 폴더를 추가하려면 --workspace를 반복하세요:
FolderBridge.exe serve --workspace C:\work\frontend --workspace C:\work\backend --read-only소스에서 붙여넣기 준비된 구성을 생성하세요:
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format json --read-only
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format toml --read-only
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format tunnel --read-onlyJSON 출력은 많은 데스크톱 클라이언트에서 사용하는 일반적인 mcpServers 규칙을 따릅니다:
{
"mcpServers": {
"folderbridge": {
"command": "C:\\Tools\\FolderBridge.exe",
"args": ["serve", "--workspace", "C:\\work\\frontend", "--workspace", "C:\\work\\backend", "--read-only"]
}
}
}[!IMPORTANT] JSON/TOML 최상위 키는 일반적인 규칙이지 보편적인 클라이언트 요구 사항이 아닙니다. 호환성은 궁극적으로 클라이언트가 명령/인자를 변경하지 않고 MCP stdio 하위 프로세스로 시작한다는 것을 의미합니다. 클라이언트가 URL만 허용하는 경우 이 릴리스에는 기본 제공 HTTP/SSE 리스너가 없습니다. 임시 로컬 포트를 공개 인터넷에 직접 노출하지 마세요.
프로토콜 버전, 프로세스 수명 주기, cwd/env, 승인 경계 및 원격 브리징 세부 정보는 클라이언트 호환성 연구를 참조하세요.
도구 및 편집 워크플로우
내장 서버 도구는 작업 공간별 작업 구성에 의존하지 않습니다:
server_info: 각 사용 가능한 작업 공간 이름, 안정적인workspace_id, 내장/전역 기능 및 안전 경계를 보고합니다.workspace: 선택한workspace_id내에서 파일을 나열, 읽기, 검색하고 제한된 Git 상태/diff 출력을 표시합니다.file_info: 바이너리 파일에 대한 제한된 메타데이터와 SHA-256을 반환합니다.pptx_inspect: Office 콘텐츠를 실행하지 않고 PPTX 텍스트, OOXML 다이어그램 관계 및 SmartArt 데이터를 검사합니다.image_open: ZIP 파일 내의 정확한 이미지 멤버를 포함하여 제한된 PNG/JPEG/GIF/WebP 이미지 콘텐츠를 MCP 클라이언트에 반환합니다.extension: 핫로드 확장을 위한 안정적인list/info/run게이트웨이입니다. 플러그인을 더 설치해도 MCP 도구 이름이 추가되지 않습니다.edit_file: 읽기/쓰기 모드에서 선택한 작업 공간 내부에 UTF-8 파일을 생성하거나 정확히 편집합니다.
작업 공간이 하나인 경우 기존 클라이언트는 workspace_id를 계속 생략할 수 있습니다. 작업 공간이 여러 개인 경우 작업 공간 범위 도구에는 server_info가 반환한 workspace_id가 필요합니다. 누락되거나 알 수 없는 ID는 거부됩니다. 중복 루트, 부모/자식 겹침 및 8개 이상의 목록은 시작 전에 거부됩니다.
안전한 편집 루프는 다음과 같습니다:
파일을 나열하거나 검색합니다.
파일을 읽고 반환된 SHA-256을 유지합니다.
해당 해시로 정확한 대체 파일을 제출합니다.
Git diff를 검사합니다.
서버는 파일을 삭제하거나 이동할 수 없습니다. 절대 경로, .., 심볼릭 링크, 정션/리파스 포인트, VCS 내부, 일반적인 종속성/빌드 폴더 및 자격 증명과 유사한 이름은 거부됩니다.
전역 사전 승인 기능
런처는 현재 및 미래의 모든 작업 공간에 대해 test, build, package-windows, package-android, git-push와 같은 일반적인 기능을 한 번에 승인할 수 있습니다. 이러한 권한은 .folderbridge.json이 아닌 런처 설정에 저장되므로 작업 공간이 추가된 지 몇 달 후에 지원되는 빌드 스크립트를 얻을 수 있으며 FolderBridge는 호출 시점에 이를 감지합니다. 런처는 이 그룹에 대한 Select all 및 Clear 컨트롤도 제공합니다.
git-push는 GitHub HTTPS origin, 현재 브랜치, 강제 푸시 없음, 저장소 로컬 자격 증명 도우미/푸시 대상 재작성 구성 없음으로 제한된 저수준 푸시 전용 기능입니다. 브라우저 인증과 명시적 파일 커밋 + 푸시를 위해서는 번들된 Git Publisher 확장을 대신 사용하세요. 빌드/패키지 기능은 로컬 프로젝트 코드를 실행할 수 있으므로 원하는 전역 기능만 활성화하세요.
직접 stdio 클라이언트의 경우 serve 또는 client-config 명령에서 --capability <name>을 반복하세요. Windows 런처는 동일한 선택을 영구 체크박스로 표시합니다.
확장
FolderBridge Extension ABI v1은 ComfyUI, FFmpeg, Blender, Ollama, ADB 또는 기타 로컬 도구와 같은 향후 전역 통합을 MCP 도구 카탈로그를 변경하지 않고 추가하는 기본 방법입니다. Windows 런처에는 기본적으로 축소된 Extensions 사이드바가 있으며, 사용자 확장 디렉터리를 핫 스캔하고 설치/승인/로드 상태를 표시하며 Tunnel이 연결된 상태에서 플러그인을 승인하거나 비활성화할 수 있습니다.
각 확장은 최소한 folderbridge-extension.json과 plugin.py를 포함하는 디렉터리입니다. 외부 플러그인은 전체 플러그인 디렉터리의 정확한 SHA-256과 선언된 권한 목록에 대해 승인됩니다. 파일이나 권한을 변경하면 승인이 만료됩니다. 확장은 정리된 환경, 제한된 프로토콜 I/O 및 선언된 시간 제한이 있는 별도의 하위 프로세스에서 실행됩니다. 이는 충돌과 프로토콜 오염을 격리하지만 OS 보안 샌드박스는 아닙니다: 신뢰할 수 없는 플러그인 코드에는 VM/컨테이너를 사용하세요.
Workspace별 적응은 workspace_adapter.mode=dynamic과 detect.any_of / detect.all_of를 사용해야 합니다. FolderBridge는 호출 시점에 해당 패턴을 재평가하므로, 확장 프로그램은 설치 시 .folderbridge.json 작업을 주입할 필요가 없으며, 이후 프로젝트가 변경되면 적용 가능해질 수 있습니다. 영구 플러그인 상태는 제공된 프로필 상태 디렉터리를 사용해야 하며, 저장소를 오염시켜서는 안 됩니다.
ComfyUI는 첫 번째 번들 확장 프로그램입니다. 해당 상태 작업은 고정 루프백 엔드포인트 127.0.0.1:8188을 확인합니다. 워크플로 실행에는 Extensions 사이드바에서 일회성 승인이 필요합니다. FolderBridge 0.4.1에서 Windows 런처는 로컬 ComfyUI 프로세스 자체도 관리할 수 있습니다. 지원되는 Portable 루트(python_embeded\\python.exe + ComfyUI\\main.py) 또는 소스 루트(main.py + .venv\\Scripts\\python.exe / venv\\Scripts\\python.exe)를 한 번 선택하면, 런처가 명시적인 Python/main.py 인수, shell=False, 고정 127.0.0.1:8188 바인딩으로 자동 시작할 수 있습니다. FolderBridge가 시작하기 전에 해당 엔드포인트가 이미 온라인 상태라면, 해당 서비스는 외부 서비스로 표시되고 중복 생성 대신 재사용됩니다.
관리 서비스 소유권은 의도적으로 Extension 권한보다 엄격합니다. FolderBridge는 install_root와 auto_start만 저장하며, PID나 임의 명령은 절대 저장하지 않습니다. 현재 런처 실행에서 생성된 메모리 내 Popen 핸들만 소유 및 중지 가능한 것으로 간주됩니다. FolderBridge는 ComfyUI용으로 사용자가 선택한 BAT/CMD를 절대 실행하지 않으며, 단지 포트 8188을 점유하고 있다는 이유만으로 알 수 없는 프로세스를 조회하거나 종료하지 않습니다. 종료 시 Tunnel/MCP 이전에 소유한 관리 서비스를 중지하며, 외부 ComfyUI는 계속 실행됩니다.
Windows에서 런처는 Per-Monitor DPI V2 인식을 요청하고, 가벼운 폴백으로 현재 창 DPI도 폴링합니다. 고정 GUI 메트릭은 DPI가 실제로 변경될 때만 원래 논리적 크기(dpi / 96)에서 재계산되므로, 96 → 144 → 96 DPI로 이동해도 배율 드리프트가 누적되지 않습니다.
ABI v1 플러그인은 단일 파일 EXE 내부에서 임의의 pip 의존성을 가정하기보다 FolderBridge 패키지 모듈과 Python 표준 라이브러리를 사용해야 합니다. 추가 소프트웨어는 일반적으로 정밀한 루프백 API 또는 선언된 process.execute:<basename> 의존성을 통해 접근해야 합니다. FolderBridge.exe extensions --json을 실행하여 패키징된 실행 파일이 무엇을 발견할 수 있는지 확인하세요. 연결 가이드 부록에는 전체 형식과 원클릭 LLM 플러그인 개발 프롬프트가 포함되어 있으며, 이 프롬프트는 모델이 추측하는 대신 누락된 API 문서, 스크립트, 워크플로, 샘플 파일 또는 프로젝트 구조를 요청/업로드하도록 지시합니다. Extension ABI v1을 참조하세요.
선택적 workspace별 명명된 작업
임의의 명령 텍스트는 MCP를 통해 절대 허용되지 않습니다. 전역 기능으로 처리되지 않는 특이한 저장소별 명령의 경우, 로컬 작업 정책을 생성하고 검토하세요:
python .\folderbridge_launcher.py init --workspace C:\path\to\repo
# Review C:\path\to\repo\.folderbridge.json
python .\folderbridge_launcher.py approve --workspace C:\path\to\repo그런 다음 런처에서 승인된 작업을 활성화하거나 생성된 서버 명령에 --allow-tasks를 추가하세요. 이 스위치를 활성화한다고 해서 구성된 모든 workspace에 .folderbridge.json이 포함되어야 하는 것은 아닙니다. 구성이 없는 workspace, 승인된 작업이 있는 workspace, 확장 전용 workspace, 아직 승인되지 않은 구성을 가진 workspace는 하나의 연결에서 공존할 수 있습니다. 승인은 해당 workspace의 명명된 작업이 실제로 호출될 때 확인됩니다. 모델은 작업 이름만 선택할 수 있으며, 명령, 인수, 환경 변수 또는 작업 디렉터리를 제공할 수 없습니다.
[!WARNING] 테스트, 빌드 도구 및 패키지 스크립트는 현재 OS 사용자 권한으로 저장소 코드를 실행합니다. 신뢰할 수 없는 저장소에는 일회용 VM이나 컨테이너를 사용하거나, 작업 실행을 비활성화된 상태로 두세요.
보안 모델
FolderBridge는 MCP 요청, 저장소 텍스트 및 도구 출력을 신뢰할 수 없는 데이터로 취급합니다. 강제는 MCP 주석만이 아니라 도구 구현에 있습니다. 주요 통제 수단은 다음과 같습니다:
workspace별 정규 경로 제한 및 링크 거부, 중복 루트 거부;
제한된 UTF-8 읽기, 검색, Git 출력, 하위 프로세스 출력 및 프로토콜 메시지;
현재 콘텐츠 해시 사전 조건이 있는 원자적 쓰기;
보호된 로컬 정책 파일;
shell=False, 고정 인수 배열, 깨끗한 작업 환경 및 타임아웃;확장 매니페스트는 알 수 없거나 과도하게 광범위한 권한 이름을 거부하고, 확장 승인은 정확한 코드 해시와 권한에 바인딩되며, 플러그인 실행은 MCP 프로세스 밖으로 이동됨;
인바운드 네트워크 리스너 없음 및 FolderBridge 텔레메트리 없음.
전체 보안 모델과 업스트림 설계 연구를 읽어보세요. 취약점을 신고하려면 SECURITY.md를 따르세요.
개발
타사 런타임 의존성이 없습니다.
python -m unittest discover -s tests -v풀 리퀘스트를 열기 전에 CONTRIBUTING.md를 참조하세요.
Windows 실행 파일 빌드
빌드는 고정된 빌드 전용 PyInstaller 의존성을 사용합니다. 릴리스된 EXE는 hide-console=hide-early와 함께 콘솔 부트로더를 사용합니다. 더블 클릭하면 GUI만 열리며, 동일한 실행 파일은 Tunnel이 serve 하위 명령을 시작할 때 stdio를 유지합니다.
python -m venv .build-venv
.\.build-venv\Scripts\python.exe -m pip install -r requirements-build.txt
.\scripts\build_windows.ps1 -Python .\.build-venv\Scripts\python.exe아티팩트와 SHA-256 파일은 release\windows-x64에 기록됩니다.
라이선스
Apache License 2.0에 따라 라이선스가 부여됩니다.
FolderBridge MCP는 독립적인 오픈 소스 프로젝트입니다. OpenAI와 제휴, 보증 또는 후원 관계가 아닙니다. ChatGPT, OpenAI, MCP 및 기타 제품 이름은 해당 소유자의 자산입니다.
Available Tools
10 toolsedit_fileCreate or exactly edit one fileADestructive
Atomically create a UTF-8 file, or edit one using unique exact replacements and a current whole-file SHA-256. workspace(read) returns that SHA for small files; use file_info for larger files. When multiple workspaces are configured, pass the same workspace_id used for inspection. Cannot delete files, edit the local task config, follow links, or access credential-like paths.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| replacements | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| create_content | No | Used only when creating a new file. | |
| expected_sha256 | No | Required when editing an existing file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, but the description adds important context: atomicity, exact replacement matching, SHA requirement, and explicit forbidden actions (delete, config, links, credentials).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise single paragraph that front-loads the core purpose and then efficiently covers SHA, workspace_id, and limitations without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers creation vs. editing, SHA requirements, workspace_id, and limitations; with no output schema, return values need no explanation, though failure behavior on non-unique replacements could be mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 60% of parameters with descriptions; the tool description clarifies replacement uniqueness, SHA acquisition, and workspace_id usage, though it adds little for the obvious path parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/edit) and resource (UTF-8 file), clearly distinguishing from siblings by noting exact replacements, SHA-256, and forbidden operations like deletion or credential access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides practical guidance on obtaining the SHA via workspace or file_info, workspace_id handling, and constraints, but does not explicitly name an alternative like write_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extensionUse FolderBridge extensionsADestructive
Stable extension gateway. action=list returns a compact pageable catalog of installed/hot-reloaded extensions and action names; action=info returns the full schema for one extension; action=run invokes one declared extension action. Long foreground actions may be transport-safely promoted in-place to a host-owned Job; use action=job_list to rediscover workspace Jobs, action=job_status to inspect completion/runtime health/results, and action=job_cancel to terminate the owned worker process tree. Installing more extensions does not add MCP tool names. External extension code requires exact-hash local approval; globally authorized actions must also be enabled in the FolderBridge extension sidebar. Dynamic workspace adapters are re-evaluated at call time, so later project changes do not require workspace task injection.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Catalog/job page size for action=list/job_list. | |
| action | Yes | ||
| job_id | No | Required for job_status/job_cancel; returned by an explicit or auto-promoted Job action. | |
| offset | No | Catalog/job result offset for action=list/job_list. | |
| params | No | Action parameters validated against the extension's declared input_schema. | |
| extension_id | No | Required for info/run. | |
| workspace_id | No | Optional for list/info; required by workspace-bound run/job operations when multiple workspaces are configured. | |
| extension_action | No | Required for run; choose an action declared by extension info/list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by mentioning that job_cancel terminates the owned worker process tree, that external extension code requires exact-hash local approval, and that globally authorized actions must be enabled. This adds meaningful safety context beyond the destructiveHint and readOnlyHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat dense and list-like, but it is still focused and each sentence contributes necessary information about actions, job handling, or authorization. It could be organized into clearer bullets, but it is far from bloated or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—8 parameters, multiple actions, job lifecycle, and extension authorization—the description covers the essential operational context. It lacks explicit output format details, but no output schema is provided, and the action-specific behavior is sufficiently described for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already high at 88%, and the description adds useful semantic relationships, such as job_id being returned by an explicit or auto-promoted Job action and workspace_id being required for workspace-bound operations when multiple workspaces are configured. This clarifies parameter behavior beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a stable extension gateway and enumerates the exact actions (list, info, run, job_list, job_status, job_cancel). It also distinguishes the tool from ordinary file operations by noting that installing more extensions does not add MCP tool names, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical guidance on how to use the tool: it explains the purpose of each action, how long foreground actions can be promoted to jobs, and that extension code requires approval. It does not explicitly mention competing alternatives, but it gives enough context for an agent to decide when this gateway is the appropriate entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_infoInspect file metadata and SHA-256ARead-only
Return bounded metadata and whole-file SHA-256 for a regular file without exposing its bytes; use this SHA before editing large text files. Uses the same workspace confinement, link denial, and sensitive-path policy as text tools.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds that bytes are not exposed and mentions shared workspace/link/sensitive-path policies, providing extra context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, tightly packed with essential information: function, limitation, use case, and policy alignment. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata/hash tool, the description covers key aspects: what it returns, what it avoids, and when to use it. The absence of an output schema is compensated by the clear explanation of the return value. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover workspace_id but not path, giving 50% coverage. The description does not add any parameter details, but the parameters are simple and self-explanatory (path, workspace_id). This is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns metadata and SHA-256 for a regular file, and explicitly notes it does not expose bytes, distinguishing it from content-reading tools. The phrase 'use this SHA before editing large text files' gives a concrete purpose and workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a specific use case ('use this SHA before editing large text files') and clarifies the tool's non-content nature. While it doesn't compare directly to sibling tools, the 'without exposing its bytes' phrase implies when not to use it, giving adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_opsCopy or move one file within or across workspacesADestructive
Core FolderBridge regular-file copy/move with workspace confinement on both ends. Use source_workspace_id when multiple workspaces are configured; destination_workspace_id is optional and defaults to the source workspace. Paths remain workspace-relative, links/reparse points, credentials, dependencies and protected control config writes are denied. No-clobber is the default; overwrite requires the current destination SHA-256. Cross-volume move falls back to verified copy then source removal.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| max_bytes | No | ||
| overwrite | No | ||
| source_path | Yes | ||
| create_parents | No | ||
| destination_path | Yes | ||
| source_workspace_id | No | Required when more than one workspace is configured. | |
| expected_source_sha256 | No | Optional source-byte guard; also enables safe already-completed retry recognition. | |
| destination_workspace_id | No | Optional; defaults to source_workspace_id. | |
| expected_destination_sha256 | No | Required when overwrite=true; must match the current destination bytes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behaviors beyond the destructiveHint annotation: it denies links, credentials, dependencies, and protected writes; explains no-clobber default with overwrite requiring SHA-256; and describes cross-volume move fallback. These specifics are valuable safety context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, leading with the core purpose and then detailing constraints. It avoids unnecessary words and presents information in a logical flow, though it could benefit from a clear separation of parameter usage from general behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no output schema, and moderate complexity, the description covers important safety and overwrite aspects but omits explanations for max_bytes, create_parents, expected_source_sha256 usage, and action semantics. These gaps could lead to incorrect invocation, especially for a file operation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for workspace IDs, overwrite requirements, and no-clobber default, which helps with parameters lacking schema descriptions. However, it does not explain max_bytes limits, create_parents behavior, or the action enum values, leaving gaps despite the low schema coverage of 40%. It partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation (copy/move) on a single regular file, with workspace confinement. It clearly distinguishes from edit/write operations and sets expectations about scope. The phrasing 'Core FolderBridge regular-file copy/move' is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter-level guidance (workspace IDs, overwrite behavior) but does not explicitly indicate when to choose this tool over siblings like edit_file or write_file. There is no mention of conditions for selecting this tool or exclusions for other operations, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flight_recorderRead recent FolderBridge flight diagnosticsARead-only
Read FolderBridge's compact local reliability flight recorder. It keeps only the latest 15 minutes with a 20 MiB total cap, records MCP/Tunnel metadata and bounded redacted diagnostics, and never stores full MCP request/response bodies. Use action=status for storage health, recent for a bounded timeline, or errors for warning/error events only.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | all | |
| limit | No | ||
| action | Yes | ||
| minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses retention limits (15 minutes, 20 MiB), recording of MCP/Tunnel metadata, bounded redacted diagnostics, and explicitly states it never stores full request/response bodies, going beyond the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, first summarizing the tool's purpose and data characteristics, second giving actionable usage for actions; no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks explanation of parameters like role, limit, minutes, and their interaction; while the action usage is covered, the tool cannot be fully used without inferring parameter meanings from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not explain any of the parameters (action, role, limit, minutes) except implicitly mentioning action usage; schema has enums and defaults but description adds no parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb 'Read' and the resource 'FolderBridge's compact local reliability flight recorder' clearly, distinguishing it from other read tools like server_info or file_info by specifying the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on which action to use (status, recent, errors) but does not compare with sibling tools or explain when to choose this over others; still, the action-specific advice is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_openOpen a workspace image or ZIP image memberARead-only
Return one bounded PNG/JPEG/GIF/WebP as MCP image content, either from a direct workspace path or from one exact member inside a workspace ZIP. The archive is never extracted to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Direct image path. Mutually exclusive with archive_path. | |
| member | No | Exact POSIX member path inside archive_path. | |
| archive_path | No | ZIP path containing the image. Mutually exclusive with path. | |
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: it states supported formats, the 'bounded' size constraint, and that the archive is never extracted to disk. These are useful operational details that the readOnlyHint annotation does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return value and formats, and the key behavioral guarantee is stated in one short second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return form (MCP image content), supported formats, and the two input paths, which is sufficient for an agent to call the tool correctly. It does not describe error cases, but the schema and annotations cover the essential requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds context about the two usage modes but does not go beyond the schema's mutual-exclusion notes or parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and a precise resource: one bounded PNG/JPEG/GIF/WebP as MCP image content. It also clearly distinguishes the two input modes (direct path vs. ZIP member), which separates this tool from sibling file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when you need an image as MCP content, either from a workspace path or from a ZIP member. It does not explicitly name alternative tools or exclusion criteria, but the direct-vs-archive distinction is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pptx_inspectInspect PPTX OOXML and SmartArtARead-only
Safely inspect a PPTX inside the selected workspace using Python standard-library ZIP/XML parsing. Returns slide text, diagram-to-slide mappings, dgm:pt points, dgm:cxn connections, and orphan/duplicate diagnostics. Does not execute macros, embedded objects, or workspace code.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| page_end | No | ||
| page_start | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses safety-relevant behavior: it does not execute macros, embedded objects, or workspace code. This goes beyond the readOnly/destructive annotations and reassures the agent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: a safety-and-method sentence, a returns list, and a non-execution guarantee. Every sentence adds meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the return-value list is helpful, and the safety behavior is clear. However, the description omits parameter semantics and does not fully explain how page_start/page_end affect inspection, leaving noticeable gaps for a four-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% and the description does not explain path, page_start, or page_end. Only workspace_id is described in the schema; the description adds no parameter-level clarification, leaving the agent to guess meanings and ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('inspect a PPTX') and resource, and lists concrete outputs ('slide text, diagram-to-slide mappings, dgm:pt points...'). It is clearly differentiated from the sibling tools by its OOXML/SmartArt focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as file_info or image_open. It implies use for PPTX inspection but does not explicitly state selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoLocal workspace safety statusARead-only
List the fixed workspace IDs, enabled capabilities, approved tasks, and safety boundary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which the description aligns with by using the non-destructive verb 'List'. The description adds useful specificity about what information is returned, going beyond the annotations. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that lists the exact outputs. It is well-structured and front-loaded with the action verb, making it easy to understand at a glance. No unnecessary words or complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description adequately informs the agent of what the tool returns: fixed workspace IDs, enabled capabilities, approved tasks, and safety boundary. This is sufficient for understanding the tool's result without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is fully covered with an empty properties object. Since there are no parameters to describe, the baseline of 4 applies. The description does not need to explain parameters because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb 'List' and identifies the exact resources it returns: workspace IDs, capabilities, approved tasks, and safety boundary. This makes the tool's function unambiguous and distinct from typical file or workspace operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus its siblings. While it is clearly a read-only status tool, it does not explicitly state that it should be used for checking workspace safety before operations, nor does it mention alternatives. Thus, usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspaceInspect the local workspaceARead-only
List files, page through UTF-8 text, stream literal search across large UTF-8 files, or page through git status/diff output. When multiple workspaces are configured, pass a workspace_id returned by server_info. All paths are relative; links, credentials, dependencies, and VCS internals are denied.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| limit | No | Returned byte page size for read/status/diff. | |
| query | No | Required for literal search. | |
| action | Yes | ||
| offset | No | Byte offset for read/status/diff; result offset for list/search. | |
| pattern | No | Glob for list. | * |
| max_results | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| case_sensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, and the description is consistent with that while adding behaviors beyond it: literal (not regex) UTF-8-only searches, streaming/paging for large files, and denied content categories. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: action capabilities first, workspace_id routing second, path/denial constraints third. No filler; every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, five-action tool with no output schema, the description covers the action space, key routing, and constraints well. It does not specify output shapes or per-action result semantics, but the action names themselves make the expected results reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 56% schema coverage, the description adds meaning to several parameters: workspace_id's source and trigger, path's relative-base convention, query's literal-search nature, and limit/offset's page semantics. It does not expand on max_results or case_sensitive, but those are named and defaulted in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names explicit actions — list, read, search, status, diff — with concrete resource and scope (files, UTF-8 text, git output). This distinguishes it from sibling tools like file_info and edit_file by making clear it is a broad read-only workspace inspection surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear context for use: multi-workspace routing via server_info, relative paths, and a hard denial list (links, credentials, dependencies, VCS internals). It does not explicitly name sibling tools or say when to prefer file_info or edit_file, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileTransactionally write a large UTF-8 fileADestructive
Host-owned five-action transaction for large whole-file creates or replacements without requiring one giant MCP message. Use begin, then one or more append calls with the exact next UTF-8 byte offset, optionally status, then commit with the complete expected size and SHA-256; abort discards staging. Staging stays outside the workspace, replace mode rechecks the original target SHA at commit, and successful commit uses a same-directory fsync + atomic replace.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Required only for begin. | |
| path | No | Required only for begin. | |
| chunk | No | Required for append; runtime-enforced maximum is 4 MiB of UTF-8 bytes so even worst-case JSON escaping stays below the MCP message ceiling. | |
| action | Yes | ||
| offset | No | Required for append; exact next UTF-8 byte offset, making retries non-duplicating. | |
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| expected_size | No | Required for commit; complete UTF-8 byte length. | |
| transaction_id | No | Returned by begin; required by append/status/commit/abort. | |
| expected_sha256 | No | Required for commit; SHA-256 of complete new UTF-8 bytes. | |
| expected_target_sha256 | No | Required for begin in replace mode; obtain with file_info. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply the generic destructive/idempotent profile; the description adds substantive traits beyond them: staging lives outside the workspace, replace mode rechecks the original target SHA at commit, abort discards staging, and commit is a same-directory fsync plus atomic replace. The offset-based non-duplicating retry guarantee is also stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that lead with the transaction model, then the action sequence, then the durability and safety guarantees. Nothing is repetitive of the name or title, and every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, multi-action tool with no output schema, the description covers the full lifecycle and the return of transaction_id is captured in the schema itself. It leaves unstated what status or commit return on success and what happens when an offset mismatch or commit-contract failure occurs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 90%, so per-parameter documentation is already strong (baseline 3). The description goes further by binding parameters to actions as a cross-field contract: commit needs the complete expected size and SHA-256, append needs the exact next byte offset, and replace mode requires the original target SHA. It doesn't add format examples for the hashes, which the schema already constrains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: a host-owned five-action transaction for large whole-file creates or replacements. The 'whole-file ... without requiring one giant MCP message' framing distinguishes it from the sibling edit_file, which handles partial edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit protocol sequencing (begin, one or more appends, optionally status, commit, abort) and the size/whole-file condition that motivates it. It stops short of naming edit_file as the alternative for small or partial changes, so the routing decision is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.8.36- Added
file_ops
1 tool update
v0.8.33- Changed
write_file1 field changed- changed
Input schema / properties / chunk / descriptionPrevious value: -"Required for append; runtime-enforced maximum is 128 KiB of UTF-8 bytes so even worst-case JSON escaping stays below the 1 MiB MCP message limit."New value: +"Required for append; runtime-enforced maximum is 4 MiB of UTF-8 bytes so even worst-case JSON escaping stays below the MCP message ceiling."
9 tool updates
v0.8.25- First observed
edit_file - First observed
extension - First observed
file_info - First observed
flight_recorder - First observed
image_open - First observed
pptx_inspect - First observed
server_info - First observed
workspace - First observed
write_file
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: file operations, editing, reading/searching, metadata, specific format inspection, extension management, and server info. Even edit_file vs write_file are separated by size/chunking, and workspace vs file_info differ in scope. No overlapping or ambiguous tools.
All names use lowercase with underscores, but the verb/noun order varies: edit_file and write_file use verb_noun, while file_info and server_info use noun_verb, and workspace and extension are bare nouns. This inconsistency makes the pattern less predictable, though still readable.
10 tools is well-scoped for a file management and inspection server. Each tool covers a distinct aspect (copy/move, create/edit, read/search, metadata, format inspection, extensions, diagnostics) without redundancy or bloat.
The surface covers most file lifecycle operations (create, edit, read, copy, move, metadata) but lacks a delete operation. Also missing directory creation and possibly rename (though move may cover that). These are notable gaps for a file management server.
Maintenance
Related MCP Connectors
Persistent cloud workspaces for AI agents: run commands, edit files, use git and a browser.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
- flockfsOAuthcom.flockfs
A real-time, multiplayer filesystem for agents and humans: shared files, live edits, history.
Give every project one workspace for its files, its team, and its AI agents.
Related MCP Servers
- FlicenseBqualityDmaintenanceA read-only MCP server that exposes a local code workspace to AI clients via stdio, providing file browsing and text search capabilities with path safety rules.1-
- AlicenseNot gradedqualityCmaintenanceA deliberately narrow, approval-gated workspace server that safely reads and writes files and runs allowlisted commands only inside one configured workspace, requiring visible approval for every write, process execution, and file read, with stale-overwrite protection and symlink-escape rejection.1MIT
- FlicenseAqualityCmaintenanceA read-only MCP server that lets AI assistants inspect local workspace files, search context, view git diffs, and fetch a fixed GitHub profile, all within a sandboxed stdio transport.5-
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to safely read, search, understand, and edit local project code and files, with Git inspection, code indexing, and controlled command execution within permissioned workspaces.3 npm6MIT