Перейти к основному содержимому

API управления MCP

@grant CAT.agent.mcp

API управления MCP (Model Context Protocol) позволяет скрипту управлять подключениями к MCP-серверам. Инструменты, которые предоставляет MCP-сервер, автоматически регистрируются у Agent для вызова в AI-диалогах.

MCP-серверы

MCP Client в ScriptCat использует транспортный протокол Streamable HTTP (JSON-RPC 2.0 поверх POST) и поддерживает версию протокола MCP 2025-03-26.

MCP-сервер может предоставлять три вида возможностей:

ВозможностьОписание
ToolsФункции-инструменты, автоматически регистрируемые как вызываемые Agent инструменты
ResourcesЧитаемые ресурсы (текст/бинарные)
PromptsШаблоны промптов с поддержкой параметров

listServers — список серверов

const servers = await CAT.agent.mcp.listServers();

Возвращаемое значение, MCPServerConfig[]:

ПолеТипОписание
idstringID сервера
namestringОтображаемое имя
urlstringАдрес HTTP-эндпоинта
apiKeystringAPI Key (необязательно)
headersRecord<string, string>Пользовательские заголовки запроса (необязательно)
enabledbooleanВключён ли
createtimenumberВременная метка создания
updatetimenumberВременная метка обновления

getServer — детали сервера

const server = await CAT.agent.mcp.getServer(serverId);

addServer — добавить сервер

const server = await CAT.agent.mcp.addServer({
name: "My MCP Server",
url: "https://mcp.example.com/api",
apiKey: "sk-xxx", // optional
headers: { // optional custom headers
"X-Custom": "value"
},
enabled: true
});

updateServer — обновить сервер

await CAT.agent.mcp.updateServer(serverId, {
name: "New name",
enabled: false
});

removeServer — удалить сервер

await CAT.agent.mcp.removeServer(serverId);

testConnection — проверить соединение

await CAT.agent.mcp.testConnection(serverId);

Пытается подключиться к серверу и обменяться версиями протокола; при успехе ничего не возвращает, при сбое выбрасывает исключение.

listTools — список инструментов

const tools = await CAT.agent.mcp.listTools(serverId);

Возвращает список инструментов сервера; каждый инструмент включает name, description и inputSchema (определение параметров JSON Schema).

Инструменты включённых MCP-серверов автоматически регистрируются у Agent с именами формата mcp_{serverId}_{toolName}.

listResources — список ресурсов

const resources = await CAT.agent.mcp.listResources(serverId);

Возвращает список ресурсов, которые может предоставить сервер.

readResource — прочитать ресурс

const result = await CAT.agent.mcp.readResource(serverId, uri);

Параметры:

ПараметрТипОписание
serverIdstringID сервера
uristringURI ресурса

Возвращает содержимое ресурса.

listPrompts — список шаблонов промптов

const prompts = await CAT.agent.mcp.listPrompts(serverId);

getPrompt — получить промпт

const messages = await CAT.agent.mcp.getPrompt(serverId, promptName, args?);

Параметры:

ПараметрТипОписание
serverIdstringID сервера
promptNamestringИмя промпта
argsRecord<string, string>Параметры промпта

Полный пример

// ==UserScript==
// @name MCP Tool Management
// @match *://*/*
// @grant CAT.agent.mcp
// @grant CAT.agent.conversation
// ==/UserScript==

// Add an MCP server
const server = await CAT.agent.mcp.addServer({
name: "Knowledge Base",
url: "https://my-kb.example.com/mcp",
apiKey: "my-api-key",
enabled: true
});

// Test the connection
try {
await CAT.agent.mcp.testConnection(server.id);
console.log("Connected successfully!");
} catch (e) {
console.error("Connection failed:", e);
}

// See the available tools
const tools = await CAT.agent.mcp.listTools(server.id);
console.log("Available tools:", tools.map(t => t.name));

// Use it in a conversation — MCP tools are registered automatically, so the AI can call them directly
const conv = await CAT.agent.conversation.create();
const reply = await conv.chat("Please use the knowledge base to search for information about ScriptCat");