Are you the author? Sign in to claim
ð Beyond Filesystem - Complete AI Development Environment - One MCP Server provides full Agent capability stack: web de
English | äžæ
ð åªéäžäžª MCPïŒå°±èœå®ç°äœ çå®æŽ Agent èœåïŒ
è¶ è¶æä»¶ç³»ç»ç AI åŒåç¯å¢ - 让 AI å Claude Code äžæ ·è¿è¡å®æŽç Web åŒåãæ°æ®å€çåä»£ç æ§è¡
ð¡ æ žå¿ä»·åŒïŒæ ééæå€äžª MCP å·¥å ·ïŒäžäžª MCP æå¡åšå³å¯æäŸæä»¶æäœãä»£ç æ§è¡ãWeb éšçœ²ãæ°æ®å€çãåŸåçæç宿Žç Agent èœåãåŒç®±å³çšïŒäžç«åŒè§£å³æ¹æ¡ã
äžäžªåèœåŒºå€§ç MCP (Model Context Protocol) æå¡åšïŒäžä» æäŸå®å šçæä»¶ç³»ç»æäœïŒæŽæ¯äžäžªå®æŽç AI åŒåå·¥äœç©ºéŽãæ¯æä»£ç æ§è¡ãWeb åºçšäžé®éšçœ²ãæ³åå访é®ãExcel å€çãåŸåçæçäŒäžçº§èœåã
äŒ ç»æ¹æ¡ïŒéèŠéæå€äžª MCP å·¥å ·æèœå®ç°å®æŽåèœ
æä»¬çæ¹æ¡ïŒåªéäžäžª MCPïŒææèœååŒç®±å³çš
æä»¬æäŸçæ¯å®æŽç AI åŒåå·¥äœç©ºéŽïŒèœåè¿è¶ äŒ ç»æä»¶ç³»ç»æå¡åšïŒ
*.your-domain.com æ³ååïŒæ¯äžªäŒè¯èªåšè·åŸç¬ç«ååå访é®| äŒ ç»æ¹æ¡ | æä»¬çæ¹æ¡ |
|---|---|
| éèŠ 5+ 䞪 MCP å·¥å · | åªé 1 䞪 MCP |
| é çœ®å€æïŒéèŠéäžªéæ | åŒç®±å³çšïŒäžé®é 眮 |
| åèœåæ£ïŒéŸä»¥ç»äžç®¡ç | åèœéäžïŒç»äžç®¡ç |
| å®å šçç¥äžç»äž | ç»äžå®å šçç¥ |
| ç»Žæ€ææ¬é« | 绎æ€ç®å |
äžå¥è¯æ»ç»ïŒäžäžª MCP æå¡åš = 宿Žç Agent èœåæ ð
åºæ¯ 1ïŒAI 驱åšç Web åŒå
AI åå»ºå®æŽçå端åºçš â äžé®éšçœ² â è·åŸç¬ç«åå访é®
äŸåŠïŒhttps://user123_chat456.your-domain.com
åºæ¯ 2ïŒæ°æ®åæäžå¯è§å
读å Excel â æ°æ®å€ç â çæåŸè¡š â å建æ¥å â éšçœ²å±ç€ºé¡µé¢
åºæ¯ 3ïŒä»£ç åŒåäžæµè¯
çŒå Python èæ¬ â æ§è¡æµè¯ â ä¿®å€ Bug â éšçœ² API æå¡
æ¯äžªçšæ·/äŒè¯æ¥æç¬ç«çèæå·¥äœç©ºéŽïŒå®å šé犻ïŒäºäžå¹²æ°ã
å·¥äœç®åœåœåè§åïŒ
| X-User-ID | X-Chat-ID | å·¥äœç®åœ |
|---|---|---|
user123 | chat456 | user_data/user123_chat456/ |
user123 | (空) | user_data/user123/ |
| (空) | chat456 | user_data/chat456/ |
| (空) | (空) | 䜿çšé»è®€å šå±æš¡åŒ |
éè¿ HTTP 请æ±å€ŽäŒ é身仜æ è¯ïŒ
X-User-ID: çšæ·å¯äžæ è¯ïŒå¯éïŒX-Chat-ID: äŒè¯å¯äžæ è¯ïŒå¯éïŒLLM è§è§å®å
šèæåïŒAI æš¡åçå°çæ¯äžäžªå¹²åçèææä»¶ç³»ç»ïŒä»¥ / äžºæ ¹ç®åœã
LLM çå°çè·¯åŸ å®é
ç©çè·¯åŸ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
/ â /server/user_data/user123_chat456/
/todo.txt â /server/user_data/user123_chat456/todo.txt
/docs/readme.md â /server/user_data/user123_chat456/docs/readme.md
äŒå¿ïŒ
å 眮å€å±å®å šæºå¶ïŒé²æ¢è·¯åŸéåæ»å»ïŒ
æ»å»å°è¯ ç»æ
âââââââââââââââââââââââââââââââââââââââââââââââââ
/../../../etc/passwd â è¢«é»æ¢
../../../etc/passwd â è¢«é»æ¢
/foo/../../../etc/passwd â è¢«é»æ¢
/foo/bar/../../.. â è¢«é»æ¢
å®å šæºå¶ïŒ
Path.resolve() è§£æææ .. å笊å·éŸæ¥allowed_dirs å
æ¯æ Server-Sent Events (SSE) äŒ èŸïŒéé åç±» AI å¹³å°ïŒ
客æ·ç«¯ æå¡åš
â â
âââââ GET /sse âââââââââââââââââââââââ¶â å»ºç« SSE è¿æ¥
âââââ SSE: endpoint=/messages?sid=xxx â è¿åæ¶æ¯ç«¯ç¹
â â
âââââ POST /messages?session_id=xxx ââ¶â åéå·¥å
·è°çš
âââââ SSE: message (ååº) ââââââââââââ æ¥æ¶ç»æ
äžé®éšçœ² Web åºçšïŒ
preview_frontend å·¥å
·äžé®éšçœ²æ³ååéšçœ²ïŒç产ç¯å¢ïŒïŒ
{
"preview": {
"wildcard_domain": "*.proxy.your-domain.com",
"use_tls": true
}
}
é 眮åïŒæ¯äžªäŒè¯èªåšè·åŸç¬ç«åååïŒ
user123_chat456.proxy.your-domain.comuser789_chat012.proxy.your-domain.comäŒå¿ïŒ
| å·¥å · | åèœ | äº®ç¹ |
|---|---|---|
fs_write | å建 Web æä»¶ïŒHTML/CSS/JSïŒ | èªåšè¯å«æ ŒåŒïŒæ¯æå®æŽåç«¯é¡¹ç® |
preview_frontend | äžé®éšçœ²éæå端 | æ¯ææ³ååïŒèªåšçæç¬ç«ååå |
exec | æ§è¡ Python/Node.js 代ç | æ²çç¯å¢ïŒæ¯æå®æ¶è°è¯ |
generate_image | çæåŸè¡šåæµçšåŸ | Mermaidãæ°æ®å¯è§åãHTML æž²æ |
| å·¥å · | åèœ |
|---|---|
fs_read | 读åæä»¶ïŒæ¯ææ¹éãExcelãè¡èåŽïŒ |
fs_write | å建/èŠçæä»¶ïŒèªåšè¯å«æ ŒåŒïŒ |
fs_ops | æä»¶ç³»ç»æäœïŒlist/mkdir/move/info/deleteïŒ |
fs_replace | åºäº SEARCH/REPLACE 粟确çŒèŸæä»¶ |
fs_search | æçŽ¢æä»¶ïŒglob=ææä»¶åïŒcontent=æå 容æ£åïŒ |
| å·¥å · | åèœ |
|---|---|
fs_read | 读å Excel æä»¶ïŒæ¯æ sheetãrange åæ°ïŒ |
fs_write | å建/èŠç Excel æä»¶ïŒèªåšè¯å«æ ŒåŒïŒ |
excel_edit | çŒèŸ ExcelïŒæ¹éæŽæ°åå æ Œãæ ŒåŒåïŒ |
list_excel_templates | ååºå¯çš Excel æš¡æ¿ |
create_excel_from_template | ä»æš¡æ¿å建 Excel æä»¶ |
| å·¥å · | åèœ | é 眮项 |
|---|---|---|
kb_search | äŒäžç¥è¯åº glob æçŽ¢ | kb.enabled=true |
kb_read | 读åç¥è¯åºæä»¶ïŒè¿å MarkdownïŒ | kb.enabled=true |
crawl_url | æåçœé¡µå¹¶è¿å Markdown | web_crawl.enabled=true |
web_search | èçœæçŽ¢ | web_search.enabled=true |
æä»¬æ¯åŒºå€§ç All-in-One MCP ServerïŒåªéäžæ¬¡é 眮ïŒå³å¯äžºäœ ç AI 平尿äŸå®æŽç Agent èœåïŒ
æ ééæå€äžª MCP å·¥å ·ïŒäžäžª MCP Server å³å¯æ»¡è¶³ææéæ±ïŒ
æä»¬äžäž»æµ AI å¹³å°å®çŸéæïŒé 眮ç®åïŒåŒç®±å³çšïŒ
è¿å ¥ Dify å·¥äœæµé 眮
é 眮 MCP Server è¿æ¥
SSE å°å: http://your-server:8000/sse
讟眮请æ±å€ŽïŒå€ç§æ·é犻ïŒ
X-User-ID: {{user_id}}
X-Chat-ID: {{conversation_id}}
å®æïŒ ç°åšäœ ç Dify Agent æ¥æå®æŽçæä»¶æäœãä»£ç æ§è¡ãWeb éšçœ²çèœåã
è¿å ¥ FastGPT ç¥è¯åº/åºçšé 眮
é çœ®è¿æ¥ä¿¡æ¯
MCP Server URL: http://your-server:8000/sse
é çœ®çšæ·æ è¯ïŒå¯éïŒçšäºå€ç§æ·é犻ïŒ
èªå®ä¹ Header:
X-User-ID: {{userId}}
X-Chat-ID: {{chatId}}
å¯çšå·¥å ·ïŒææå·¥å ·èªåšå¯çšïŒæ éé䞪é 眮ïŒ
è¿å ¥ Cherry Studio 讟眮
é çœ®è¿æ¥
{
"name": "MCP Workspace Server",
"transport": "sse",
"url": "http://your-server:8000/sse"
}
讟眮äŒè¯æ è¯ïŒå€ç§æ·æ¯æïŒ
| äŒ ç»æ¹æ¡ | äœ¿çšæä»¬ç All-in-One MCP |
|---|---|
| éèŠé 眮 5+ 䞪äžåç MCP å·¥å · | åªéé 眮 1 䞪 MCP Server |
| æ¯äžªå·¥å ·éèŠåç¬è¿æ¥åè®€è¯ | äžæ¬¡é 眮ïŒå šéšå¯çš |
| å·¥å ·ä¹éŽåèœåæ£ïŒéŸä»¥ç»äžç®¡ç | åèœéäžïŒç»äžç®¡ç |
| äžåå·¥å ·çå®å šçç¥äžäžèŽ | ç»äžå®å šçç¥ïŒå šé¢ä¿æ€ |
| 绎æ€å€äžªæå¡çææ¬é« | 绎æ€ç®åïŒäžäžªæå¡æå® |
é çœ®å®æåïŒäœ ç AI Agent ç«å³æ¥æïŒ
äžäžª MCP Server = 宿Žç Agent èœåæ ð
# å
é项ç®
git clone <repository-url>
cd mcp-filesystem
# éŠæ¬¡éšçœ²ïŒæå»ºéåå¹¶å¯åš
docker-compose up -d --build
> åŠææ æ³äœ¿çšdockeréåæºïŒå¯ä»¥å
æ§è¡ export DOCKER_BUILDKIT=0
# æŽæ°ä»£ç åéå¯çæ
git pull && docker-compose restart
# æ¥çæ¥å¿
docker-compose logs -f
# ä»
åœäŸèµååæ¶éèŠéæ°æå»º
docker-compose up -d --build
ð¡ éåå å«è¿è¡ç¯å¢ïŒä»£ç éè¿ volume æèœœïŒæŽæ°ä»£ç åªé
git pull && docker-compose restart
â ïž éèŠè¯ŽæïŒæ¬é¡¹ç®è¿è¡ç¯å¢é«åºŠäŸèµ Docker åºç¡éåïŒå å«å®æŽç Python 3.12ãNode.js 20 è¿è¡ç¯å¢ä»¥åææç³»ç»äŸèµïŒåŠ Tesseract OCRãåŸåå€çåºçïŒã区çå»ºè®®äœ¿çš Docker æ¹åŒéšçœ²ïŒäžæšèæ¬å° Python çŽæ¥è¿è¡ãåŠéæ¬å°åŒåïŒè¯·ç¡®ä¿å·²å®è£ ææç³»ç»äŸèµã
ð 诊ç»éæè¯ŽæïŒè¯·æ¥çäžæ¹ç ð äž AI å¹³å°éæ ç« èïŒå å« DifyãFastGPTãCherry Studio ç宿Žé 眮æ¥éª€ã
å¿«éè¿æ¥ä¿¡æ¯ïŒ
http://your-server:8000/sseX-User-ID: {{userId}} æåºå®çšæ·IDX-Chat-ID: {{chatId}} æåºå®äŒè¯IDClaude DesktopïŒSTDIO æš¡åŒïŒïŒ
çŒèŸé 眮æä»¶ïŒ
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json{
"mcpServers": {
"mcp-workspace": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-filesystem",
"run",
"run_server.py",
"/path/to/allowed/dir1",
"/path/to/allowed/dir2"
]
}
}
}
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â AI å¹³å° (Dify / FastGPT / Cherry Studio) â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
â SSE + HTTP POST
â Headers: X-User-ID, X-Chat-ID
âŒ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â MCP Workspace Server (All-in-One) â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â äŒè¯ç®¡ç & 身仜è¯å« â â
â â (user_id + chat_id â workspace_name) â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â èæè·¯åŸèœ¬æ¢å± â â
â â /todo.txt â /user_data/xxx/todo.txt â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â è·¯åŸå®å
šéªè¯ â â
â â PathValidator + è·¯åŸéå鲿€ â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â æä»¶æäœæ§è¡ â â
â â FileOperations / AdvancedFileOperations â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â
âŒ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â ç©çæä»¶ç³»ç» â
â user_data/ â
â âââ user1_chat1/ â
â â âââ todo.txt â
â â âââ docs/ â
â âââ user1_chat2/ â
â âââ user2_chat1/ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
æäŸ HTTP æ¥å£çšäºçæ§ãè°è¯åè¿ç»Žã
Admin API éèŠ Bearer Token 讀è¯ãéŠå
é
眮 config.jsonïŒ
# å€å¶ç€ºäŸé
眮æä»¶
cp config.example.json config.json
# çŒèŸé
眮ïŒè®Ÿçœ®äœ ç管çåå¯é¥
vim config.json
{
"admin_token": "your-secret-admin-token-here"
}
ææ Admin API 请æ±å¿
é¡»æºåžŠ Authorization 倎ïŒ
curl -H "Authorization: Bearer your-secret-admin-token-here" \
http://localhost:8000/admin/stats
â ïž å®å šæç€ºïŒ
config.json已添å å°.gitignoreïŒè¯·å¿å°å ¶æäº€å°çæ¬åºã
GET /admin/stats
Authorization: Bearer <admin_token>
ååºç€ºäŸïŒ
{
"success": true,
"user_data_dir": "/path/to/user_data",
"total_workspaces": 15,
"unique_users": 8,
"total_size_bytes": 1048576,
"total_size_human": "1.00 MB",
"active_sessions": 3
}
GET /admin/workspaces
GET /admin/workspaces?user_id=user123
Authorization: Bearer <admin_token>
GET /admin/workspace/{workspace_id}
GET /admin/workspace/{workspace_id}/tree?max_depth=5
Authorization: Bearer <admin_token>
DELETE /admin/workspace/{workspace_id}?confirm=yes
Authorization: Bearer <admin_token>
â ïž èŠåïŒæ€æäœäžå¯éïŒå¿
须添å ?confirm=yes åæ°æèœæ§è¡å é€ã
äžºçšæ·æäŸæ é管çå Token çå·¥äœç©ºéŽç®åœæ æ¥è¯¢ã
GET /api/workspace/tree?user_id={user_id}&chat_id={chat_id}&max_depth=5
Authorization 倎user_id + chat_id ç»åçå·¥äœç©ºéŽconfig.json/config.example.json æ°å¢ excel 段èœïŒçšäºè®Ÿçœ®æå€§æä»¶å€§å°ãé»è®€è¯»åè¡æ°ãæ¯ææ ŒåŒäžå
¬åŒæ£æµåŒå
³ãexcel.templates_file é»è®€æå excel_templates/templates.jsonïŒæš¡æ¿æºæä»¶æŸåš excel_templates/ïŒå¯¹å€åªæŽé² title/descïŒcreate_excel_from_template äŒèªåšé¿åŒéåãéŠæ¬¡äœ¿çšæ¶ïŒè¯·ä» templates_example.json å€å¶å建 templates.jsonïŒå¹¶æ ¹æ®å®é
æ
åµé
眮暡æ¿è·¯åŸãMCP_EXCEL_MAX_ROWSãMCP_EXCEL_MAX_SIZE_MBãdocs/EXCEL_TOOLS.mdãconfig.json äžæ°å¢ mcp 段èœïŒå¯é
眮 transportïŒé»è®€ sseïŒãhostïŒé»è®€ 0.0.0.0ïŒãportïŒé»è®€ 18089ïŒã--transport/--host/--port äŒå
级é«äºé
眮æä»¶ãconfig.json æ°å¢ admin_web 段èœïŒenabled é»è®€ falseïŒpassword é»è®€ 123456ïŒãåŒå¯åè®¿é® http://<host>:<port>/adminïŒèŸå
¥å¯ç 坿¥ç user_data äžæä»¶æ å¹¶é¢è§ææ¬/Markdown/CSVãæ¥éª€ 1ïŒå建å端项ç®
Tool: fs_write
Arguments: {
"path": "/index.html",
"content": "<!DOCTYPE html>..."
}
æ¥éª€ 2ïŒäžé®éšçœ²
Tool: preview_frontend
Arguments: {
"entry_file": "index.html"
}
è¿åç»æïŒ
{
"success": true,
"url": "https://user123_chat456.proxy.your-domain.com/index.html",
"subdomain": "user123_chat456"
}
æ¥éª€ 3ïŒè®¿é®éšçœ²çåºçš
Tool: fs_read
Arguments: {
"path": "/file.txt",
"line_range": "100:150" # 读å第100-150è¡
}
Tool: fs_read
Arguments: {
"path": ["/file1.txt", "/file2.json", "/data.xlsx"]
}
Tool: fs_search
Arguments: {
"search_type": "content", # glob=ææä»¶å, content=æå
容
"pattern": "function\\s+\\w+\\(",
"context_lines": 2 # è¿åå¹é
è¡åå2è¡äžäžæ
}
Tool: fs_replace
Arguments: {
"path": "/config.py",
"diff": "------- SEARCH\nDEBUG = True\n========\nDEBUG = False\n+++++++ REPLACE"
}
Tool: exec
Arguments: {
"code": "print('Hello, World!')"
}
Tool: exec
Arguments: {
"file": "/script.py",
"args": ["--verbose", "input.txt"]
}
Tool: fs_read
Arguments: {
"path": "/data.xlsx",
"sheet": "Sheet1", # å¯éïŒæå®å·¥äœè¡š
"range": "A1:D100" # å¯éïŒæå®è¯»åèåŽ
}
Tool: fs_write
Arguments: {
"path": "/output.xlsx",
"content": [
["Name", "Age", "City"],
["Alice", 30, "Beijing"],
["Bob", 25, "Shanghai"]
]
}
Tool: excel_edit
Arguments: {
"path": "/data.xlsx",
"edit_type": "cells",
"sheet": "Sheet1",
"updates": [
{"cell": "A1", "value": "Updated Value"}
]
}
Tool: generate_image
Arguments: {
"mermaid_code": "flowchart TD\nA[åŒå§] --> B[å€ç] --> C[ç»æ]"
}
æäœ¿çš HTML æž²æå€æåŸè¡šïŒ
Tool: generate_image
Arguments: {
"html_code": "<html><body><h1>æ°æ®å¯è§å</h1>...</body></html>"
}
ç产ç¯å¢éšçœ²
æ°æ®é犻
X-User-ID å X-Chat-ID ç±å¯ä¿¡æ¥æºçæAdmin API ä¿æ€
location /admin/ {
allow 10.0.0.0/8;
deny all;
proxy_pass http://localhost:8000;
}
| åéå | 诎æ | é»è®€åŒ |
|---|---|---|
MCP_WORKSPACES_DIR | çšæ·å·¥äœç©ºéŽæ ¹ç®åœ | 项ç®ç®åœ/user_data |
MCP_ALLOWED_DIRS | å 讞访é®çç®åœå衚ïŒå šå±æš¡åŒïŒ | åœåå·¥äœç®åœ |
FASTMCP_PORT | æå¡åšç«¯å£ | 8000 |
æ¬¢è¿æäº€ Issue å Pull RequestïŒ
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows