跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

Visindigo::Agent::MCP Class

class Visindigo::Agent::MCP

一个外部工具服务器的连接描述. 详情...

头文件: #include <Agent/MCP.h>
自以下版本: Visindigo 0.17.0

公开类型

(自 Visindigo 0.17.0 引入) enum class Transport { Stdio, Sse, StreamableHttp }

公开成员函数

(自 Visindigo 0.17.0 引入) MCP()
(自 Visindigo 0.17.0 引入) MCP(const QString &name)
(自 Visindigo 0.17.0 引入) ~MCP()
(自 Visindigo 0.17.0 引入) bool fromJson(const Visindigo::Utility::JsonConfig &json)
(自 Visindigo 0.17.0 引入) QStringList getArguments() const
(自 Visindigo 0.17.0 引入) QString getCommand() const
(自 Visindigo 0.17.0 引入) QMap<QString, QString> getEnvironment() const
(自 Visindigo 0.17.0 引入) QMap<QString, QString> getHeaders() const
(自 Visindigo 0.17.0 引入) QString getName() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP::Transport getTransport() const
(自 Visindigo 0.17.0 引入) QUrl getUrl() const
(自 Visindigo 0.17.0 引入) bool isAutoStart() const
(自 Visindigo 0.17.0 引入) bool isEnabled() const
(自 Visindigo 0.17.0 引入) bool isValid() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setArguments(const QStringList &arguments)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setAutoStart(bool autoStart)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setCommand(const QString &command)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setEnabled(bool enabled)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setEnvironment(const QMap<QString, QString> &environment)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setHeaders(const QMap<QString, QString> &headers)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setName(const QString &name)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setTransport(Visindigo::Agent::MCP::Transport transport)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP &setUrl(const QUrl &url)
(自 Visindigo 0.17.0 引入) Visindigo::Utility::JsonConfig toJson() const

详细说明

MCP 保存"如何连上某个工具服务器",包含传输方式、地址或可执行文件、以及 环境变量与请求头。服务器自身提供的工具会在连接后由 Visindigo 转换成 Function,从而和本地函数走同一套调用路径。

Note: 本版本只实现配置的保存与读取,尚未建立实际连接。字段的含义已经按 约定固定下来,补齐传输层时不需要改动现有的配置格式。

成员类型文档

[since Visindigo 0.17.0] enum class MCP::Transport

传输方式。

ConstantValueDescription
Visindigo::Agent::MCP::Transport::Stdio0以子进程方式启动本地服务器,通过标准输入输出交换按行分隔的 JSON-RPC 消息。适用于随程序分发的本地工具。
Visindigo::Agent::MCP::Transport::Sse1通过 Server-Sent Events 接收服务端推送,请求走普通的 HTTP POST。 这是较早的远程传输方式。
Visindigo::Agent::MCP::Transport::StreamableHttp2在单个 HTTP 端点上完成全部收发,服务端可以按需返回 普通 JSON 或事件流。这是较新的远程传输方式,优先选它。

这个enum 从 Visindigo 0.17.0 开始支持。

成员函数文档

[since Visindigo 0.17.0] MCP::MCP()

构造一个空配置,默认使用 Transport::Stdio

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] MCP::MCP(const QString &name)

以名称构造配置,name 同时作为索引键。

这个function 从 Visindigo 0.17.0 开始支持。

[noexcept, since Visindigo 0.17.0] MCP::~MCP()

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool MCP::fromJson(const Visindigo::Utility::JsonConfig &json)

从 JSON 对象恢复。

未知的 transport 取值按 Transport::Stdio 处理,同时保留 commandurl 两个字段,因此配置文件里多写的字段不会造成信息丢失。

json 已解析的 JSON 对象。

return 恢复后的配置是否有效,判定规则与 isValid() 相同。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList MCP::getArguments() const

返回启动参数。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString MCP::getCommand() const

返回要启动的可执行文件。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QMap<QString, QString> MCP::getEnvironment() const

返回追加的环境变量。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QMap<QString, QString> MCP::getHeaders() const

返回远程请求的附加头。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString MCP::getName() const

返回名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP::Transport MCP::getTransport() const

返回传输方式。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QUrl MCP::getUrl() const

返回远程服务器地址。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool MCP::isAutoStart() const

返回是否自动连接。

return 随程序启动自动连接时返回 true。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool MCP::isEnabled() const

返回是否启用。

return 启用时返回 true。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool MCP::isValid() const

判断配置是否足够建立一次连接:名称非空,且按传输方式提供了必需的目标 (Transport::Stdio 需要可执行文件,其余需要合法的绝对 URL)。

return 配置足够建立一次连接时返回 true。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setArguments(const QStringList &arguments)

设置启动参数,逐项传递、不经过 shell,因此路径中的空格无需自行转义。

arguments 启动参数列表。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setAutoStart(bool autoStart)

设置是否在应用启动时自动连接,默认开启。

Warning: Transport::Stdio 的自动启动意味着每次开程序都会拉起一批子进程。 如果服务器启动缓慢或会常驻,应关掉它改为按需连接。

autoStart 是否随程序启动自动连接。

这个function 从 Visindigo 0.17.0 开始支持。

另请参阅 isAutoStart().

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setCommand(const QString &command)

设置要启动的可执行文件。仅对 Transport::Stdio 有意义。

Warning: 该字段会在启动服务器时被当作程序路径直接执行。它只应来自用户 自己的配置文件,不应该来自网络内容或项目文件,否则等同于开放任意代码执行。

command 可执行文件路径。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setEnabled(bool enabled)

设置是否启用,默认启用。被禁用的配置不会参与连接。

enabled 是否启用。

这个function 从 Visindigo 0.17.0 开始支持。

另请参阅 isEnabled().

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setEnvironment(const QMap<QString, QString> &environment)

设置追加到子进程的环境变量。是追加而不是替换:未列出的变量继承当前进程, 因此不需要为启动一个工具而拼出一份完整的 PATH。

environment 要追加的环境变量。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setHeaders(const QMap<QString, QString> &headers)

设置远程请求的附加头,常用于携带鉴权信息。

headers 附加请求头。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setName(const QString &name)

设置名称。名称是配置在 Center 与 Dialog 中的索引键,同名会互相覆盖。

name 名称,同时作为索引键。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setTransport(Visindigo::Agent::MCP::Transport transport)

设置传输方式。

Note: 切换传输方式不会清空另一种方式专用的字段(例如从 Transport::Stdio 换成 Transport::Sse 后,原有的 command 仍然留着)。这样在两种配置之间 来回切换时不必重新填写,代价是序列化结果里会同时出现两种字段。

transport 传输方式。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP &MCP::setUrl(const QUrl &url)

设置远程服务器的地址。仅对 Transport::SseTransport::StreamableHttp 有意义。

url 远程服务器地址。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Utility::JsonConfig MCP::toJson() const

序列化为 JSON 对象。

这个function 从 Visindigo 0.17.0 开始支持。