mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-10-29 19:57:14 +08:00
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/ - 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页 - 每个扩展点一页,侧边栏由页面表生成 - 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
1.5 KiB
1.5 KiB
MCP 工具与资源(mcp_tool / mcp_resource)
把插件的能力暴露给 MCP 客户端。
from ab_sdk import points, provider
from ab_sdk.mcp import McpResource, McpTool
@provider(points.MCP_TOOL, id="search")
def search_tool(self):
async def handler(args: dict):
return {"results": [...], "keyword": args["keyword"]}
return McpTool(
description="在私有站点搜索",
handler=handler,
input_schema={
"type": "object",
"properties": {"keyword": {"type": "string"}},
"required": ["keyword"],
},
)
@provider(points.MCP_RESOURCE, id="stats")
def stats_resource(self):
async def handler():
return {"count": 3}
return McpResource(name="统计", handler=handler)
- 对外名称自动加插件 id 前缀:工具名为
<插件 id>__<id>(双下划线),资源 URI 为autobangumi://plugins/<插件 id>/<id>。不用.分隔,因为不少 MCP 客户端把工具名原样交给 LLM API,而后者通常只接受^[a-zA-Z0-9_-]{1,64}$。不合规的工具名会被跳过并写日志。 - 工具处理函数接收已按
input_schema校验的参数字典,返回可 JSON 序列化的对象。资源处理函数返回字符串(原样)或可 JSON 序列化的对象。 - 抛出的异常以
{"error": "..."}返回给客户端,并计入熔断。工具默认超时 60 秒(McpTool(timeout=...))。 - MCP 端点沿用 AB 的访问控制(IP 白名单或
scope=mcp令牌),插件无需自行鉴权。