用 Python 写了个异步 MCP Filesystem,小而简,欢迎拍砖 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
enrolls
V2EX    Python

用 Python 写了个异步 MCP Filesystem,小而简,欢迎拍砖

  •  
  •   enrolls
    harmonsir 38 天前 2418 次点击
    这是一个创建于 38 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么还要做一个 MCP Filesystem 的 Python 实现?

    目前 MCP 生态里,很多能力是 Node.js 实现的,Python 这边要么只是封装一层,要么偏同步阻塞。对那种“我就想写个 async 小工具”的场景,其实不太友好:

    • 整条链路最好都是 async I/O,跟主流生态对齐
    • 不想为了这点能力额外引一堆依赖
    • 返回结构要规整,人能看懂还不够,AI 也得读得舒服

    所以在自己的 MCP 工具里,基于官方协议搞了一个「精简版」实现,主要特点:

    • 异步 I/O 实现:接口全部是 async,方便直接接到现有的 async Web 框架 / 任务系统
    • 无第三方依赖(基础操作):只用标准库,适合受限环境或者简单脚本项目
    • 结构体友好:返回体设计得比较规整,方便后面再封装成 dataclass / Pydantic 等
    • 代码简单有注释:逻辑刻意写得直白,没有做重度优化,更适合 fork 下来按自己需求魔改

    可以自行 TODO / 二次开发的方向包括:

    • 更严格的读写保证与错误处理(重试、限流、幂等等)
    • 目录边界策略调整:
      • 目前通过 DATA_DIR 做目录沙箱,防止越界访问,避免一上来就摸整个磁盘
      • 也可以根据业务需要去掉或替换为自定义根目录、甚至开放整盘访问

    Github 项目地址:

    mcp-filesystem-python

    技术含量不多,纯粹有相同需求的人可以不用再思考太多,直接用,也可以当作组件拼接到其他地方。

    2 条回复    2025-11-07 10:34:43 +08:00
    ruanimal
        1
    ruanimal  
       38 天前   1
    同级有相同的包和模块文件,逆天。。。
    enrolls
        2
    enrolls  
    OP
       38 天前
    @ruanimal 哦,顶,你是对的,谢谢你的修正。我自己是从 mcp_gateway.py 或者 app_with_stray.py 进的 [捂脸]
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3124 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 11:28 PVG 19:28 LAX 03:28 JFK 06:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86