调用MCP组件
关于MCP
随着 Agent 应用的快速普及,开发者在工具开发和接入方面普遍遇到一系列挑战:工具开发缺乏统一的规范,导致开发效率低下;重复适配不同平台,增加了开发成本和时间;开源社区组件质量参差不齐,高质量工具的整合和维护往往耗费大量精力。MCP 协议正是在这一需求下应运而生,为行业带来了新的解决思路和价值。
MCP(Model Context Protocol) 协议是由 Anthropic 推出的业界领先的开放标准,旨在构建大模型与数据源之间的安全双向链接,解决了社区中工具实现风格不统一、难以跨模型共享的问题。
一个更形象的比方是,MCP协议是大模型应用生态里的Type-C接口或者扩展坞,可以将各种不同来源的组件,转为统一的格式给到大模型,由此方便开发者打造自己的个性化大模型应用。
AB全面支撑MCP
AppBuilder(以下简称AB)在业内率先支持MCP协议。当前主要服务于代码态用户(OpenAPI/SDK),提供全方位的工具开发、服务集成能力。
不同使用方式的用户体验MCP有时间先后
针对两类AB用户:代码态用户(OpenAPI/SDK)和零代码用户(控制台GUI界面)
- 代码态用户:已支持使用 AppBuilder Python-SDK 的代码态用户,基于MCP协议拓展AI应用的能力边界
- 零代码用户:即将支持,届时用户可在控制台界面通过点选拖拽快速接入MCP组件
代码态用户接入MCP的路线图
对于代码态用户,落地MCP协议的主要考量因素有两个,Agent 和工具组件,我们通过一张表格来理清MCP使用路线:
组件来源 | 使用AppBuilder-SDK的AppBuilderClient | 使用其他已支持MCP协议的Client(Claude/Cursor等) | |
---|---|---|---|
使用AppBuilder云端工具组件 | AppBuilder网页上的组件市场的组件 | 无需MCP协议,在页面点选添加组件后发布应用,使用SDK调用 | 即将支持 |
AppBuilder网页上的自定义工作流组件 | 无需MCP协议,在页面点选添加组件后发布应用,使用SDK调用 | 即将支持 | |
AppBuilder-SDK中的开源组件或继承基类的组件实现 | 【1、AB组件转MCP Server】 + 【2、AB-MCP Client本地部署】 | 【1、AB组件转MCP Server】 | |
使用本地工具组件 | 工具组件已支持MCP协议 | 【2、AB-MCP Client本地部署】 | 直接接入 |
工具组件未支持MCP协议 | 继承AppBuilder-SDK组件实现后,复用AB组件接入方式 | 工具组件适配MCP协议 | |
使用远程MCP SSE组件 | AppBuilder提供的MCP SSE组件 | 【2、AB-MCP Client本地部署】 | 【3、AB-MCP SSE组件远程调用】 |
社区提供的MCP SSE组件 | 【2、AB-MCP Client本地部署】 | 【3、AB-MCP SSE组件远程调用】 |
从上表中,我们可以看到有三个关键路径,分别是:
1、【AB组件转MCP Server】
2、【AB-MCP Client本地部署】
3、【AB-MCP SSE组件远程调用】
下面的Cookbook进行顺序介绍,各位开发者可以根据自己的需求,灵活选择MCP接入方式
Cookbook
Cookbook 是一个提供具体步骤、示例代码和最佳实践的技术指南,旨在帮助开发者快速上手并高效使用SDK的功能。
案例一:AB组件转MCP Server
目标:
在Cursor里自定义个人专属办公工具 —— 用户自己可将AppBuilder官方提供的“文本翻译-通用版”、“植物识别”等组件转化为MCP Server,在Cursor中作为自定义工具直接调用。
为什么使用这个案例?
- AppBuilder有很多优质的组件,可以在Claude客户端、Cursor中通过MCP的方式联动
- 通过这种模式,未来可以支持用户把自己在AB上开发的工作流/Agent集成到本地支持MCP协议的Client中直接使用
操作步骤:
【第一步】安装AppBuilder的环境依赖,在python>=3.12环境中,执行以下命令。Python环境准备可以参考教程:https://cloud.baidu.com/article/3421098
python -m pip install appbuilder-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
【第二步】我们可以快速将 AppBuilder 中的官方组件“文本翻译-通用版”、“植物识别”转换为 MCP Server 工具,该文件我们命名为 server.py
"""server.py"""
import os
from appbuilder.mcp_server.server import MCPComponentServer
from appbuilder.core.components.v2 import Translation, PlantRecognition
#设置APPBUILDER_TOKEN
os.environ['APPBUILDER_TOKEN'] = '你的APPBUILDER_TOKEN'
# 定义server
server = MCPComponentServer(name="AB Component Server")
# 初始化组件实例
translation = Translation()
plant_recognition = PlantRecognition()
# 把组件作为tool添加到server
server.add_component(translation)
server.add_component(plant_recognition)
# 启动server
server.run()
注意:请将secret_key替换为你的APPBUILDER_TOKEN,Token获取方式见文档:https://cloud.baidu.com/doc/AppBuilder/s/lm68r8e6i
【第三步】在Cursor中配置自己的server:https://docs.cursor.com/context/model-context-protocol ,根据指引填写MCP配置文件,指向我们第二步中创建的server.py,配置MCP Server。
{
"mcpServers": {
"AB component": {
"command": "/abs/path/to/python", # python解释器的绝对路径
"args": [
"/abs/path/to/server.py" # server.py的绝对路径
]
}
}
}
python解释器的路径,可以在终端中输入以下命令进行查看
# mac / linux
which python
# windows
where python
【第四步】配置完成后,我们刷新MCP Servers配置,这时候可看到在本地部署好的 AppBuilder 官方组件工具。
效果展示:
在Cursor的Chat对话框里,我们输入query
识别 https://img.dutenews.com/a/10001/202111/50120fcde5bb6f9c950758c6d77b656f.png 中的植物
Cursor能够成功调用“植物识别”工具,并展示组件的输入输出,最终回复答案“根据植物识别模型的分析结果,这张图片中的植物是杨树,识别的置信度为55.7%”。
Claude 客户端 Github Cookbook
案例总结
- 在跑通这个案例后,您可以在任何支持MCP协议的Agent框架中,添加来自AppBuilder的优质组件,以此提升您的Agent的能力边界
- 当前AppBuilder有以下组件,支持该种方式接入,支持的组件Github链接:https://github.com/baidubce/app-builder/tree/master/python/core/components/v2
组件名称 | 组件描述 |
---|---|
AnimalRecognition | 动物识别,可用于识别一张图片,即对于输入的一张图片(可正常解码,且长宽比较合适),输出动物识别结果。 |
ImageUnderstand | 图像内容理解,输出理解图片后的文本信息。 |
Translation | 文本翻译组件,提供多种语言互译的在线文本翻译服务。支持术语定制功能,用户可对翻译结果进行干预,快速提高翻译质量。可广泛应用于移动端、PC网站、智能硬件等不同产品形态中,满足多领域、多场景的翻译需求。 |
GeneralOCR | 通用文字识别组件,支持多场景、多语种、高精度度的文字识别服务,对图片全部文字内容进行检测识别。 |
StyleRewrite | 风格转写组件,可以基于生成式大模型对文本的风格进行改写。支持多种文本风格,包括营销、客服、直播、激励及教学话术。 |
HallucinationDetection | 幻觉检测,针对问答场景,检测答案中是否存在幻觉。 |
QrcodeOCR | 二维码识别,可对图片中的二维码、条形码进行检测和识别,返回存储的文字信息及其位置信息。 |
HandwriteOCR | 手写文字识别,图片中的手写中文、手写数字进行检测和识别,针对不规则的手写字体进行专项优化,识别准确率可达90%以上。 |
MixCardOCR | 身份证混贴识别,身份证混贴识别支持自动检测与识别身份证正反面在同一张图片上的场景,一次识别图片中身份证正反面所有字段。 |
TableOCR | 表格文字识别,可支持识别图片中的表格内容,返回各表格的表头表尾内容、单元格文字内容及其行列位置信息,全面覆盖各类表格样式,包括常规有线表格、无线表格、含合并单元格表格。同时,支持多表格内容识别。 |
Text2Image | 文生图(AI作画-高级版),基于文心大模型,可以根据用户输入的文本,自动创作不限定风格的图,为内容创作者提供灵感和高质量配图。 |
StyleWriting | 风格写作组件,是一款基于生成式大模型进行文本创作的工具,支持多种风格,包括B站、小红书等,适用于编写文案、广告等多种场景。 |
TreeMind | 树图,提供智能思维导图制作工具和丰富的模板,支持脑图、逻辑图、树形图、鱼骨图、组织架构图、时间轴、时间线等多种专业格式。 |
ASR | 短语音识别,可以将音频流实时识别为文字,并返回每句话的开始和结束时间,适用于手机语音输入、语音搜索、人机对话等语音交互场景。 |
ObjectRecognition | 通用物体和场景识别组件,可以识别超过10万类常见物体和场景,接口返回大类及细分类的名称。广泛适用于图像或视频内容分析、拍照识图等业务场景 |
SimilarQuestion | 相似问生成组件,可以基于输入的问题,挖掘出与该问题相关的类似问题。广泛用于客服、问答等场景。 |
OralQueryGeneration | 口语化Query生成组件,可以基于输入文本生成与文档内容相关的Query。可用于增强文档索引等场景。 |
PlantRecognition | 植物识别,即对于输入的一张图片(可正常解码,且长宽比较合适),输出植物识别结果。 |
案例二:AB-MCP Client本地部署
目标:
搭建一个“端云组件结合使用”的新闻检索 Agent,其功能是,当用户检索感兴趣的新闻后,Agent不仅根据 query 进行检索,还可以最终自动调用 Playwright 组件在本地打开浏览器,在您的mac上阅览。
为什么使用这个案例?
- 该案例可以扩展为:Agent不仅思考并回答用户的需求,还能操作用户的终端/IOT设备,帮助用户提交代码、操作文件、控制智能设备等
步骤:
【第一步】:创建云端的Agent,作为基础的应用,步骤如下:
- 打开AppBuilder官网:https://qianfan.cloud.baidu.com/appbuilder/ ,并登录
- 在左侧的边栏中,选择创一个【自主规划Agent】
- 使用【AI自动配置功能】生成一个自动配置好角色指令的Agent,Prompt可以是:【新闻小助手】
- 调整该应用的组件,选择【百度AI搜索】作为提供网页url的来源,最终Agent界面如下
- 继续调整模型配置,考虑到我们可能会多次思考,多次调用组件,所以,我们调整最大思考轮数
- 最后,点击右上角【发布】→【发布应用】,这样我们就可以在AB-SDK中调用该应用啦
【第二步】:为了能够帮助您在本地打开浏览器,我们需要提前下载一个开源的MCP-Server组件,组件名字是Playwright,主要功能是控制浏览器,步骤如下
- 点击链接Playwright(https://github.com/blackwhite084/playwright-plus-python-mcp/blob/master/src/playwright_server/server.py ),直接保存该代码到本地可以执行的位置,命名为server.py
【第三步】:获取代码态访问AppBuilder应用所需的【API Token】及【APP ID】
- 获取AppBuilder应用的 【APP ID】,方式如下:
- 获取AppBuilder应用的 【API Token】,获取方式如下,https://cloud.baidu.com/doc/AppBuilder/s/lm68r8e6i
- 创建Token时记得需要勾选我们刚才创建的【新闻小助手】应用
【第四步】使用AB-SDK访问我们的Agent,并且让它联动我们刚才下载到本地的MCP组件
- 在python >= 3.12 的环境中安装 【appbuilder-sdk】及相关MCP组件的依赖
python -m pip install appbuilder-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install mcp -i https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
playwright install
- 有了第二步下载好的sever.py,并且有了第三步获取的【APP_ID】和【TOKEN】后,并且在本地安装好SDK依赖后,我们可以快速访问【新闻小助手应用】,搜索感兴趣的新闻,并在本地浏览器打开对应网页,复制下面的代码,命名为"ab_mcp.py",和第二步中的"server.py"置于同一目录下,并且填写APPBUILDER_TOKEN 与 APP_ID配置。
"""ab_mcp.py"""
import os
import time
import asyncio
import appbuilder
from appbuilder.core.console.appbuilder_client.async_event_handler import (
AsyncToolCallEventHandler,
)
from appbuilder.mcp_server.client import MCPClient
os.environ["APPBUILDER_TOKEN"] = "YOUR_APPBUILDER_TOKEN"
os.environ["APP_ID"] = "YOUR_APP_ID"
async def main():
app_id = os.environ.get("APP_ID")
assert app_id is not None, "APP_ID is not set"
appbuilder_client = appbuilder.AsyncAppBuilderClient(app_id)
mcp_client = MCPClient()
# server.py 是上述步骤中下载的mcp组件文件
await mcp_client.connect_to_server("./server.py")
tools = mcp_client.tools
event_handler = AsyncToolCallEventHandler(mcp_client, functions=[])
conversation_id = await appbuilder_client.create_conversation()
with await appbuilder_client.run_with_handler(
conversation_id=conversation_id,
query="先搜索关于文心一言4.5模型的新闻,取出其中一个url,再用playwright_navigate打开这个url",
tools=tools,
event_handler=event_handler,
) as run:
await run.until_done()
print("浏览网页,我们在此稍作停留,您可通过其他方式常驻该进程以保持网页")
time.sleep(5)
await appbuilder_client.http_client.session.close()
if __name__ == "__main__":
appbuilder.logger.setLoglevel("DEBUG")
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
- 在终端执行上述代码
python ab_mcp.py
效果展示:
-
界面效果
- 自动启动了一个chrome浏览器,并打开了我们搜索到的网页
Github Cookbook链接:
案例总结
- 在跑通这个案例后,您可以将任何MCP组件添加到你的AppBuilder应用中,拓展您的应用的能力边界
案例三:AB-MCP SSE组件远程调用
目标:
在Cursor里添加百度AI搜索MCP SSE组件,通过Cursor Chat的方式直接使用 —— 用户可以在Cursor中直接体验百度AI搜索组件的深度搜索与智能总结能力,高效准确地获取答案。
为什么使用这个案例?
- 无需本地安装MCP组件运行环境,MCP组件部署在云端,在本地直接使用,是最方便的MCP组件接入方法
- 该案例可以扩展为:在任何支持MCP-SSE组件的Agent环境中,接入AppBuilder官方组件
步骤:
【第一步】准备百度AI搜索MCP-SSE组件的URL。
http://appbuilder.baidu.com/v2/ai_search/mcp/sse?api_key=xxx
- 其中,api_key的格式为"Bearer+<AppBuilder API Key>",注意保留中间“+”,示例:Bearer+bce-v3/ALTAK-xuZRMCVTC9######
- AppBuilder API Key获取方式见文档:https://cloud.baidu.com/doc/AppBuilder/s/lm68r8e6i
【第二步】在Cursor中添加Server,Cursor设置界面-> MCP-> Add new MCP Server -> 填写server信息。
配置示例:
{
"mcpServers": {
"AISearch": {
"url": "第一步中配置的百度AI搜索MCP-SSE组件URL"
}
}
}
注意:
- Cursor最新版本需要通过配置json来添加MCP Server。
- Cursor对于MCP SSE组件存在连接不稳定的情况,遇到无法连接时,可以尝试点击『Enable』按键后,刷新组件状态
【第三步】在Cursor中使用百度AI搜索组件。前往Cursor新版本的chat、旧版本的composer中,使用『搜索』相关的关键词,即可触发AI搜索组件的调用。
效果展示:
在Cursor中,我们向Agent提问:今天有哪些体育新闻?这时百度AI搜索将为用户搜索今天最新的体育新闻,并在Cursor中将总结好的内容返回给用户。
Github Cookbook链接: