MCP 服务器¶
WeiLink 提供可选的 MCP(Model Context Protocol)服务器,将 bot 能力暴露为 AI agent 可调用的工具。
安装¶
这会在核心包之外安装 toolregistry-server 的 MCP 支持。
运行¶
WeiLink MCP 服务器支持三种传输模式:stdio(默认)、SSE 和 streamable-http。
stdio(默认)¶
stdio 传输由 MCP 客户端(Claude Desktop、Cursor 等)启动,而非独立运行。
SSE / HTTP¶
# SSE 传输
weilink mcp -t sse -p 8000
# Streamable HTTP 传输(推荐用于网络访问)
weilink mcp -t http -p 8000
# 同时运行管理面板
weilink mcp -t http -p 8000 --admin-port 8080
# 绑定到所有网卡
weilink mcp -t http --host 0.0.0.0 -p 8000
CLI 选项¶
| 选项 | 说明 | 默认值 |
|---|---|---|
-t, --transport |
传输模式:stdio、sse、streamable-http(或 http) |
stdio |
--host |
SSE / HTTP 绑定地址 | 127.0.0.1 |
-p, --port |
SSE / HTTP 端口 | 8000 |
-d, --base-path |
数据目录(配置路径) | ~/.weilink/ |
--admin-port |
同时在此端口启动管理面板(同一地址) | (禁用) |
--log-level |
日志级别(DEBUG、INFO、WARNING、ERROR) |
INFO |
--no-banner |
禁止启动时显示 ASCII 横幅 | (关闭) |
客户端配置¶
Claude Desktop¶
添加到 claude_desktop_config.json:
Claude Code(stdio)¶
Claude Code(HTTP)¶
先启动 MCP 服务器:
然后在 Claude Code 设置(~/.claude/settings.json)中添加:
为什么用 HTTP?
HTTP 传输让 MCP 服务器在 Claude Code 会话之间持久运行。只需启动一次,所有 Claude Code 会话都可以连接同一个服务器实例——无需在开始新对话时重启服务器。
一键安装
对于 Claude Code 和 Codex,weilink setup 可以自动完成全部配置,包括新消息自动轮询的 hook。详见 IDE 集成。
Cursor / VS Code¶
在 MCP 设置中添加:
可用工具¶
recv¶
轮询接收微信用户的新消息。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
timeout |
float | 5.0 | 最大等待时间(秒) |
返回 JSON 消息数组。每条消息包含 message_id、from_user、msg_type、text、timestamp、bot_id,以及媒体元数据(如有)。
send¶
向微信用户发送文本和/或媒体。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
to |
str | (必填) | 目标用户 ID |
text |
str | "" |
文本内容 |
image_path |
str | "" |
本地图片路径 |
file_path |
str | "" |
本地文件路径 |
file_name |
str | "" |
文件显示名称 |
video_path |
str | "" |
本地视频路径 |
voice_path |
str | "" |
本地语音路径 |
自动刷新 context
MCP 服务器在每次发送前会自动调用 recv() 刷新 context token。即使最近未调用 recv,也能确保 bot 持有有效的 token。
download¶
下载已接收消息中的媒体文件。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
message_id |
str | (必填) | 来自 recv 的消息 ID |
save_dir |
str | ~/.weilink/downloads/ |
文件保存目录 |
返回保存路径和文件大小。
history¶
从持久化存储中查询消息历史。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
user_id |
str | "" |
按微信用户 ID 过滤 |
bot_id |
str | "" |
按 bot 会话 ID 过滤 |
msg_type |
str | "" |
按类型过滤:TEXT、IMAGE、VOICE、FILE、VIDEO |
direction |
str | "" |
按方向过滤:received 或 sent |
since |
str | "" |
起始时间(ISO 8601 或 unix 毫秒) |
until |
str | "" |
截止时间(ISO 8601 或 unix 毫秒) |
text_contains |
str | "" |
不区分大小写的文本搜索 |
limit |
int | 50 | 最大结果数(上限 200) |
offset |
int | 0 | 分页偏移量 |
返回 JSON,包含 messages 数组、total 总数、limit 和 offset。
sessions¶
列出所有会话及其连接状态。无参数。
login¶
带内置轮询的二维码登录。该工具是有状态的——其行为取决于是否已有登录流程在进行中:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
session_name |
str | "" |
会话名称(空为默认) |
timeout |
float | 30.0 | 等待状态变化的最大秒数 |
force |
bool | false | 即使有待处理的登录也重新发起 |
典型 agent 工作流:
- 调用
login()— 返回{"status": "pending", "qr_url": "..."}。将 QR URL 展示给用户。 - 再次调用
login()— 内部轮询最多 30 秒,返回{"status": "scanned"}或{"status": "confirmed", ...}。 - 如仍为 pending,继续调用
login()直到 confirmed 或 expired。
推荐预先登录
服务器启动时会自动发现 ~/.weilink/ 下的已有会话。如果你已经通过 SDK 登录过,MCP 服务器会自动加载你的会话 — 无需调用登录工具。
logout¶
登出会话并移除持久化凭据。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
session_name |
str | "" |
要登出的会话(空为默认) |
rename_session¶
重命名会话。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
old_name |
str | (必填) | 当前会话名称 |
new_name |
str | (必填) | 新会话名称 |
set_default¶
将指定会话设为默认。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
session_name |
str | (必填) | 要设为默认的会话名称 |
架构¶
graph LR
A[AI Agent] -->|MCP 协议| B[WeiLink MCP]
B -->|WeiLink SDK| C[iLink API]
C --> D[微信]
MCP 服务器内部封装了一个 WeiLink 实例。通过 recv 接收的消息会被缓存(最多 1000 条),以便后续通过 download 下载媒体。
Skills 元数据¶
WeiLink 附带两个元数据文件用于注册表发现: