内容
# baidu-netdisk-xianyu
本仓库提供两个 [MCP](https://modelcontextprotocol.io/):
- **Baidu Netdisk MCP**:操作百度网盘
- **闲鱼 MCP**:操作闲鱼(goofish.com)网页
可在 Cursor / Claude / Grok 等 Agent 里用自然语言调用。
| MCP | 目录 | 作用 | 能否单独使用 |
|-----|------|------|----------------|
| **Baidu Netdisk MCP** | `baidu-netdisk-mcp/` | 列目录、搜索、管理、容量、分享等 | ✅ 可以只接网盘 |
| **闲鱼 MCP** | `xianyu-mcp/` | 登录、搜市场、草稿、发布、在售管理 | ✅ **可以只接闲鱼,不必装网盘** |
两者互不强制依赖。只想练闲鱼发布 → 只配置 `xianyu-mcp` 即可。
---
## ⚠️ 使用须知(请先读)
### 1. 仅供学习与自用自动化
本仓库代码与文档 **仅供学习交流、技术验证与个人自用自动化**。
- **不是**官方运营工具,也不保证长期稳定。
- 闲鱼侧通过 **浏览器自动化(Playwright)** 模拟网页操作,可能因页面改版、风控、登录态失效而失败。
- 请遵守 [百度网盘开放平台](https://pan.baidu.com/union/console/applist)、闲鱼 / 阿里体系用户协议与当地法律法规。
- **禁止**将本项目用于骚扰、批量违规上架、侵犯他人权益或其他违法用途。
- 使用本项目产生的一切后果由使用者自行承担;作者与贡献者不承担连带责任。
下载、使用本仓库即表示你已阅读并同意以上说明。
### 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 / 重置密钥**。
---
## 仓库结构
```text
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](https://docs.astral.sh/uv/)(推荐)
- 支持 MCP 的客户端:Cursor / Claude Desktop / Grok 等
```bash
# 检查
python3.12 --version
uv --version
```
---
## 方案 A:只使用闲鱼 MCP(推荐先跑通)
**不需要百度网盘、不需要 Access Token。**
### 1. 安装依赖
```bash
cd xianyu-mcp
uv sync
uv run playwright install chromium
```
### 2. 环境变量(可选)
文案/AI 生图需要模型 Key 时再配;**手写文案 + 本地图片路径可以不配 Key**:
```bash
cp .env.example .env
# 按需编辑 AGENT_LLM_API_KEY 等
```
### 3. 接到 MCP 客户端(以 Cursor 为例)
`~/.cursor/mcp.json` 或项目 `.cursor/mcp.json`:
```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 示例:
```bash
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. 最小使用流
1. 对话里让 Agent 调用 **`login`** → 在**弹出的浏览器**里扫码
2. **`draft_item`**:`image` = 本地图片绝对路径,`description` = 文案,`price` = 价格
3. 查看返回的草稿截图
4. 确认无误后再 **`publish_item`**(真实发布,谨慎)
5. **`get_selling_items`** 查看在售
常用工具:`login` / `search_market` / `draft_item` / `publish_item` / `get_selling_items` / `manage_item` / `get_page_content` / `restart_browser`
更细说明见 [`xianyu-mcp/README.md`](xianyu-mcp/README.md)。
---
## 方案 B:只使用 Baidu Netdisk MCP
**不需要闲鱼。**
### 1. 获取 Access Token
1. 打开 [百度网盘开放平台 · 我的应用](https://pan.baidu.com/union/console/applist) 创建应用
2. 完成 OAuth 授权,从回跳 URL 复制 `access_token`
3. 写入项目根目录 `.env`(**不要提交**):
```bash
cp .env.example .env
# 编辑:
# BAIDU_NETDISK_ACCESS_TOKEN=你的token
```
> MCP 鉴权用的是 **Access Token**,不是 App Key。App Key 只用于发起授权。
### 2. 安装 Baidu Netdisk MCP
```bash
cd baidu-netdisk-mcp
UV_PYTHON=python3.12 uv sync
```
### 3. 客户端配置示例
**方式 1:官方远程 SSE**(部分客户端可用)
```json
{
"mcpServers": {
"baidu-netdisk": {
"url": "https://mcp-pan.baidu.com/sse?access_token=你的AccessToken"
}
}
}
```
**方式 2:Baidu Netdisk MCP(stdio)**(Grok 等对 SSE 不友好时更稳)
```json
{
"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`](docs/MCP_INTEGRATION_FOR_AGENTS.md)。
---
## 方案 C:两个一起用(可选)
先接网盘查目录 → 素材落到本机路径 → 再调闲鱼 `draft_item` 发布。
**闲鱼上传封面需要本机文件路径或图片 URL**,一般不能直接传网盘 `fs_id`。
对话示例:
```text
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` | ✅ 可以 |
| 个人网盘导出清单 | 本地自用,勿提交 | ❌ 否 |
```bash
# 克隆后
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](https://github.com/TnoobT/FishClaw_MCP)(闲鱼 Playwright 自动化 MCP)。使用闲鱼相关能力时,请同时阅读其上游说明与免责声明;详见 [`xianyu-mcp/README.md`](xianyu-mcp/README.md)。
---
## 参考
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [百度网盘开放平台 · 应用列表](https://pan.baidu.com/union/console/applist)
- [百度网盘官方 MCP 说明(GitHub)](https://github.com/baidu-netdisk/mcp)
- [FishClaw_MCP](https://github.com/TnoobT/FishClaw_MCP) — 闲鱼自动化 MCP(`xianyu-mcp` 参考来源)
- 本仓库 Agent 接入细节:[`docs/MCP_INTEGRATION_FOR_AGENTS.md`](docs/MCP_INTEGRATION_FOR_AGENTS.md)
---
## License
[MIT](./LICENSE) © 2026 mousepotato
贡献代码前请确认你理解「学习 / 自用自动化」边界,勿将本项目包装为违规用途的工具。