跳到主要内容

API 参考

按功能划分的 @powerduck/openapi-mcp-server 全部公开导出接口。

规范加载​

导出接口签名说明
loadOpenApiSpec(filePath)(string) => Promise<Oas32Document>读取 JSON 或 YAML 文件,校验、解析引用并断言操作 ID 唯一。通过 .ya?ml 扩展名识别 YAML。
parseSpecContent(rawText, isYaml)(string, boolean) => Promise<Oas32Document>从字符串解析文档。输入为空或无效时抛出异常。

工具生成​

导出接口签名说明
generateTools(spec)(spec) => Tool[]为每个操作生成 MCP Tool 定义。
generateToolsDetailed(spec)(spec) => GenerateToolsResult返回 { tools, bindings, issues }。
buildBindingIndex(spec)(spec) => Map<string, ToolBinding>将生成的工具名称映射到其 ToolBinding,是 getBindingIndex 的别名。

类型导出:ToolBinding、GeneratedToolWithBinding(包内 GeneratedTool 的别名)。

提示词与资源​

导出接口签名说明
generatePrompts(spec)(spec) => GeneratedPrompt[]列出全部生成的提示词。
resolvePrompt(spec, name, args?)(spec, string, Record?) => GetPromptResult | null按名称解析提示词;未知名称返回 null。
generateResources(spec)(spec) => GeneratedResource[]列出目录资源。
readResource(spec, uri)(spec, string) => ResourceContentItem | null按 URI 读取一个资源。

请求构建与执行​

导出接口签名说明
buildRequest(baseUrl, templatePath, pathItem, operation, args, binding?)=> BuiltRequest将参数序列化为 { url, query, headers, body, dropped },使用位置参数。
executeToolCall(spec, toolName, args, context?)(spec, string, Record?, ExecutionContext?) => Promise<ToolCallResult>针对上游 API 执行生成的工具。非 2xx 响应作为数据返回;传输失败会抛出异常。

ToolCallResult 字段:status, statusText, headers, data, truncated, url, method, durationMs, correlationId。

规范工具函数​

导出接口说明
iterateOperations(spec, issues?)依次产出所有已解析操作的生成器,包含 OpenAPI 3.2 的 additionalOperations。
collectOperationParameters(pathItem, operation, issues?, context?)按 (name, in) 合并路径项与操作参数。
normalizeParameter(candidate)规范化原始参数;不可用时返回 null。
synthesizeOperationId(method, pathTemplate)操作未提供 operationId 时,生成确定性的备用 ID。
ensureUniqueName(candidate, taken)追加数字后缀,确保名称唯一。
extractPathTemplateVariables(pathTemplate)提取 {name} 变量,去重并保留首次出现的顺序。
effectiveStyle(parameter)应用规范默认的 style。
effectiveExplode(parameter)应用规范默认的 explode。
findOperationById(spec, operationId)首次构建后按 O(1) 复杂度查找;未知 ID 返回 null。
findDuplicateOperationIds(spec)报告作者声明的重复 ID。
assertUniqueOperationIds(spec)操作 ID 重复时抛出异常。
isPlainObject(value)将类型收窄为普通对象。
truncateGeneratedName(name, limit=64)缩短名称并保留唯一性。

类型导出:OperationEntry、DuplicateOperationId。

MCP 服务与传输​

导出接口说明
buildMcpServer(specProvider, contextProvider?, options?)创建 SDK Server 并连接工具、提示词和资源处理器,使用位置参数。
startStdioServer(spec, context?, options?)通过 stdio 提供一份文档,返回 { closed, close() }。
attachMcpRoutes(app, options)挂载 Streamable HTTP(/mcp)及可选的旧版 SSE(/sse)路由。接收 AttachMcpRoutesOptions,返回 McpRouteHandle。
attachSseRoutes(app, specProvider, contextProvider, routeGuard?)已弃用的位置参数包装函数,返回 { activeSessionCount, closeAll }。
createStreamableSessionHost(options)创建独立的 Streamable HTTP 会话宿主,用于自定义传输集成。

类型:SpecProvider = () => Document | null, ContextProvider = () => ExecutionContext, AttachMcpRoutesOptions, McpRouteHandle, StreamableSessionHost, StreamableSessionHostOptions, McpSessionEvent, McpSessionInfo, SessionCloseReason, SessionKind。

attachMcpRoutes 从包根入口导出。在其选项中配置 maxSessions、allowedOrigins、sessionIdleMs 和 DNS 重绑定防护。句柄提供 activeSessionCount、pendingSessionCount、listSessions、closeSession、closeAll 和 dispose。关闭时调用 dispose(),停止后台清理并关闭会话。

管理服务与认证(./server 子路径)​

从 @powerduck/openapi-mcp-server/server 或包根入口导入 startAdminServer。createAuthMiddleware 应从包根入口导入,./server 子路径不导出它。

导出接口签名说明
startAdminServer(config)Promise<AdminServerHandle>启动带 Web 管理界面和 MCP 路由的 Express 应用,返回 { app, server, port, close() }。
createAuthMiddleware(apiKey?)RequestHandlerBearer 或 x-api-key 访问保护。省略密钥可禁用,使用位置参数。

运行时与工具函数​

导出接口说明
ServiceRegistry管理 ManagedServiceRecord 的类:upsert、list、get、remove、clear、start、stop、fail。
isAbortError(error)对于 AbortError 或 axios 的 CanceledError 返回真。
newId()生成 UUID,备用方案使用时间戳。

CLI​

可执行命令为 openapi-mcp,仅有一个子命令 serve:

openapi-mcp serve [options]
选项默认值说明
--port <n>3000HTTP 端口,用于 Web 传输。
--host <host>127.0.0.1HTTP 主机。
--transport <mode>webstdio 或 web。
--spec <path>—OpenAPI 文件路径,stdio 模式下必填。
--base-url <url>—覆盖上游基础 URL。
--api-key <key>—管理 API 密钥。
--upstream-header "Name: value"—上游请求头,可重复指定。
--timeout <ms>30000上游超时。
--no-persist—禁用状态持久化。

类型(从 types 重新导出)​

ServerConfig, SecurityContext, AppState, PersistedState, ExecutionContext, TransportMode, SpecSource, ServiceStatus, ProtocolHint, LogDirection, LogLevel, ParameterLocation, BodyEncoding, ServiceEndpointInfo, ManagedServiceRecord, SpecIssue, AdminStatus, GeneratedPrompt, GeneratedResource, GeneratedTool, ResourceContentItem, PromptMessageShape, RequestLogEntry, LogQueryOptions, LogQueryResult;ResolvedPrompt 已弃用。类型守卫:isSpecSource, isServiceStatus, isProtocolHint, isParameterLocation, isBodyEncoding, isPlainRecord。

错误与行为​

  • 未知的工具、提示词或资源 ID 会产生 MCP InvalidParams 错误,而非在正常结果中返回失败内容。
  • 会话处于活动状态但规范缺失时,产生 InternalError。
  • 上游 4xx/5xx 响应作为带有 isError: true 的内容返回给模型,不抛出异常;只有传输层失败(DNS、TLS、超时、取消)才会抛出异常。

另请参阅​