本地部署小红书MCP
下面的部署以mac为例
1 首先安装docker
确认docker环境
docker --version
docker compose version
2 本地部署小红书mcp
这是github链接https://github\.com/xpzouying/xiaohongshu\-mcp/blob/main/README\.md
下面我将以最快的方式告诉大家如何部署小红书发帖子的mcp。
具体流程如下,为什么要QEMU模拟,因为镜像只支持linux和amd架构,其实可以转一下,但是我以最快方式实现
Mac ARM64
↓ QEMU 模拟
Linux amd64 容器
↓
xiaohongshu-mcp MCP Server
↓
TCP 18060
↓
MCP Client / Agent / LLM 调用
2.1 创建工作区
mkdir -p ~/xhs-mcp
cd ~/xhs-mcp
2.2 拉取镜像
docker pull --platform linux/amd64 xpzouying/xiaohongshu-mcp
期望看见:
Status: Downloaded newer image for xpzouying/xiaohongshu-mcp:latest
验证:
docker images | grep xiaohongshu
2.3 下载并修改docker-compose.yml
curl -O https://raw.githubusercontent.com/xpzouying/xiaohongshu-mcp/main/docker/docker-compose.yml
验证 ls,应该可以看到docker-compose.yml。
由于镜像不支持mac appler芯片,所以必须要为 Apple Silicon Mac 修改 yaml。
执行命令 nano docker-compose.yml,
内容如下,添加了黄色部分代码
services:
xiaohongshu-mcp:
# Docker Hub 镜像(默认)
image: xpzouying/xiaohongshu-mcp
** platform: linux/amd64**
# 阿里云镜像源(国内用户推荐,拉取更快)
# image: crpi-hocnvtkomt7w9v8t.cn-beijing.personal.cr.aliyuncs.com/xpzouying/xiaohongshu-mcp
container_name: xiaohongshu-mcp
restart: unless-stopped
init: true
tty: true
volumes:
- ./data:/app/data
- ./images:/app/images
environment:
- ROD_BROWSER_BIN=/usr/bin/google-chrome
- COOKIES_PATH=/app/data/cookies.json
ports:
- "18060:18060"
保存退出 Ctrl + O → 回车 → Ctrl + X
2.4 创建挂载目录
mkdir -p data images
ls 应该会看见 docker-compose.yml data/ images/
2.5 启动服务
docker compose up -d
2.6 验证容器状态
docker ps
应该会看到 xhs-mcp Up 0.0.0.0:18060->18060/tcp

2.7 验证端口监听
lsof -i :18060
会看见 TCP *:18060 (LISTEN)

2.8 查看服务日志(确认不是“假启动”)
docker logs -f xiaohongshu-mcp
应看到类似:
-
MCP server started
-
listening on 18060
-
browser initialized
-
cookies loaded
-
task queue ready

2.9 启动 MCP Client
这个其实就是一个可视化工具,看看mcp里面到底有什么东西
npx @modelcontextprotocol/inspector
点击list tools就会看见这个mcp有哪些工具


我建议使用npx @modelcontextprotocol/inspector去进行扫码登录,因为他会自动保存一个cookies.json,这样你下面用的时候就可以直接用了。
3 openclaw联动小红书mcp
由于 OpenClaw 目前不原生支持 MCP,官方推荐通过 MCPorter 来调用 MCP 服务。
💡 提示: MCPorter 并非调用 MCP 的最佳方案,使用过程中可能出现一些兼容性问题,请知悉。
在终端分别执行以下三行命令
npm i -g mcporter
npx mcporter config add xiaohongshu-mcp http://localhost:18060/mcp
npx mcporter list xiaohongshu-mcp
或者你直接跟你的openclaw进行聊天,让他帮你执行这三行命令,Openclaw 会代为部署 MCPorter。
4 通过你自己的claw测试是否安装成功
下面是我跟我自己的claw聊天的内容

你需要告诉他你这个mcp有哪些工具技能,直接把下面内容复制发送给你的openclaw
连接成功后,可使用以下 MCP 工具:
check_login_status - 检查小红书登录状态(无参数)
publish_content - 发布图文内容到小红书(必需:title, content, images)
images: 支持 HTTP 链接或本地绝对路径,推荐使用本地路径
publish_with_video - 发布视频内容到小红书(必需:title, content, video)
video: 仅支持本地视频文件绝对路径
list_feeds - 获取小红书首页推荐列表(无参数)
search_feeds - 搜索小红书内容(需要:keyword)
get_feed_detail - 获取帖子详情(需要:feed_id, xsec_token)
post_comment_to_feed - 发表评论到小红书帖子(需要:feed_id, xsec_token, content)
user_profile - 获取用户个人主页信息(需要:user_id, xsec_token)
然后他就会给你返回以下内容

撒花🎉🎉🎉,恭喜你成功将openclaw和小红书连接起来,快去试试效果吧~
5 效果展示



