
mousepotato/baidu-netdisk-xianyu
Browser automation百度网盘 - 闲鱼 MCP 一键发布
Overview
可在 Cursor / Claude / Grok 等 Agent 里用自然语言调用。 - **官方运营工具,也不保证长期稳定。 - 闲鱼侧通过 模拟网页操作,可能因页面改版、风控、登录态失效而失败。 - 请遵守 百度网盘开放平台、闲鱼 / 阿里体系用户协议与当地法律法规。 - **将本项目用于骚扰、批量违规上架、侵犯他人权益或其他违法用途。 - 使用本项目产生的一切后果由使用者自行承担;作者与贡献者不承担连带责任。 - - 仓库已提供 .env.example;真实文件名为 .env(已被 .gitignore 忽略)。 - **公开:Access Token、AppKey/SecretKey、闲鱼 Cookie、个人网盘目录导出(如 inventory/)。 - 若密钥曾出现在聊天记录或截图中,公开仓库前请 。 - macOS / Linux(Windows 需自行改路径) - Python (不建议 3.14) - uv(推荐) - 支持 MCP 的客户端:Cursor / Claude Desktop / Grok 等 ~/.cursor/mcp.json 或项目 .cursor/mcp.json: 1. 对话里让 Agent 调用 → 在**里扫码 2. :image = 本地图片绝对路径,description = 文案,price = 价格 3. 查看返回的草稿截图 4. 确认无误后再 (真实发布,谨慎) 5. 查看在售 常用工具:login / search_market / draft_item / publish_item / get_selling_items / manage_item / get_page_content / restart_browser 1. 打开 百度网盘开放平台 · 我的应用 创建应用 2. 完成 OAuth 授权,从回跳 URL 复制 access_token 3. 写入项目根目录 .env():
README
baidu-netdisk-xianyu
本仓库提供两个 MCP:
- Baidu Netdisk MCP:操作百度网盘
- 闲鱼 MCP:操作闲鱼(goofish.com)网页
可在 Cursor / Claude / Grok 等 Agent 里用自然语言调用。
| MCP | 目录 | 作用 | 能否单独使用 |
|---|---|---|---|
| Baidu Netdisk MCP | baidu-netdisk-mcp/ |
列目录、搜索、管理、容量、分享等 | ✅ 可以只接网盘 |
| 闲鱼 MCP | xianyu-mcp/ |
登录、搜市场、草稿、发布、在售管理 | ✅ 可以只接闲鱼,不必装网盘 |
两者互不强制依赖。只想练闲鱼发布 → 只配置 xianyu-mcp 即可。
⚠️ 使用须知(请先读)
1. 仅供学习与自用自动化
本仓库代码与文档 仅供学习交流、技术验证与个人自用自动化。
- 不是官方运营工具,也不保证长期稳定。
- 闲鱼侧通过 浏览器自动化(Playwright) 模拟网页操作,可能因页面改版、风控、登录态失效而失败。
- 请遵守 百度网盘开放平台、闲鱼 / 阿里体系用户协议与当地法律法规。
- 禁止将本项目用于骚扰、批量违规上架、侵犯他人权益或其他违法用途。
- 使用本项目产生的一切后果由使用者自行承担;作者与贡献者不承担连带责任。
下载、使用本仓库即表示你已阅读并同意以上说明。
2. 自动化相关边界
| 点 | 说明 |
|---|---|
| 闲鱼 = 网页自动化 | 会拉起浏览器;Cookie 存在本机 .cache/,不要提交到 git |
| 发布不可撤销 | publish_item 会真实点「发布」,务必先 draft_item 看截图再确认 |
| 日常浏览器 ≠ MCP 浏览器 | Chrome 里已登录闲鱼,不代表 Playwright 会话已登录 |
| 网盘 = 开放平台 API | 需要你自己的 Access Token;权限以你的应用与授权为准 |
| 频率与风控 | 请控制调用频率,避免短时间大量操作触发平台限制 |
3. 密钥与隐私
- 所有密钥只放本机
.env或 MCP 配置的env,禁止提交 git。 - 仓库已提供
.env.example;真实文件名为.env(已被.gitignore忽略)。 - 不要公开:Access Token、AppKey/SecretKey、闲鱼 Cookie、个人网盘目录导出(如
inventory/)。 - 若密钥曾出现在聊天记录或截图中,公开仓库前请 轮换 Token / 重置密钥。
仓库结构
baidu-netdisk-xianyu/
├── baidu-netdisk-mcp/ # Baidu Netdisk MCP(stdio)
│ ├── server.py
│ └── pyproject.toml
├── xianyu-mcp/ # 闲鱼 MCP(stdio)
│ ├── server.py
│ ├── tools/
│ └── .env.example
├── scripts/ # 可选:本机注册 / 校验辅助脚本
├── docs/ # 更细的 Agent 接入说明
├── .env.example # 网盘侧环境变量模板
├── .gitignore
└── README.md
环境要求
- macOS / Linux(Windows 需自行改路径)
- Python 3.12(不建议 3.14)
- uv(推荐)
- 支持 MCP 的客户端:Cursor / Claude Desktop / Grok 等
# 检查
python3.12 --version
uv --version
方案 A:只使用闲鱼 MCP(推荐先跑通)
不需要百度网盘、不需要 Access Token。
1. 安装依赖
cd xianyu-mcp
uv sync
uv run playwright install chromium
2. 环境变量(可选)
文案/AI 生图需要模型 Key 时再配;手写文案 + 本地图片路径可以不配 Key:
cp .env.example .env
# 按需编辑 AGENT_LLM_API_KEY 等
3. 接到 MCP 客户端(以 Cursor 为例)
~/.cursor/mcp.json 或项目 .cursor/mcp.json:
{
"mcpServers": {
"xianyu": {
"command": "uv",
"args": [
"--directory",
"/path/to/repo/xianyu-mcp",
"run",
"python",
"server.py"
],
"env": {
"PLAYWRIGHT_HEADLESS": "false",
"UV_PYTHON": "python3.12"
}
}
}
}
Grok 示例:
grok mcp add xianyu \
-e "PLAYWRIGHT_HEADLESS=false" \
-e "UV_PYTHON=python3.12" \
-- uv --directory /path/to/repo/xianyu-mcp run python server.py
4. 最小使用流
- 对话里让 Agent 调用
login→ 在弹出的浏览器里扫码 draft_item:image= 本地图片绝对路径,description= 文案,price= 价格- 查看返回的草稿截图
- 确认无误后再
publish_item(真实发布,谨慎) get_selling_items查看在售
常用工具:login / search_market / draft_item / publish_item / get_selling_items / manage_item / get_page_content / restart_browser
更细说明见 xianyu-mcp/README.md。
方案 B:只使用 Baidu Netdisk MCP
不需要闲鱼。
1. 获取 Access Token
- 打开 百度网盘开放平台 · 我的应用 创建应用
- 完成 OAuth 授权,从回跳 URL 复制
access_token - 写入项目根目录
.env(不要提交):
cp .env.example .env
# 编辑:
# BAIDU_NETDISK_ACCESS_TOKEN=你的token
MCP 鉴权用的是 Access Token,不是 App Key。App Key 只用于发起授权。
2. 安装 Baidu Netdisk MCP
cd baidu-netdisk-mcp
UV_PYTHON=python3.12 uv sync
3. 客户端配置示例
方式 1:官方远程 SSE(部分客户端可用)
{
"mcpServers": {
"baidu-netdisk": {
"url": "https://mcp-pan.baidu.com/sse?access_token=你的AccessToken"
}
}
}
方式 2:Baidu Netdisk MCP(stdio)(Grok 等对 SSE 不友好时更稳)
{
"mcpServers": {
"baidu-netdisk": {
"command": "uv",
"args": [
"--directory",
"/path/to/repo/baidu-netdisk-mcp",
"run",
"python",
"server.py"
],
"env": {
"BAIDU_NETDISK_ACCESS_TOKEN": "你的token",
"UV_PYTHON": "python3.12"
}
}
}
}
验证:让 Agent 执行「查网盘容量」「列出根目录」。
Baidu Netdisk MCP 常见工具:user_info / get_quota / file_list / file_keyword_search / 文件管理 / file_sharelink_set 等。
更细说明见 docs/MCP_INTEGRATION_FOR_AGENTS.md。
方案 C:两个一起用(可选)
先接网盘查目录 → 素材落到本机路径 → 再调闲鱼 draft_item 发布。
闲鱼上传封面需要本机文件路径或图片 URL,一般不能直接传网盘 fs_id。
对话示例:
1. 用 Baidu Netdisk MCP 列出 /某目录
2. 把封面图准备到 ~/Desktop/cover.png(本机路径)
3. 闲鱼 login
4. draft_item(image=..., description=..., price=...)
5. 确认截图后 publish_item
两个 MCP 在客户端配置里并列即可,名称自定。
密钥放哪里
| 内容 | 放哪 | 是否进 git |
|---|---|---|
| 百度 Access Token / AppKey / Secret | 项目根 .env 或 MCP env |
❌ 否 |
| 闲鱼 Cookie | xianyu-mcp/.cache/(运行后自动生成) |
❌ 否 |
| 模板 | .env.example、xianyu-mcp/.env.example |
✅ 可以 |
| 个人网盘导出清单 | 本地自用,勿提交 | ❌ 否 |
# 克隆后
cp .env.example .env
cp xianyu-mcp/.env.example xianyu-mcp/.env
# 只填你需要的那一侧
常见问题
Q: 不想接百度,只想发闲鱼?
A: 可以。只配置 xianyu-mcp,忽略 baidu-netdisk-mcp 与网盘 Token。
Q: 不想接闲鱼,只想让 Agent 管网盘?
A: 可以。只配置 Baidu Netdisk MCP(目录 baidu-netdisk-mcp/)。
Q: Token / 登录总失败?
A: 网盘 → 重新 OAuth 换 Token;闲鱼 → 在 Playwright 弹出窗口扫码,必要时 restart_browser 后再 login。
Q: 官方 SSE 握手 405?
A: 改用 Baidu Netdisk MCP 的 stdio 模式(baidu-netdisk-mcp/)。
Q: Python 依赖装不上?
A: 使用 3.12:UV_PYTHON=python3.12 uv sync。
免责声明(摘要)
本项目 仅供学习与个人自用自动化研究,不提供任何经营担保。
使用者应自行确保操作符合平台规则与法律法规;因滥用、违规、密钥泄露、账号封禁等导致的损失,由使用者自行负责。
本仓库 xianyu-mcp 参考并借鉴了 FishClaw_MCP(闲鱼 Playwright 自动化 MCP)。使用闲鱼相关能力时,请同时阅读其上游说明与免责声明;详见 xianyu-mcp/README.md。
参考
- Model Context Protocol
- 百度网盘开放平台 · 应用列表
- 百度网盘官方 MCP 说明(GitHub)
- FishClaw_MCP — 闲鱼自动化 MCP(
xianyu-mcp参考来源) - 本仓库 Agent 接入细节:
docs/MCP_INTEGRATION_FOR_AGENTS.md
License
MIT © 2026 mousepotato
贡献代码前请确认你理解「学习 / 自用自动化」边界,勿将本项目包装为违规用途的工具。
Install
This server does not publish a one-line install command.
Open the repository installation guideConfiguration
{
"mcpServers": {
"xianyu": {
"command": "uv",
"args": [
"--directory",
"/path/to/repo/xianyu-mcp",
"run",
"python",
"server.py"
],
"env": {
"PLAYWRIGHT_HEADLESS": "false",
"UV_PYTHON": "python3.12"
}
}
}
}