MCP service for Xianyu (闲鱼) with Playwright browser automation
Project description
xianyu-mcp
xianyu-mcp 是一个面向 MCP 客户端使用者的闲鱼 MCP Server。它通过 Playwright 和闲鱼网页能力,提供登录、商品发布、收藏管理、商品查询、卖家主页读取等能力。
你可以把它接入支持 MCP 的客户端,例如 Codex、Claude Code、MCP Inspector,或任何兼容 stdio / streamable_http 的 MCP 工具。
它能做什么
- 登录闲鱼账号,获取扫码二维码并轮询登录结果
- 登录二维码会保存到本地
screenshots/目录,并返回可供用户打开的图片文件提示 - 发布商品、下架商品、删除商品
- 搜索商品、读取商品详情、读取首页推荐
- 添加收藏、取消收藏、读取收藏列表
- 读取我发布的商品列表、读取卖家主页信息
- 通过
analyze_goods工具生成商品分析提示词和分析上下文数据
当前项目实际注册了 16 个 MCP tools。
环境要求
- Python 3.10 或更高版本
- 可正常启动的 Chromium 浏览器环境
- 能访问闲鱼网页
通过 uvx 使用(推荐)
无需手动安装,uvx 会自动处理。
Claude Code 配置
claude mcp add xianyu -e MCP_TRANSPORT=stdio -- uvx xianyu-mcp
首次运行
首次运行会自动安装 Playwright Chromium(约需 1-2 分钟)。
快速开始
方式一:默认作为 stdio MCP Server 运行
默认启动方式是 stdio,适合 Claude Code 等 MCP 客户端以子进程方式拉起。
xianyu-mcp
如果命令行入口不可用,也可以这样启动:
python -m xianyu_mcp
方式二:作为本地 streamable_http MCP Server 运行
如果需要常驻服务供多个客户端复用,可切换到 streamable_http:
MCP_TRANSPORT=streamable_http
然后启动服务:
xianyu-mcp
默认地址为:
http://127.0.0.1:18000/mcp
配置
你可以通过环境变量或 .env 文件调整运行行为。常用项如下:
| 变量 | 默认值 | 说明 |
|---|---|---|
HEADLESS |
true |
是否使用无头浏览器 |
PAGE_TIMEOUT |
30000 |
页面操作超时,单位毫秒 |
SLOW_MO |
0 |
浏览器慢动作延时,单位毫秒 |
COOKIE_AUTO_SYNC_ENABLED |
true |
是否开启 Cookie 自动同步 |
COOKIE_SYNC_INTERVAL_SECONDS |
600 |
Cookie 同步间隔,单位秒 |
COOKIE_SYNC_TIMEOUT_SECONDS |
30 |
单次 Cookie 同步超时,单位秒 |
AUTO_SCREENSHOT |
false |
是否自动截图 |
SCREENSHOT_DIR |
./screenshots |
截图目录 |
LOG_LEVEL |
INFO |
日志级别 |
MCP_TRANSPORT |
stdio |
传输模式:stdio 或 streamable_http |
MCP_TOOL_TIMEOUT_SECONDS |
10 |
单个工具调用超时,单位秒 |
MCP_HTTP_HOST |
127.0.0.1 |
HTTP 模式监听地址 |
MCP_HTTP_PORT |
18000 |
HTTP 模式监听端口 |
MCP_STREAMABLE_HTTP_PATH |
/mcp |
HTTP 模式路径 |
例如,如果你想看到浏览器界面:
HEADLESS=false
Tools 一览
账号登录
check_login_status:检查当前是否已登录get_login_qrcode:获取登录二维码(二维码图片保存到本地screenshots/)check_login_scan_result:检查扫码结果(人脸验证时同样返回本地二维码文件提示)logout:退出登录并清理本地会话
商品查询与收藏
search_goods:按关键词搜索商品(支持价格/排序/快速筛选)get_home_goods:读取首页推荐商品get_goods_detail:读取商品详情(支持传入商品 ID 或链接)get_favorites:读取收藏列表add_favorite:收藏商品remove_favorite:取消收藏
发布与我的商品管理
get_my_goods:读取我发布的商品列表publish_goods:发布商品take_down_goods:下架商品delete_goods:删除商品
卖家与分析
get_seller_profile:读取卖家主页信息(默认含商品与评价,最多各 10 条)analyze_goods:生成商品风险与价格分析提示词(返回 prompt + 商品/卖家数据)
发布新版本到 PyPI
修改代码后,更新 pyproject.toml 中的版本号,然后:
# 安装构建工具(首次需要,指定官方源)
pip install hatch twine -i https://pypi.org/simple/
# 构建
hatch build
# 上传到 PyPI
# Username: __token__
# Password: 在 https://pypi.org/manage/account/ 的 API tokens 中创建
python -m twine upload dist/*
# 验证上传成功
uvx xianyu-mcp==<新版本号> --help
注意:上传后 PyPI 同步约需 1-2 分钟,验证前稍等片刻。
使用建议
- 默认使用
stdio,适合 Claude Code 等 MCP 客户端以子进程方式拉起 - 如果需要常驻服务给多个客户端复用,可切换到
streamable_http - 首次启动会自动安装 Playwright/Chromium,启动超时建议适当放宽
- 登录、发布商品这类依赖页面状态的操作,建议先确认账号已登录
- 不考虑制作购买和聊天的工具。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xianyu_mcp-0.0.1.tar.gz.
File metadata
- Download URL: xianyu_mcp-0.0.1.tar.gz
- Upload date:
- Size: 52.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f19cd84ffe06a7445eb37ca6b54b68072bae6c826e4da8a3ff684d356b50427
|
|
| MD5 |
dc855b254dba2c7e91ed27444215cb35
|
|
| BLAKE2b-256 |
e45b01b5ea11ff85d37d3b425df4aab323b81634cfc2eacf915d8c92d8bf8ad5
|
File details
Details for the file xianyu_mcp-0.0.1-py3-none-any.whl.
File metadata
- Download URL: xianyu_mcp-0.0.1-py3-none-any.whl
- Upload date:
- Size: 67.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69ef68068e4de4d0316a3cc2f764bc61a73a19cc7b83c71bf6f199f093ff8105
|
|
| MD5 |
56a489bb2013113c7d1f16e52096027e
|
|
| BLAKE2b-256 |
bf30d2f7303384ca4512d2077e81107c31f8df91e57ce73fc18d29e184f279cc
|