十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

手搓阿里云盘 MCP:三个被实测推翻的坑

手搓阿里云盘 MCP:三个被实测推翻的坑 前两天想给 WorkBuddy 接一个阿里云盘连接器让 AI 助手能直接翻我网盘里的文件。翻了一圈没有现成能用的。官方没给个人开发者开门社区里能找到的脚本要么过时、要么压根跑不起来。那就自己手搓一个。下面把过程写下来尤其是三个坑都是我跑出来才发现的。网上旧文章和官方示例代码里全是错的照抄必挂。为什么自己写阿里云盘 2025 年 7 月之后暂停了个人开发者的应用申请官方邮件说要企业资质。所以现在个人想接 MCP只能走社区托管的授权路线去 alist 的授权页扫码拿 refresh_token再用这个 token 去api.alistgo.com换 access_token之后调阿里官方的开放接口。MCP 这边用 fastmcp 3.4.7 加 requests 就够了不依赖任何重框架。我一共做了 9 个工具查账号和容量、列目录、搜文件、看文件详情、建文件夹、重命名、移动、删除进回收站、拿下载链接。代码骨架server.py里用 fastmcp 的mcp.tool()装饰器一个函数对应一个工具。拿列目录举例mcp.tool() def list_files(parent_file_id: str root, limit: int 100) - dict: items api(adrive/v1.0/openFile/list, { drive_id: drive_id(), parent_file_id: parent_file_id, limit: limit, }) return {items: [_fmt_item(i) for i in items.get(items, [])]}api()是我封装的带鉴权、自动刷新的请求函数。token 统一存一份过期了用 refresh_token 悄悄换外部调用无感。坑一刷新 token 的请求体写错报 Incorrect GrantType我一开始照着 alist 旧文档写的是POST {code: refresh_token}。服务器回Incorrect GrantType。折腾半天才试出来正确写法是{grant_type: refresh_token, refresh_token: 你的token}那个三十多字符的 JWT 看着像授权码但代理端是按grant_type分流的。code会被当成授权码模式去校验自然过不了。坑的地方在于 refresh_token 是一次性消耗的试错顺序排不好直接作废得重新扫码。我后来把几种写法按可能性排了序第一个成功就落盘别瞎试。坑二用户信息接口路径是错的官方示例代码里写的是openUser/getDriveInfo实测 404。正确路径是user/getDriveInfo少了一层openUserd api(user/getDriveInfo)这个不改连账号名都拿不到。坑三容量不在用户信息里我本来想从getDriveInfo的返回里读total_size/used_size结果全是 null。容量要单独调user/getSpaceInfo而且字段包在personal_space_info里sp api(user/getSpaceInfo).get(personal_space_info, {}) used sp.get(used_size, 0) / (1024 ** 3) total sp.get(total_size, 0) / (1024 ** 3)我账号读出来是 909 GB / 1112 GB才算对。怎么跑起来环境我用的是隔离的 Python venvtoken 文件位置靠环境变量ALIPAN_TOKEN_FILE指定没写死进脚本。第一步打开 Get Aliyundrive Refresh Token | AList Docs 扫码拿 refresh_token。电脑浏览器点前往登录手机用阿里云盘 App 扫二维码。第二步换 token 并验证连通性python auth.py 粘贴refresh_token成功会打印账号名和容量。然后去 MCP 面板把连接器连上就行。我顺手写了个test_connection.py每次连接出问题先跑它能直接区分是 token 过期还是代码挂了python test_connection.py几个提醒access_token 两小时过期代码会自动刷不用管。refresh_token 大概 30 天失效到期重跑auth.py扫一次码。还有个隐蔽问题Python 在非 tty 下 stdout 是块缓冲的MCP 走 stdio 通信时可能卡死握手。我在mcp.json的启动命令里加了-u强制无缓冲就稳了args: [-u, C:/.../server.py]收尾这套东西现在跑通了9 个工具全实测可用。说真的个人接云盘 MCP 现阶段就是这么拧巴官方不给个人开发者开门只能走社区中转。能用但授权链路哪天挂了你得自己能排查。所以我把自检脚本留着了比到时候抓瞎强。如果你也在折腾阿里云盘 MCP那三个坑先对照一下省得跟我一样浪费半小时。完整能跑的代码我放到下篇了server.py / auth.py / test_connection.py 三个文件原样贴出来照着建就能用。关于我写这个 MCP 不是我的主业。我之前干的是药企实验室的 IT 自动化。本科物理化学、硕士计算机化学在一线实验室待过SOP、合规、样本流、仪器数据接口这些词不用解释客户张嘴我就懂。上面这个云盘 MCP是我给自己搭的顺手工具。我网盘里存的是平时整理的录音稿和技术资料让 AI 助手能直接翻不用我手动导出来贴。如果你那边实验室还在手填 Excel 报表、仪器数据靠人肉拷盘、合规文档一张张改可以聊聊。实验室自动化工具定制Office 一键生成报表仪器数据对接、LIMS 实施与定制合规文档自动化技术陪跑不是外包码农是听得懂业务、能跟你聊样本流的自家人。有痛点直接私信先聊清楚再动手。
返回列表