xiantong 文档

概览

使用灵活的 HTTP 工具连接任何 REST API

只需告诉您的 Agent。 连接 API 最简单的方式是告诉您的 Agent 您的需求:

  • “连接 JSONPlaceholder API”
  • “为我公司的内部 API 添加访问权限”
  • “使用我的 API 密钥设置天气 API”

Agent 会自动处理配置、凭据和验证。

API 来源提供了一个灵活的 HTTP 工具,让您的 Agent 连接几乎任何 REST API。如果某个服务提供 API,您的 Agent 就能使用它 —— 无需 MCP 服务器。

工作原理#

当您配置 API 来源时,xiantong 会:

  1. 创建 一个用于发送请求的灵活 HTTP 工具
  2. 处理认证,通过安全存储和注入凭据
  3. 验证 连接,使用测试端点
  4. 允许 Agent 对 API 的基础 URL 发起任意请求

最终结果:您的 Agent 能够调用已配置 API 上的任何端点。

配置#

API 来源通过 JSON 文件配置:

{
"type": "api",
"name": "My API",
"tagline": "Description of the API",
"icon": "https://example.com/icon.png",
"api": {
"baseUrl": "https://api.example.com/",
"testEndpoint": {
"method": "GET",
"path": "health"
},
"authType": "bearer"
}
}

配置字段#

字段是否必填描述
type必须为 "api"
name来源的显示名称
tagline简短描述
icon图标 URL、表情或本地文件(自动发现:icon.svgicon.png
api.baseUrl所有 API 请求的基础 URL
api.testEndpoint用于验证连接的对象:{ method: "GET" | "POST", path: "endpoint", body?: {}, headers?: {} }
api.authType认证方式(见下文)
api.headerNameheader 认证类型的自定义头部名称
api.queryParamquery 认证类型的查询参数名称
api.authSchemebearer 认证的前缀(默认 "Bearer",也可为 "Token"
api.headerNames多头认证使用的头部名称数组(例如 [DD-API-KEY, DD-APPLICATION-KEY]
api.oauth通用 OAuth 2.0 配置块(详见下文 OAuth 2.0 部分)

身份验证类型#

API 来源支持六种认证方式:

Bearer 令牌#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "bearer"
}
}

发送 Authorization: Bearer {token}

头部认证#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "header",
"headerName": "X-API-Key"
}
}

通过自定义头部发送凭据:X-API-Key: {token}

查询参数认证#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "query",
"queryParam": "api_key"
}
}

将凭据作为查询参数附加:?api_key={token}

OAuth 2.0#

分为 自动发现(推荐)和 显式配置(适用于不支持标准元数据的提供方)。

自动发现(推荐)

如果 API 支持 RFC 9728(OAuth 受保护资源元数据),只需设置 authType —— xiantong 会自动处理端点和客户端注册:

{
"api": {
"baseUrl": "https://api.example.com/v1/",
"authType": "oauth"
}
}

xiantong 会请求基础 URL,读取 WWW-Authenticate 头部,发现 OAuth 元数据,动态注册客户端并启动授权流程。无需 oauth 配置块。

显式配置

对于不公开标准 OAuth 元数据的服务(如 GitHub、Linear),请手动提供端点:

{
"api": {
"baseUrl": "https://api.github.com/",
"authType": "oauth",
"oauth": {
"authorizationUrl": "https://github.com/login/oauth/authorize",
"tokenUrl": "https://github.com/login/oauth/access_token",
"clientId": "your_client_id",
"clientSecret": "your_client_secret",
"scopes": ["repo", "read:user"]
}
}
字段是否必填描述
oauth.authorizationUrlOAuth 授权端点
oauth.tokenUrlOAuth 令牌交换端点
oauth.clientId您的 OAuth 应用客户端 ID
oauth.clientSecret客户端密钥(公共 PKCE 客户端可不填)
oauth.scopes请求的 OAuth 范围
oauth.audience类似 Auth0 的 audience 参数
oauth.extraParams额外的授权 URL 参数

两种模式均支持完整的 PKCE OAuth 2.0 流程。令牌会自动刷新,并以 Authorization: Bearer {token} 发送。

对于 Google、Microsoft 和 Slack API,xiantong 提供内置的 OAuth 支持,并预配置了作用域 —— 无需手动配置 oauth 块。只需设置相应的 provider 字段。

无需认证#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "none"
}
}

适用于无需认证的公共 API。

Basic 认证#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "basic"
}
}

发送 Authorization: Basic {base64(username:password)}

多头认证#

{
"api": {
"baseUrl": "https://api.example.com",
"authType": "header",
"headerNames": ["X-API-KEY", "X-APP-KEY"]
}
}

将多个凭据分别作为头部发送。数组中的每个头部名称在认证时都会生成一个输入字段。所有头部都会包含在每次 API 请求中。

当 API 要求同时提供两个或多个认证头部时使用多头认证。这种情况常见于将身份与授权分开的服务,或要求同时提供 API 密钥与应用密钥的接口。

常见用例:

  • DatadogDD-API-KEY + DD-APPLICATION-KEY
  • 需要身份与签名密钥的 API:单独的 API 密钥和密钥
  • 应用 + 用户凭据服务:应用密钥加用户令牌

测试端点#

testEndpoint 字段指定用于验证连接的端点。测试来源时,xiantong 会请求此端点以确认:

  • 基础 URL 可访问
  • 认证凭据有效
  • API 响应正常

常见测试端点:

API 类型测试端点
健康检查/health
用户信息/me/user
API 状态/status/ping

选择一个轻量级且需要认证的端点,以便一次请求验证连接性与凭据。

为什么使用 API 来源?#

  • 通用兼容性

任何提供 REST API 的服务都可以集成。

  • 简单配置

只需提供基础 URL 和认证信息。

  • 灵活请求

HTTP 工具可发送任意 API 请求。

  • 安全凭据

API 密钥加密存储,不写入配置文件。

比较:MCP vs API 来源#

功能MCP 来源API 来源
设置需要 MCP 服务器 URL只需基础 URL + 认证配置
工具由服务器预定义灵活的 HTTP 工具
认证OAuth 或 bearerOAuth、bearer、header、query、basic、none
适用场景支持 MCP 的服务任何 REST API

如果可用,请使用 MCP 来源以获取预定义工具的更丰富整合。若服务无 MCP 支持或需要灵活 HTTP 访问,请使用 API 来源。

需要 Google、Microsoft 或 Slack? xiantong 对这些服务提供内置 OAuth 支持并预定义作用域 —— 只需告诉您的 Agent“连接 Google 日历”或“添加 Slack”,它就会引导您完成 OAuth 流程。需要其他 OAuth 提供方? 使用 authType: "oauth"oauth 配置块连接 GitHub、Linear、Notion、Spotify 或任何其他 OAuth 2.0 服务。

下一步#

实战示例#

API 来源配置的真实示例。