sweep-mcp
sweep-mcp
디렉토리를 삭제하는 MCP 서버 — 그리고 언어 모델에게 그런 능력을 넘겨주는 것을 무모하지 않게 만드는 안전장치들.
이 서버는 Model Context Protocol을 통해 sweep을 노출하므로, 에이전트가 node_modules, .venv, target, __pycache__ 등을 찾아서 정리할 수 있습니다. 흥미로운 부분은 삭제 자체가 아닙니다. 삭제가 허용되기 전에 반드시 충족되어야 하는 모든 조건들입니다.
2026년에 발표된 연구에 따르면, 스캔된 1,808개의 MCP 서버 중 66% 에서 보안 문제가 발견되었으며, 단일 분기 동안 MCP 구현에 대해 30개 이상의 CVE가 제기되었습니다. 이 저장소는 반대 방식으로 작성된 하나의 서버입니다: 거절이 먼저, 기능은 그 다음입니다.
위협 모델
디렉토리를 삭제할 수 있는 MCP 서버는 프로세스가 접근할 수 있는 모든 것을 향한 장전된 총입니다. 다섯 가지 문제가 발생할 수 있으며, 각각에 대한 통제와 이를 검증하는 테스트가 있습니다.
위험 | 통제 | 테스트 |
에이전트가 | 루트 허용 목록, 서버 시작 시 고정됨. 에이전트는 이를 설정, 확장 또는 읽을 수 없음. 루트가 구성되지 않음 → 모든 요청 거부됨 |
|
| 모든 경로는 포함 검사 전에 |
|
에이전트가 스캔하지 않은 경로 삭제를 요청함 |
|
|
스캔과 삭제 사이에 디렉토리가 변경됨 | 모든 찾기는 삭제 시점에 실제 파일 시스템에 대해 재확인됨 — 여전히 포함되어 있고, 여전히 디렉토리이며, 링크가 아니고, 마커 파일이 여전히 존재함 |
|
우발적인 파괴 | 건식 실행이 기본값임. 삭제하려면 정확히 |
|
같은 이유로 두 가지 더 작은 것들:
티켓 id는 순차적이지 않고 무작위입니다.
1이 아니라f-3a91c02b77de입니다. 순차적인 id는 에이전트가 무언가를 삭제할 때까지 반복하도록 유도합니다.도구 설명은 문자열 리터럴입니다. 디스크에서 읽은 어떤 것으로도 조합되지 않으므로,
ignore-previous-instructions라는 이름의 디렉토리는 문장이 아닌 데이터로 모델에 도달합니다 (test_tool_descriptions_are_static).
Related MCP server: MCP Files
보호하지 않는 것
위의 통제는 그것이 다루는 범위 내에서만 가치가 있으며, 그 이상은 아닙니다.
잘못 구성된 루트.
--root /로 시작하면 파일 시스템 전체를 기꺼이 작업할 것입니다. 허용 목록은 입력한 내용만큼만 유용하며, 여기서는 그 선택을 재고하지 않습니다.악의적인 클라이언트. 가드는 무엇이 삭제될 수 있는지를 제한할 뿐, 누가 요청하는지는 제한하지 않습니다. 합법적으로 스캔하고 합법적으로 확인하는 클라이언트는 정확히 요청한 것을 얻습니다.
설득당한 에이전트. 정적 도구 설명은 파일 시스템 콘텐츠가 모델의 지시사항에 들어가는 것을 막지만, 여기서는 실제로 찾은
node_modules를 자신의 나쁜 이유로 삭제하기로 결정한 에이전트를 막을 수 없습니다.마지막 몇 밀리초.
revalidate()는 검사와 삭제 사이의 간격을 좁힙니다. 완전히 없애지는 않습니다. 이를 적절히 없애려면 작업 전반에 걸쳐 유지되는 디렉토리 파일 디스크립터가 필요한데,shutil.rmtree는 이를 이식 가능하게 제공하지 않습니다. 이것은 실제 경합 조건이며, 더 작아졌을 뿐 사라지지는 않았습니다.Python 3.11의 Windows 정션.
os.path.isjunction은 3.12에서 도입되었습니다. 그 이하에서는 정션 감지가 심볼릭 링크로만 저하됩니다 —sweep자체가 취하는 동일한 절충이며, 숨겨지지 않고 여기에 명시되어 있습니다.권한. 이것은 샌드박스가 아닙니다. 시작한 사람의 권한으로 실행됩니다.
스캐너 결과
2026년 8월 18일 agent-audit 0.19.2로 실행.
정적 스캔 — 0개 발견, 위험 점수 0.0 (LOW), 7개 파일.
첫 번째 패스에서 하나의 낮은 수준 발견이 나타났습니다: AGENT-110, 소스 맵 아티팩트가 배포에서 제외되지 않음. 이 패키지는 JavaScript를 제공하지 않으므로 누출될 소스 맵이 없었지만, 제외 사항은 어쨌든 pyproject.toml에 선언되었습니다 — 비용이 들지 않으며, 공급망 체크리스트와 논쟁하는 것은 누구의 오후 시간도 낭비하는 것입니다.
도구 검사 — 0개 도구 발견. 세 가지 정의 모두에서 도구 중독, 교차 출처 또는 rug-pull 패턴이 감지되지 않았습니다.
할당된 위험 등급은 재현할 가치가 있습니다. 왜냐하면 그것들이 교육적인 방식으로 틀렸기 때문입니다:
도구 | 등급 | 추론된 권한 |
| MEDIUM | SHELL_EXEC, FILE_READ |
| HIGH | FILE_DELETE, SHELL_EXEC, FILE_READ |
| HIGH | FILE_DELETE, SHELL_EXEC, FILE_READ |
scan은 아무것도 삭제할 수 없습니다. 읽기 전용이며, read_only_hint=True로 선언되었고, 그 상태를 유지한다는 테스트가 있습니다. FILE_DELETE 권한으로 HIGH 등급이 매겨진 이유는 스캐너가 설명에서 키워드를 일치시키기 때문이며, 이 서버의 scan 설명에는 다음 문장이 포함되어 있습니다:
"읽기 전용: 이것은 절대 아무것도 삭제하지 않습니다."
삭제라는 단어는 FILE_DELETE 키워드 목록에 있습니다. SHELL_EXEC는 명령어라는 단어에서 비롯되었으며, "이것을 재생성하는 명령어"에서 왔습니다 — 이 서버는 셸 명령어를 전혀 실행하지 않습니다.
설명을 더 나은 점수를 얻기 위해 다시 작성할 수 있습니다. 그렇게 하지 않은 이유는 설명의 대상이 도구를 호출할지 결정하는 언어 모델이기 때문이며, "이것은 절대 아무것도 삭제하지 않습니다"는 그 안에서 가장 유용한 단일 문장입니다. 키워드 스캐너는 연기 감지기이지 판사가 아닙니다 — 깨끗한 실행은 가치가 있고 게시할 가치가 있으며, 산문의 문자열 일치에서 파생된 등급은 어느 방향으로든 행동에 대한 증거가 아닙니다.
두 개의 스캐너를 시도했고 하나는 실행할 수 없었습니다: Invariant Labs의 mcp-scan은 Snyk 인수에 따라 snyk-agent-scan으로 이름이 변경되었으며 이제 SNYK_TOKEN이 필요합니다. Cisco의 mcp-scanner는 PyPI에 게시되지 않았습니다. agent-audit 자체의 stdio 전송도 Windows에서 이 서버에 대해 시간 초과되는 반면, 동일한 바이너리에 대한 수동 핸드셰이크는 밀리초 단위로 반환되므로, 분석기는 실제 tools/list 출력을 직접 공급받았습니다 — 전송은 우회되었고, 분석은 그렇지 않았습니다.
설치
pip install -e .구성
서버는 하나 이상의 --root 디렉토리를 사용합니다. 기본값이 없습니다. 루트 없이 시작하는 것은 모든 것을 스캔하라는 초대가 아니라 오류입니다:
{
"mcpServers": {
"sweep": {
"command": "sweep-mcp",
"args": ["--root", "/home/you/code", "--root", "/home/you/work"]
}
}
}도구
도구 | 파괴적 | 기능 |
| 아니오 | 정리할 수 있는 디렉토리 종류와 각각을 재생성하는 명령어 |
| 아니오 | 루트 내의 경로 아래에서 정리 가능한 디렉토리를 찾습니다. id, 크기 및 재생성 명령어를 반환 |
| 예 | id로 찾은 항목을 삭제합니다. |
세 가지 모두 MCP ToolAnnotations를 전달하므로, 파괴적인 도구를 확인 프롬프트 뒤에 두는 클라이언트는 필요한 것을 가지고 있습니다: reclaim은 destructive_hint=True를 선언하고, 다른 두 개는 read_only_hint=True를 선언합니다. 이것도 테스트 스위트에서 단언됩니다 — 조용히 퇴보한 힌트는 없는 것보다 더 나쁠 것입니다.
세션
scan(path="/home/you/code")
→ 12 finds, 3.4 GB
f-3a91c02b77de /home/you/code/api/node_modules 1.9 GB npm install
f-8e0244fd1b6c /home/you/code/ml/.venv 842 MB python -m venv .venv
reclaim(ids=["f-3a91c02b77de"])
→ dry_run: true
would_delete: 1 path, 1.9 GB
note: Nothing was deleted. Call again with confirm='delete'.
reclaim(ids=["f-3a91c02b77de"], confirm="delete")
→ deleted: 1 path, reclaimed 1.9 GB테스트
38개 테스트. Windows에서 34개 실행; Linux에서 38개 모두 실행.
로컬에서 건너뛰는 4개는 심볼릭 링크를 생성해야 하는데, Windows는 개발자 모드 없이 이를 거부합니다 — 그리고 그 중 하나는 스캔-삭제 간 교체 공격을 다루며, 이것이 여기서 가장 중요한 단일 테스트입니다. 조용히 건너뛰면 스위트는 장식이 될 것이므로, CI는 Linux에서 실행되며 해당 테스트가 거기서 건너뛴 것으로 보고되면 빌드를 실패시킵니다.
pytest -q --cov=sweep_mcp커버리지는 83% 입니다. 차이는 주로 main()과 argparse 배선이며, 스위트는 대신 build_server를 통해 이를 구동합니다 — 전송은 가장 모킹할 가치가 없고 피해가 발생할 가능성이 가장 낮은 부분입니다.
스위트에서 파일 시스템을 모킹하는 것은 없습니다. 모킹된 Path는 여기의 모든 테스트를 통과하지만 서버는 여전히 잘못된 디렉토리를 삭제할 것입니다.
레이아웃
src/sweep_mcp/
guard.py 212 lines - the allowlist, the tickets, the re-check. Imports no MCP.
server.py 280 lines - three tools. Translation only.
tests/
test_guard.py 23 tests - one per rule, each named for the attack it stands in for
test_server.py 15 tests - driven through call_tool, the way a client wouldguard.py는 의도적으로 MCP에 대해 아무것도 모릅니다. 누군가의 데이터를 잃을 수 있는 모든 결정은 클라이언트, 전송 또는 에이전트 없이 테스트 가능합니다. 규칙이 server.py에서 시행되는 것처럼 보인다면, 그것은 버그입니다 — 테스트가 도달할 수 있는 한 계층 아래에 속합니다.
라이선스
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceProvides secure filesystem access for AI assistants with optimizations like file reading limits and depth-limited traversal to improve token efficiency. It enables AI models to read, write, and search files within explicitly allowed directories while automatically skipping large system folders.3
- Alicense-qualityCmaintenanceProvides a secure, constrained filesystem workspace for LLM agents to manage files, notes, and code artifacts via stdio or remote HTTP. It features granular access controls, including extension whitelisting, storage quotas, and immutable paths for safe automated file operations.BSD 3-Clause
- Flicense-qualityBmaintenanceEnables AI agents to clean disk space by scanning and removing temporary files, caches, and duplicates through natural language commands via MCP protocol.1
- FlicenseAqualityDmaintenanceEnables LLM agents to find and safely delete duplicate files using content-based detection, with smart copy prioritization and dry-run mode.3
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.
Securely search and manage workspace context files for AI agents and teams.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/les-k/sweep-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server