MCP Workspace Server
An all-in-one MCP server providing complete AI agent capabilities including file operations, code execution (Python/Node.js), one-click web deployment with wildcard domain support, Excel/CSV processing, and image generation in isolated multi-tenant workspaces.
README
MCP Workspace Server
English | äžæ
ð åªéäžäžª MCPïŒå°±èœå®ç°äœ çå®æŽ Agent èœåïŒ
è¶ è¶æä»¶ç³»ç»ç AI åŒåç¯å¢ - 让 AI å Claude Code äžæ ·è¿è¡å®æŽç Web åŒåãæ°æ®å€çåä»£ç æ§è¡
ð¡ æ žå¿ä»·åŒïŒæ ééæå€äžª MCP å·¥å ·ïŒäžäžª MCP æå¡åšå³å¯æäŸæä»¶æäœãä»£ç æ§è¡ãWeb éšçœ²ãæ°æ®å€çãåŸåçæç宿Žç Agent èœåãåŒç®±å³çšïŒäžç«åŒè§£å³æ¹æ¡ã
äžäžªåèœåŒºå€§ç MCP (Model Context Protocol) æå¡åšïŒäžä» æäŸå®å šçæä»¶ç³»ç»æäœïŒæŽæ¯äžäžªå®æŽç AI åŒåå·¥äœç©ºéŽãæ¯æä»£ç æ§è¡ãWeb åºçšäžé®éšçœ²ãæ³åå访é®ãExcel å€çãåŸåçæçäŒäžçº§èœåã
⚠䞺ä»ä¹éæ©æä»¬ïŒ
ð¯ äžäžª MCPïŒå®æŽ Agent èœå
äŒ ç»æ¹æ¡ïŒéèŠéæå€äžª MCP å·¥å ·æèœå®ç°å®æŽåèœ
- â æä»¶æäœ â éèŠäžäžª MCP
- â ä»£ç æ§è¡ â éèŠåŠäžäžª MCP
- â Web éšçœ² â éèŠç¬¬äžäžª MCP
- â æ°æ®å€ç â éèŠç¬¬å䞪 MCP
- â åŸåçæ â éèŠç¬¬äºäžª MCP
- ç»æïŒé çœ®å€æã绎æ€å°éŸãåèœåæ£
æä»¬çæ¹æ¡ïŒåªéäžäžª MCPïŒææèœååŒç®±å³çš
- â æä»¶æäœ + ä»£ç æ§è¡ + Web éšçœ² + æ°æ®å€ç + åŸåçæ
- â ç»äžé 眮ïŒäžæ¬¡é 眮ïŒå šéšå¯çš
- â ç»äžç®¡çïŒäžäžªæå¡ïŒéäžç®¡ç
- â ç»äžå®å šïŒäžå¥å®å šçç¥ïŒå šé¢ä¿æ€
æä»¬æäŸçæ¯å®æŽç AI åŒåå·¥äœç©ºéŽïŒèœåè¿è¶ äŒ ç»æä»¶ç³»ç»æå¡åšïŒ
- ð Web åŒåèœåïŒAI å¯ä»¥åå»ºå®æŽç Web åºçšïŒHTML/CSS/JSïŒïŒå¹¶äžé®éšçœ²å°ç产ç¯å¢
- ð æ³ååéšçœ²ïŒæ¯æ
*.your-domain.comæ³ååïŒæ¯äžªäŒè¯èªåšè·åŸç¬ç«åååè®¿é® - ð» ä»£ç æ§è¡ïŒå 眮 Python 3.12 å Node.js 20 æ²çç¯å¢ïŒæ¯æä»£ç 宿¶æ§è¡åè°è¯
- ð æ°æ®å€çïŒå®æŽç Excel/CSV å€çèœåïŒæ¯ææš¡æ¿ãå ¬åŒãæ ŒåŒå
- ðš åŸåçæïŒæ¯æ Mermaid æµçšåŸãæ°æ®åŸè¡šãHTML æž²æçå€ç§åŸåçææ¹åŒ
- ð æºèœæçŽ¢ïŒæä»¶å 容æçŽ¢ãç¥è¯åºæ£çŽ¢ãçœé¡µæåçé«çº§èœå
- ð äŒäžçº§å®å šïŒå€ç§æ·é犻ãè·¯åŸå®å šé²æ€ãèµæºéå¶ãæ²çæ§è¡
ð All-in-One äŒå¿
| äŒ ç»æ¹æ¡ | æä»¬çæ¹æ¡ |
|---|---|
| éèŠ 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
äŒå¿ïŒ
- â äžæŽé²æå¡åšçå®ç®åœç»æ
- â AI 平尿 æ³è·ç¥ç©çè·¯åŸä¿¡æ¯
- â ç®å AI çæä»¶æäœæä»€
- â æåå®å šæ§åéç§ä¿æ€
ð è·¯åŸå®å šé²æ€
å 眮å€å±å®å šæºå¶ïŒé²æ¢è·¯åŸéåæ»å»ïŒ
æ»å»å°è¯ ç»æ
âââââââââââââââââââââââââââââââââââââââââââââââââ
/../../../etc/passwd â è¢«é»æ¢
../../../etc/passwd â è¢«é»æ¢
/foo/../../../etc/passwd â è¢«é»æ¢
/foo/bar/../../.. â è¢«é»æ¢
å®å šæºå¶ïŒ
- è·¯åŸè§£æïŒäœ¿çš
Path.resolve()è§£æææ..å笊å·éŸæ¥ - èŸ¹çæ£æ¥ïŒéªè¯è§£æåçè·¯åŸæ¯åŠåšå 讞èåŽå
- åéä¿æ€ïŒå³äœ¿è·¯åŸè¢«è§£æïŒä»å¿
é¡»åš
allowed_dirså
ð¡ SSE äŒ èŸåè®®
æ¯æ Server-Sent Events (SSE) äŒ èŸïŒéé åç±» AI å¹³å°ïŒ
客æ·ç«¯ æå¡åš
â â
âââââ GET /sse âââââââââââââââââââââââ¶â å»ºç« SSE è¿æ¥
âââââ SSE: endpoint=/messages?sid=xxx â è¿åæ¶æ¯ç«¯ç¹
â â
âââââ POST /messages?session_id=xxx ââ¶â åéå·¥å
·è°çš
âââââ SSE: message (ååº) ââââââââââââ æ¥æ¶ç»æ
ð äžé®éšçœ²äžæ³å忝æ
äžé®éšçœ² Web åºçšïŒ
- AI å建çå端项ç®å¯éè¿
preview_frontendå·¥å ·äžé®éšçœ² - èªåšçæå¯è®¿é®ç URLïŒæ¯æ HTTPS
- æ¯æèªå®ä¹å ¥å£æä»¶åç®åœç»æ
æ³ååéšçœ²ïŒç产ç¯å¢ïŒïŒ
{
"preview": {
"wildcard_domain": "*.proxy.your-domain.com",
"use_tls": true
}
}
é 眮åïŒæ¯äžªäŒè¯èªåšè·åŸç¬ç«åååïŒ
user123_chat456.proxy.your-domain.comuser789_chat012.proxy.your-domain.com
äŒå¿ïŒ
- â æ éæåšé 眮ååå端å£
- â èªåšé犻ïŒäºäžå¹²æ°
- â æ¯æ HTTPSïŒç产就绪
- â åç«¯å£æå¡ïŒç®åéšçœ²
ðР宿Žåèœå衚
ð» Web åŒåäžéšçœ²
| å·¥å · | åèœ | äº®ç¹ |
|---|---|---|
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=æå 容æ£åïŒ |
ð Excel æ°æ®å€ç
| å·¥å · | åèœ |
|---|---|
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 |
ð äž AI å¹³å°éæ
ð¯ 䞺ä»ä¹éæ©æä»¬äœäžºäœ ç MCP ServerïŒ
æä»¬æ¯åŒºå€§ç All-in-One MCP ServerïŒåªéäžæ¬¡é 眮ïŒå³å¯äžºäœ ç AI 平尿äŸå®æŽç Agent èœåïŒ
- â æä»¶æäœïŒè¯»åãæçŽ¢ãçŒèŸæä»¶
- â ä»£ç æ§è¡ïŒPython/Node.js æ²çç¯å¢
- â Web éšçœ²ïŒäžé®éšçœ²å端åºçšïŒæ¯ææ³åå
- â æ°æ®å€çïŒExcel/CSV 宿Žå€çèœå
- â åŸåçæïŒMermaid æµçšåŸãæ°æ®åŸè¡š
- â æºèœæçŽ¢ïŒç¥è¯åºæ£çŽ¢ãçœé¡µæåïŒå¯éïŒ
æ ééæå€äžª MCP å·¥å ·ïŒäžäžª MCP Server å³å¯æ»¡è¶³ææéæ±ïŒ
ð æ¯æç AI å¹³å°
æä»¬äžäž»æµ AI å¹³å°å®çŸéæïŒé 眮ç®åïŒåŒç®±å³çšïŒ
Dify
-
è¿å ¥ Dify å·¥äœæµé 眮
- æ·»å MCP Tool èç¹
- éæ© SSE äŒ èŸåè®®
-
é 眮 MCP Server è¿æ¥
SSE å°å: http://your-server:8000/sse -
讟眮请æ±å€ŽïŒå€ç§æ·é犻ïŒ
X-User-ID: {{user_id}} X-Chat-ID: {{conversation_id}} -
å®æïŒ ç°åšäœ ç Dify Agent æ¥æå®æŽçæä»¶æäœãä»£ç æ§è¡ãWeb éšçœ²çèœåã
FastGPT
-
è¿å ¥ FastGPT ç¥è¯åº/åºçšé 眮
- æ·»å å€éšå·¥å · â MCP
- äŒ èŸæ¹åŒéæ© SSE
-
é çœ®è¿æ¥ä¿¡æ¯
MCP Server URL: http://your-server:8000/sse -
é çœ®çšæ·æ è¯ïŒå¯éïŒçšäºå€ç§æ·é犻ïŒ
èªå®ä¹ Header: X-User-ID: {{userId}} X-Chat-ID: {{chatId}} -
å¯çšå·¥å ·ïŒææå·¥å ·èªåšå¯çšïŒæ éé䞪é 眮ïŒ
Cherry Studio
-
è¿å ¥ Cherry Studio 讟眮
- æåŒ MCP Servers é 眮
- æ·»å æ°ç MCP Server
-
é çœ®è¿æ¥
{ "name": "MCP Workspace Server", "transport": "sse", "url": "http://your-server:8000/sse" } -
讟眮äŒè¯æ è¯ïŒå€ç§æ·æ¯æïŒ
- Cherry Studio äŒèªåšäŒ éçšæ·åäŒè¯ä¿¡æ¯
- æ¯äžªäŒè¯è·åŸç¬ç«çå·¥äœç©ºéŽ
ð¡ éæäŒå¿
| äŒ ç»æ¹æ¡ | äœ¿çšæä»¬ç All-in-One MCP |
|---|---|
| éèŠé 眮 5+ 䞪äžåç MCP å·¥å · | åªéé 眮 1 䞪 MCP Server |
| æ¯äžªå·¥å ·éèŠåç¬è¿æ¥åè®€è¯ | äžæ¬¡é 眮ïŒå šéšå¯çš |
| å·¥å ·ä¹éŽåèœåæ£ïŒéŸä»¥ç»äžç®¡ç | åèœéäžïŒç»äžç®¡ç |
| äžåå·¥å ·çå®å šçç¥äžäžèŽ | ç»äžå®å šçç¥ïŒå šé¢ä¿æ€ |
| 绎æ€å€äžªæå¡çææ¬é« | 绎æ€ç®åïŒäžäžªæå¡æå® |
ð åŒç®±å³çšçèœå
é çœ®å®æåïŒäœ ç AI Agent ç«å³æ¥æïŒ
- ð æä»¶æäœïŒå建ã读åãçŒèŸãæçŽ¢æä»¶
- ð» ä»£ç æ§è¡ïŒè¿è¡ Python/Node.js èæ¬ïŒå®æ¶è°è¯
- ð Web åŒåïŒå建å端åºçšå¹¶äžé®éšçœ²å°ç产ç¯å¢
- ð æ°æ®å€çïŒè¯»åãçŒèŸ ExcelïŒçææ¥å
- ðš åŸåçæïŒå建æµçšåŸãæ°æ®å¯è§ååŸè¡š
- ð æºèœæçŽ¢ïŒæä»¶å 容æçŽ¢ãç¥è¯åºæ£çŽ¢ïŒåŠå¯çšïŒ
äžäžª MCP Server = 宿Žç Agent èœåæ ð
ð å¿«éåŒå§
Docker éšçœ²ïŒæšèïŒ
# å
é项ç®
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 ç宿Žé 眮æ¥éª€ã
å¿«éè¿æ¥ä¿¡æ¯ïŒ
- SSE å°å:
http://your-server:8000/sse - 请æ±å€ŽïŒå€ç§æ·é犻ïŒ:
X-User-ID:{{userId}}æåºå®çšæ·IDX-Chat-ID:{{chatId}}æåºå®äŒè¯ID
Claude DesktopïŒSTDIO æš¡åŒïŒïŒ
çŒèŸé 眮æä»¶ïŒ
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%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/ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
ð§ 管çå API
æäŸ 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 åæ°æèœæ§è¡å é€ã
ð€ çšæ·å·¥äœç©ºéŽ API
äžºçšæ·æäŸæ é管çå Token çå·¥äœç©ºéŽç®åœæ æ¥è¯¢ã
GET /api/workspace/tree?user_id={user_id}&chat_id={chat_id}&max_depth=5
- äžéèŠ
Authorization倎 - ä»
è¿å对åº
user_id + chat_idç»åçå·¥äœç©ºéŽ - æ¯äžªç®åœå±çº§ææè¿ä¿®æ¹æ¶éŽæåºïŒä» ä¿çå 20 䞪æä»¶/æä»¶å€¹ïŒå ¶äœçŽæ¥è¿æ»€ä»¥èç垊宜
ð§© Excel é 眮
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ïŒã- CLI åæ°
--transport/--host/--portäŒå 级é«äºé 眮æä»¶ã - Web 管ççé¢ïŒ
config.jsonæ°å¢admin_web段èœïŒenabledé»è®€falseïŒpasswordé»è®€123456ïŒãåŒå¯å访é®http://<host>:<port>/adminïŒèŸå ¥å¯ç 坿¥ç user_data äžæä»¶æ å¹¶é¢è§ææ¬/Markdown/CSVã
ð 䜿çšç€ºäŸ
ð Web åŒå宿޿µçš
æ¥éª€ 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ïŒè®¿é®éšçœ²çåºçš
- èªåšè·åŸç¬ç«ååå
- æ¯æ HTTPSïŒåŠé 眮ïŒ
- æ éæåšé 眮端å£ååå
ð» ä»£ç æ§è¡äžè°è¯
读åæä»¶ïŒæ¯æè¡èåŽïŒ
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"
}
æ§è¡ Python 代ç
Tool: exec
Arguments: {
"code": "print('Hello, World!')"
}
æ§è¡ Python æä»¶
Tool: exec
Arguments: {
"file": "/script.py",
"args": ["--verbose", "input.txt"]
}
读å Excel æä»¶
Tool: fs_read
Arguments: {
"path": "/data.xlsx",
"sheet": "Sheet1", # å¯éïŒæå®å·¥äœè¡š
"range": "A1:D100" # å¯éïŒæå®è¯»åèåŽ
}
å建 Excel æä»¶
Tool: fs_write
Arguments: {
"path": "/output.xlsx",
"content": [
["Name", "Age", "City"],
["Alice", 30, "Beijing"],
["Bob", 25, "Shanghai"]
]
}
çŒèŸ Excel æä»¶
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>"
}
ð å®å šæäœ³å®è·µ
-
ç产ç¯å¢éšçœ²
- 䜿çšåå代çïŒNginxïŒå€ç HTTPS
- éå¶è®¿é® IP æäœ¿çš API å¯é¥è®€è¯
- 讟眮åçç请æ±é¢çéå¶
-
æ°æ®é犻
- ç¡®ä¿
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ïŒ
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.