From 98d0bba355d664cffba6214f3610a9c365a920b8 Mon Sep 17 00:00:00 2001 From: guo zebin Date: Wed, 7 Jan 2026 16:15:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dali=20tts=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MCP外部调用接口.md | 102 ++++++++++++++++++++++++++++++++++ faymcp/static/images/Logo.png | Bin 8474 -> 8249 bytes gui/static/images/Logo.png | Bin 8474 -> 8249 bytes tts/ali_tss.py | 11 +++- 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 docs/MCP外部调用接口.md diff --git a/docs/MCP外部调用接口.md b/docs/MCP外部调用接口.md new file mode 100644 index 0000000..b0f43ea --- /dev/null +++ b/docs/MCP外部调用接口.md @@ -0,0 +1,102 @@ +# MCP 工具外部调用接口 + +本文整理 Fay 内置 MCP 管理服务(默认端口 5010)的外部调用接口,覆盖 MCP 工具调用与预启用工具调用。 + +## 基础信息 + +- Base URL: `http://127.0.0.1:5010` +- Content-Type: `application/json` + +## MCP 工具调用接口 + +### 调用指定服务器工具 + +`POST /api/mcp/servers/{server_id}/call` + +请求体示例: +```json +{ + "method": "tool_name", + "params": { + "key": "value" + }, + "is_prestart": false +} +``` + +说明: +- `is_prestart=true` 会跳过工具启用状态检查(用于预启用调用)。 + +### 调用工具(自动选择在线服务器) + +`POST /api/mcp/tools/{tool_name}` + +请求体示例: +```json +{ + "key": "value" +} +``` + +### 获取指定服务器工具列表 + +`GET /api/mcp/servers/{server_id}/tools` + +### 获取在线服务器工具列表(聚合) + +`GET /api/mcp/servers/online/tools` + +## 预启用工具调用接口 + +### 配置预启用工具 + +`POST /api/mcp/servers/{server_id}/tools/{tool_name}/prestart` + +请求体示例: +```json +{ + "enabled": true, + "params": { + "query": "{{question}}" + }, + "include_history": true, + "allow_function_call": false +} +``` + +### 获取可运行的预启用工具列表 + +`GET /api/mcp/prestart/runnable` + +### 调用单个预启用工具(自动连接服务器) + +`POST /api/mcp/servers/{server_id}/prestart/{tool_name}/call` + +请求体示例: +```json +{ + "params": { + "query": "{{question}}" + }, + "question": "用户问题", + "keep_connection": true +} +``` + +### 批量调用所有预启用工具(自动连接服务器) + +`POST /api/mcp/prestart/call` + +请求体示例: +```json +{ + "question": "用户问题", + "keep_connection": true, + "server_ids": [1, 2], + "tool_names": ["tool_a", "tool_b"] +} +``` + +说明: +- `question` 必填,用于替换 `params` 中的 `{{question}}` 占位符。 +- `server_ids` 与 `tool_names` 为空时表示对全部预启用工具生效。 diff --git a/faymcp/static/images/Logo.png b/faymcp/static/images/Logo.png index 333263f72fe6b76c213b9d79143b7e2ecf1c0508..4099ec6f064e67e28df13c92ef9cc4a60c3066f1 100644 GIT binary patch literal 8249 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�sPP*bOKamxpN+g_fWuh%q+?CunS-8_0Nd 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 YbD8uY_CF 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�sPP*bOKamxpN+g_fWuh%q+?CunS-8_0Nd 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 Y