MCP
Officialv5.4.0@kubb/plugin-mcp
Options
Pass these options to pluginMcp(). Shared options link to Shared plugin options.
Options overview
| Option | Purpose | Default |
|---|---|---|
output | Where handlers are written: path, mode, barrel, banner, footer. | { path: 'mcp', barrel: { type: 'named' } } |
group | Split output by tag or path: type, name. | None |
client | Which registered client plugin the handlers call. | Auto-detected |
include | Keep only operations that match. | None |
exclude | Skip operations that match. | [] |
override | Apply different options per pattern. | [] |
resolver | Customize generated names and file paths. | resolverMcp |
macros | Rewrite AST nodes before printing. | [] |
Option details
output
Where the generated MCP handler files are written. The plugin writes server.ts, start.ts, and .mcp.json at the root of output.path, next to the handlers. Keep output.path a folder name such as the default 'mcp'. Single-file output (output.mode: 'file', or a path with an extension) has no room for those files. With group, handlers move into subfolders and those files stay at the root.
| Type | Output |
| Required | false |
| Default | { path: 'mcp', barrel: { type: 'named' } } |
client
Selects which registered client plugin the handlers call. A single registered client is auto-detected. Set client when several are registered.
| Type | 'fetch' | 'axios' | 'client' |
| Required | false |
@kubb/plugin-fetch.@kubb/plugin-axios.@kubb/plugin-client.Each handler passes grouped { path, query, headers, body } options. Configure transport settings such as baseURL on the client plugin.
Generated handlers follow the client plugin's returnType option. With 'full' (the client default) or @kubb/plugin-client's plain result, handlers read the success body from res.data, and with 'data' they use the resolved call result directly as the tool response body. Handlers always pass throwOnError: true so non-2xx responses throw and surface as tool errors, regardless of the client's throwOnErrorDefault.
@kubb/plugin-fetch, @kubb/plugin-axios, or @kubb/plugin-client alongside this one.resolver
Overrides generated file and symbol names. Omitted members keep resolverMcp. The shared members (name, file, imports) and the this context are described under resolver.
| Type | ResolverPatch<ResolverMcp> |
| Required | false |
type ResolverMcpPatch = {
name?(name: string): string
file?: {
baseName?(params: { name: string; extname: string }): string
path?(params: { baseName: string; output: Output }): string
}
imports?(options: ResolveImportsOptions): Array<ImportNode>
handler?: {
name?(node: OperationNode): string // → 'showPetByIdHandler'
}
}