微信机器人接入MCP后,角色从"消息处理器"变成"AI工具调用器"。以前用户发消息机器人回复,现在用户发消息机器人判断要不要调外部工具——查数据库、发邮件、调业务接口。接入MCP不是装个SDK,要解决三个实践问题:机器人作为MCP server还是client、工具怎么注册和发现、调用结果怎么整合回复。

一、MCP双角色——server和client各干什么

接入MCP有两种角色。作为MCP server——把微信侧能力(发消息、查会话、管理好友)暴露为MCP工具,供外部AI系统调用。作为MCP client——调用外部注册的MCP工具,供微信机器人使用。实际项目里两种角色并存——微信能力暴露给外部AI,外部工具能力供机器人调用。

双角色的工程实现是双向连接。server端注册微信能力工具集,client端连接外部MCP server获取工具列表。双向连接后形成工具生态——微信机器人能调外部工具,外部AI能调微信能力。工具注册和双向连接的接口在 Eyun 开发文档 中有对应支撑。

二、工具注册与发现——工具怎么被知道和使用

工具注册是告诉AI"我有什么工具、工具能干什么"。注册时声明工具名、功能描述、参数schema。描述写给AI看——"发起退款:给指定订单退款,需要订单号和金额,前提是订单在退款期内"。描述不精确AI不知道什么时候该用这个工具。

工具发现是AI从注册表找到合适工具。用户说"帮我查下订单",AI从工具列表里找"查订单"工具,生成调用参数。发现的工程实现是工具匹配——用户意图和工具描述做语义匹配,匹配度高的工具优先。发现错了调错工具,执行结果南辕北辙。

三、调用结果整合——工具返回后怎么回复用户

工具调用返回的是结构化数据,用户要的是自然语言回复。整合是把工具返回的数据转成用户能懂的话。查订单返回{status:shipped, eta:2024-01-15},整合成"您的订单已发货,预计1月15日送达"。

整合的工程实现是结果解释层。解释层做三件事:字段翻译(shipped翻译成已发货)、格式转换(日期格式化成用户习惯格式)、语气调整(加称呼加礼貌用语)。没有解释层直接返回原始数据,用户看不懂。结果整合和回复生成的接口在 Eyun 开发文档 中有对应能力。

MCP接入三环节对照

环节

核心动作

工程要点

失败处理

双角色连接

server暴露+client调用

双向连接

连接失败重试

工具注册发现

描述注册+语义匹配

描述精确

匹配错澄清

结果整合

数据转自然语言

字段翻译+语气

数据缺失说明

MCP双角色接入与工具调用实现

class MCPIntegration:
    def __init__(self):
        self.server_tools = {}           # 作为server暴露的工具
        self.client_tools = {}           # 作为client连接的工具

    def as_server(self, name, desc, handler):
        # 作为server:暴露微信能力
        self.server_tools[name] = {"desc": desc, "handler": handler}

    def as_client(self, server_url):
        # 作为client:连接外部MCP server
        self.client_tools = self.fetch_tools(server_url)

    def handle(self, raw):
        # 意图匹配:找合适工具
        tool = self.match_tool(raw)
        if not tool:
            return self.chat(raw)                    # 无需工具直接回复
        # 工具调用
        result = self.call_tool(tool, raw)
        # 结果整合:数据转自然语言
        return self.integrate(result, raw)

    def integrate(self, result, raw):
        # 字段翻译+格式转换+语气调整
        translated = self.translate_fields(result)
        formatted = self.format_output(translated)
        return self.add_tone(formatted, raw)

落地建议

MCP接入从单角色做起——先作为client调外部工具,跑通了再作为server暴露微信能力。工具描述写给AI看而非写给人看,描述模糊AI不知道何时该用。结果整合层不能省——直接返回原始数据用户看不懂,解释层做字段翻译和语气调整。微信侧的消息收发、工具调用和结果整合由 Eyun 这类个人微信API平台 提供,MCP双角色连接在自建服务实现,接口字段以平台开发文档为准。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