6 一些文件内容展示
mcp内容如下
**xiaohongshu-mcp**
/**
* 检查小红书登录状态
*/
function check_login_status();
/**
* 删除 cookies 文件,重置登录状态。删除后需要重新登录。
*/
function delete_cookies();
/**
* 收藏指定笔记或取消收藏(如已收藏将跳过收藏,如未收藏将跳过取消收藏)
*
* @param feed_id 小红书笔记ID,从Feed列表获取
* @param unfavorite? 是否取消收藏,true为取消收藏,false或未设置则为收藏
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function favorite_feed(feed_id: string, unfavorite?: boolean, xsec_token: string);
/**
* 获取小红书笔记详情,返回笔记内容、图片、作者信息、互动数据(点赞/收藏/分享数)及评论列表。默认返回前10条一级评论,如需更多评论请设置load_all_comments=true
*
* @param click_more_replies? 【仅当load_all_comments为true时生效】是否展开二级回复。true展开子评论,false不展开(默认)
* @param feed_id 小红书笔记ID,从Feed列表获取
* @param limit? 【仅当load_all_comments为true时生效】限制加载的一级评论数量。例如20表示最多加载20条,默认20
* @param load_all_comments? 是否加载全部评论。false仅返回前10条一级评论(默认),true滚动加载更多评论
* @param reply_limit? 【仅当click_more_replies为true时生效】跳过回复数过多的评论。例如10表示跳过超过10条回复的,默认10
* @param scroll_speed? 【仅当load_all_comments为true时生效】滚动速度slow慢速、normal正常、fast快速
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function get_feed_detail(click_more_replies?: boolean, feed_id: string, limit?: number, load_all_comments?: boolean, xsec_token: string);
// optional (2): reply_limit, scroll_speed
/**
* 获取登录二维码(返回 Base64 图片和超时时间)
*/
function get_login_qrcode();
/**
* 为指定笔记点赞或取消点赞(如已点赞将跳过点赞,如未点赞将跳过取消点赞)
*
* @param feed_id 小红书笔记ID,从Feed列表获取
* @param unlike? 是否取消点赞,true为取消点赞,false或未设置则为点赞
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function like_feed(feed_id: string, unlike?: boolean, xsec_token: string);
/**
* 获取首页 Feeds 列表
*/
function list_feeds();
/**
* 发表评论到小红书笔记
*
* @param content 评论内容
* @param feed_id 小红书笔记ID,从Feed列表获取
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function post_comment_to_feed(content: string, feed_id: string, xsec_token: string);
/**
* 发布小红书图文内容
*
* @param content 正文内容,不包含以#开头的标签内容,所有话题标签都用tags参数来生成和提供即可
* @param images 图片路径列表(至少需要1张图片)。支持两种方式:1. HTTP/HTTPS图片链接(自动下载);2.
* 本地图片绝对路径(推荐,如:/Users/user/image.jpg)
* @param schedule_at? 定时发布时间(可选),ISO8601格式如 2024-01-20T10:30:00+08:00,支持1小时至14天内。不填则立即发布
* @param tags? 话题标签列表(可选参数),如 [美食, 旅行, 生活]
* @param title 内容标题(小红书限制:最多20个中文字或英文单词)
*/
function publish_content(content: string, images: string[], schedule_at?: string, tags?: string[], title: string);
/**
* 发布小红书视频内容(仅支持本地单个视频文件)
*
* @param content 正文内容,不包含以#开头的标签内容,所有话题标签都用tags参数来生成和提供即可
* @param schedule_at? 定时发布时间(可选),ISO8601格式如 2024-01-20T10:30:00+08:00,支持1小时至14天内。不填则立即发布
* @param tags? 话题标签列表(可选参数),如 [美食, 旅行, 生活]
* @param title 内容标题(小红书限制:最多20个中文字或英文单词)
* @param video 本地视频绝对路径(仅支持单个视频文件,如:/Users/user/video.mp4)
*/
function publish_with_video(content: string, schedule_at?: string, tags?: string[], title: string, video: string);
/**
* 回复小红书笔记下的指定评论
*
* @param comment_id? 目标评论ID,从评论列表获取
* @param content 回复内容
* @param feed_id 小红书笔记ID,从Feed列表获取
* @param user_id? 目标评论用户ID,从评论列表获取
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function reply_comment_in_feed(comment_id?: string, content: string, feed_id: string, user_id?: string, xsec_token: string);
/**
* 搜索小红书内容(需要已登录)
*
* @param filters? 筛选选项
* @param keyword 搜索关键词
*/
function search_feeds(filters?: unknown, keyword: string);
/**
* 获取指定的小红书用户主页,返回用户基本信息,关注、粉丝、获赞量及其笔记内容
*
* @param user_id 小红书用户ID,从Feed列表获取
* @param xsec_token 访问令牌,从Feed列表的xsecToken字段获取
*/
function user_profile(user_id: string, xsec_token: string);
Examples:
mcporter call xiaohongshu-mcp.check_login_status()
Optional parameters hidden; run with --all-parameters to view all fields.
13 tools · 42ms · HTTP http://localhost:18060/mcp