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
传输方式。
| Constant | Value | Description |
|---|---|---|
Visindigo::Agent::MCP::Transport::Stdio | 0 | 以子进程方式启动本地服务器,通过标准输入输出交换按行分隔的 JSON-RPC 消息。适用于随程序分发的本地工具。 |
Visindigo::Agent::MCP::Transport::Sse | 1 | 通过 Server-Sent Events 接收服务端推送,请求走普通的 HTTP POST。 这是较早的远程传输方式。 |
Visindigo::Agent::MCP::Transport::StreamableHttp | 2 | 在单个 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 处理,同时保留 command 与 url 两个字段,因此配置文件里多写的字段不会造成信息丢失。
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::Sse 与 Transport::StreamableHttp 有意义。
url 远程服务器地址。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Utility::JsonConfig MCP::toJson() const
序列化为 JSON 对象。
这个function 从 Visindigo 0.17.0 开始支持。