Skip to main content
MCP 中心是一个 MCP 服务的目录,用户可以在应用内浏览并安装。注册之后,没有人需要手写 MCP 配置,目录中新增了条目也无需重新部署。 安装并不等于装配给智能体。安装只是把该服务加入用户自己的 MCP 资源池,装配是另一个独立步骤:
1

安装到资源池

用户选中一个服务,填写它所要求的信息,它便加入用户的资源池。所有中心汇入同一个资源池,装完之后就不必再关心它来自哪个来源。
2

装配给智能体的工作区

在会话中,用户从资源池里挑选,把该服务加入这个智能体的 工作区,其工具随即对智能体可见。
把两步拆开,凭证才成为一次性成本:API 密钥在安装时填一次,之后把这个服务装配到十个工作区都不会再问第二次。资源池属于用户,因此也不会随某次会话结束而消失。

内置的 MCP 中心

AgentScope 目前内置一个 MCP 中心,其他来源都可以通过 自定义 MCP 中心 接入: GitHubMCPHub 不传任何参数即可使用,下列字段均有默认值:
配置 GitHubMCPHub

快速上手

1

启动智能体服务

MCP 中心是 智能体服务 的能力之一,因此需要先跑起一个服务和一个前端。请按照 智能体服务快速上手 的步骤,同时启动仓库自带的 examples/agent_service 后端与 examples/web_ui 前端。
2

注册 MCP 中心

通过 mcp_hubs 参数把中心传给 create_app,路由、市场页面与安装流程都会随之启用:
注册一个 MCP 中心
也可以注册多个,让用户在不同目录之间切换,各自使用独立的 hub_id
注册多个 MCP 中心
两个 MCP 中心使用同一个 hub_id 时,服务会在启动阶段直接报错,而不是静默覆盖其中一个。
3

浏览并安装

重启服务后打开前端的 MCP 页面。侧边栏列出已注册的各个中心,以及用户自己的资源池 Installed MCPs。选中一个中心,搜索,点开卡片即可查看该服务的功能与所需信息。
浏览 MCP 中心

在 MCP 页面浏览一个 MCP 中心。

点击 Install 会弹出一个根据条目声明自动生成的表单。提交时服务会立刻尝试连接该 MCP 服务,因此凭证填错会当场在表单上报错,而不会安装出一个用不了的条目。安装好的条目都汇总在 Installed MCPs 中:
已安装的 MCP 服务

用户已安装的 MCP 服务。

4

装配给智能体

打开一个会话,展开 MCP 面板,点击 Add,从 Installed MCPs 中勾选。该服务的工具会立即对智能体生效。
把已安装的 MCP 服务装配给智能体

把已安装的 MCP 服务装配给智能体。

Installed MCPs 中,用户可以重命名、在保留配置的前提下停用、更新轮换过的密钥,或者直接删除。删除不会影响已经用上它的会话。

自定义 MCP 中心

继承 MCPHubBase 就能把任意目录接成一个中心:公开的服务目录、公司内部审核过的清单,或者一组固定的自有服务。需要实现两个方法,一个用于浏览,一个用于获取单个条目:
接入内部目录的中心
另有两点决定了中心的行为:

按用户控制可见性

两个方法的第一个参数都是 user_id,因此同一个目录不必对所有人呈现相同的内容。基于它做筛选,即可实现按团队区分的白名单、依据计费系统的权限开放付费条目,或者让尚未发布的服务只对作者可见:
因用户而异的目录
get_mcp 必须应用与 list_mcps 相同的筛选。仅仅让条目不出现在列表里并不构成访问控制:调用方可以用任意猜到的 id 直接请求 get_mcp

声明所需的输入项

卡片是一份模板,而不是一个可直接连接的配置。把需要用户填写的部分写成 ${placeholder},再用标准 JSON Schema 描述它们,前端就能据此渲染表单:
一个需要填写 API 密钥的卡片
所有凭证字段都必须标注 "writeOnly": true"format": "password"。前端据此把输入框设为密码框,并在用户后续编辑该条目时留空该字段。

复用同一个 HTTP 客户端

中心实例的生命周期与服务同长,因此可以持有一个连接池,而不必每次请求都新建。实现异步上下文管理器的两个方法即可,服务会在启动时进入每个中心,并在关闭时退出:
打开与关闭共享客户端

延伸阅读

技能中心

面向技能的同类能力。

MCP

智能体如何调用 MCP 服务的工具。