跳转至

MCP 服务器

WeiLink 提供可选的 MCP(Model Context Protocol)服务器,将 bot 能力暴露为 AI agent 可调用的工具。

安装

pip install weilink[mcp]

这会在核心包之外安装 toolregistry-server 的 MCP 支持。

MCP + OpenAPI

一次性安装 MCP 和 OpenAPI 服务器支持:

pip install weilink[server]

详见 OpenAPI 服务器 了解 REST API 模式。

运行

WeiLink MCP 服务器支持三种传输模式:stdio(默认)、SSEstreamable-http

stdio(默认)

# 通过统一 CLI
weilink mcp

# 或通过 Python 模块
python -m weilink.server

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 传输模式:stdiossestreamable-http(或 http stdio
--host SSE / HTTP 绑定地址 127.0.0.1
-p, --port SSE / HTTP 端口 8000
-d, --base-path 数据目录(配置路径) ~/.weilink/
--admin-port 同时在此端口启动管理面板(同一地址) (禁用)
--log-level 日志级别(DEBUGINFOWARNINGERROR INFO
--no-banner 禁止启动时显示 ASCII 横幅 (关闭)

客户端配置

Claude Desktop

添加到 claude_desktop_config.json

{
  "mcpServers": {
    "weilink": {
      "command": "weilink",
      "args": ["mcp"]
    }
  }
}

Claude Code(stdio)

claude mcp add weilink -- weilink mcp

Claude Code(HTTP)

先启动 MCP 服务器:

weilink mcp -t http -p 8000

然后在 Claude Code 设置(~/.claude/settings.json)中添加:

{
  "mcpServers": {
    "weilink": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

为什么用 HTTP?

HTTP 传输让 MCP 服务器在 Claude Code 会话之间持久运行。只需启动一次,所有 Claude Code 会话都可以连接同一个服务器实例——无需在开始新对话时重启服务器。

一键安装

对于 Claude Code 和 Codex,weilink setup 可以自动完成全部配置,包括新消息自动轮询的 hook。详见 IDE 集成

Cursor / VS Code

在 MCP 设置中添加:

{
  "mcpServers": {
    "weilink": {
      "command": "python",
      "args": ["-m", "weilink.server"]
    }
  }
}

可用工具

recv

轮询接收微信用户的新消息。

参数 类型 默认值 说明
timeout float 5.0 最大等待时间(秒)

返回 JSON 消息数组。每条消息包含 message_idfrom_usermsg_typetexttimestampbot_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 "" 按类型过滤:TEXTIMAGEVOICEFILEVIDEO
direction str "" 按方向过滤:receivedsent
since str "" 起始时间(ISO 8601 或 unix 毫秒)
until str "" 截止时间(ISO 8601 或 unix 毫秒)
text_contains str "" 不区分大小写的文本搜索
limit int 50 最大结果数(上限 200)
offset int 0 分页偏移量

返回 JSON,包含 messages 数组、total 总数、limitoffset

sessions

列出所有会话及其连接状态。无参数。

login

带内置轮询的二维码登录。该工具是有状态的——其行为取决于是否已有登录流程在进行中:

参数 类型 默认值 说明
session_name str "" 会话名称(空为默认)
timeout float 30.0 等待状态变化的最大秒数
force bool false 即使有待处理的登录也重新发起

典型 agent 工作流:

  1. 调用 login() — 返回 {"status": "pending", "qr_url": "..."}。将 QR URL 展示给用户。
  2. 再次调用 login() — 内部轮询最多 30 秒,返回 {"status": "scanned"}{"status": "confirmed", ...}
  3. 如仍为 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 附带两个元数据文件用于注册表发现:

  • server.jsonMCP 官方标准,供 MCP 注册表和包管理器使用。
  • smithery.yamlSmithery 注册表格式,用于自动配置。