Skip to content

Latest commit

ย 

History

History
executable file
ยท
699 lines (542 loc) ยท 23.3 KB

File metadata and controls

executable file
ยท
699 lines (542 loc) ยท 23.3 KB

MCP Workspace Server

English | ไธญๆ–‡

License

๐Ÿš€ ๅช้œ€ไธ€ไธช 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/../../..                    โŒ ่ขซ้˜ปๆญข

ๅฎ‰ๅ…จๆœบๅˆถ๏ผš

  1. ่ทฏๅพ„่งฃๆž๏ผšไฝฟ็”จ Path.resolve() ่งฃๆžๆ‰€ๆœ‰ .. ๅ’Œ็ฌฆๅท้“พๆŽฅ
  2. ่พน็•Œๆฃ€ๆŸฅ๏ผš้ชŒ่ฏ่งฃๆžๅŽ็š„่ทฏๅพ„ๆ˜ฏๅฆๅœจๅ…่ฎธ่Œƒๅ›ดๅ†…
  3. ๅŒ้‡ไฟๆŠค๏ผšๅณไฝฟ่ทฏๅพ„่ขซ่งฃๆž๏ผŒไปๅฟ…้กปๅœจ 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.com
  • user789_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

  1. ่ฟ›ๅ…ฅ Dify ๅทฅไฝœๆต้…็ฝฎ

    • ๆทปๅŠ  MCP Tool ่Š‚็‚น
    • ้€‰ๆ‹ฉ SSE ไผ ่พ“ๅ่ฎฎ
  2. ้…็ฝฎ MCP Server ่ฟžๆŽฅ

    SSE ๅœฐๅ€: http://your-server:8000/sse
    
  3. ่ฎพ็ฝฎ่ฏทๆฑ‚ๅคด๏ผˆๅคš็งŸๆˆท้š”็ฆป๏ผ‰

    X-User-ID: {{user_id}}
    X-Chat-ID: {{conversation_id}}
    
  4. ๅฎŒๆˆ๏ผ ็Žฐๅœจไฝ ็š„ Dify Agent ๆ‹ฅๆœ‰ๅฎŒๆ•ด็š„ๆ–‡ไปถๆ“ไฝœใ€ไปฃ็ ๆ‰ง่กŒใ€Web ้ƒจ็ฝฒ็ญ‰่ƒฝๅŠ›ใ€‚

FastGPT

  1. ่ฟ›ๅ…ฅ FastGPT ็Ÿฅ่ฏ†ๅบ“/ๅบ”็”จ้…็ฝฎ

    • ๆทปๅŠ  ๅค–้ƒจๅทฅๅ…ท โ†’ MCP
    • ไผ ่พ“ๆ–นๅผ้€‰ๆ‹ฉ SSE
  2. ้…็ฝฎ่ฟžๆŽฅไฟกๆฏ

    MCP Server URL: http://your-server:8000/sse
    
  3. ้…็ฝฎ็”จๆˆทๆ ‡่ฏ†๏ผˆๅฏ้€‰๏ผŒ็”จไบŽๅคš็งŸๆˆท้š”็ฆป๏ผ‰

    ่‡ชๅฎšไน‰ Header:
    X-User-ID: {{userId}}
    X-Chat-ID: {{chatId}}
    
  4. ๅฏ็”จๅทฅๅ…ท๏ผšๆ‰€ๆœ‰ๅทฅๅ…ท่‡ชๅŠจๅฏ็”จ๏ผŒๆ— ้œ€้€ไธช้…็ฝฎ๏ผ

Cherry Studio

  1. ่ฟ›ๅ…ฅ Cherry Studio ่ฎพ็ฝฎ

    • ๆ‰“ๅผ€ MCP Servers ้…็ฝฎ
    • ๆทปๅŠ ๆ–ฐ็š„ MCP Server
  2. ้…็ฝฎ่ฟžๆŽฅ

    {
      "name": "MCP Workspace Server",
      "transport": "sse",
      "url": "http://your-server:8000/sse"
    }
  3. ่ฎพ็ฝฎไผš่ฏๆ ‡่ฏ†๏ผˆๅคš็งŸๆˆทๆ”ฏๆŒ๏ผ‰

    • 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}} ๆˆ–ๅ›บๅฎš็”จๆˆทID
    • X-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>"
}

๐Ÿ” ๅฎ‰ๅ…จๆœ€ไฝณๅฎž่ทต

  1. ็”Ÿไบง็Žฏๅขƒ้ƒจ็ฝฒ

    • ไฝฟ็”จๅๅ‘ไปฃ็†๏ผˆNginx๏ผ‰ๅค„็† HTTPS
    • ้™ๅˆถ่ฎฟ้—ฎ IP ๆˆ–ไฝฟ็”จ API ๅฏ†้’ฅ่ฎค่ฏ
    • ่ฎพ็ฝฎๅˆ็†็š„่ฏทๆฑ‚้ข‘็އ้™ๅˆถ
  2. ๆ•ฐๆฎ้š”็ฆป

    • ็กฎไฟ X-User-ID ๅ’Œ X-Chat-ID ็”ฑๅฏไฟกๆฅๆบ็”Ÿๆˆ
    • ๅฎšๆœŸๆธ…็†่ฟ‡ๆœŸ็š„ไผš่ฏๅทฅไฝœ็›ฎๅฝ•
  3. 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

๐Ÿ“„ ่ฎธๅฏ่ฏ

Apache License 2.0

๐Ÿค ่ดก็Œฎ

ๆฌข่ฟŽๆไบค Issue ๅ’Œ Pull Request๏ผ