MCP
Officialv5.1.1@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 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 two files. With group, handlers move into subfolders and the two 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' |
| Required | false |
@kubb/plugin-fetch.@kubb/plugin-axios.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) 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 or @kubb/plugin-axios 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'
}
}