Skip to content
MCP logo

MCP

Officialv5.4.0

@kubb/plugin-mcp

kubb add plugin-mcp

Options

Pass these options to pluginMcp(). Shared options link to Shared plugin options.

Options overview

OptionPurposeDefault
outputWhere handlers are written: path, mode, barrel, banner, footer.{ path: 'mcp', barrel: { type: 'named' } }
groupSplit output by tag or path: type, name.None
clientWhich registered client plugin the handlers call.Auto-detected
includeKeep only operations that match.None
excludeSkip operations that match.[]
overrideApply different options per pattern.[]
resolverCustomize generated names and file paths.resolverMcp
macrosRewrite 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.

TypeOutput
Requiredfalse
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'
Requiredfalse
'fetch'
Calls the operations generated by @kubb/plugin-fetch.
'axios'
Calls the operations generated by @kubb/plugin-axios.
'client'
Calls the operations generated by @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.

The handlers call a client plugin's functions, so register @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.

TypeResolverPatch<ResolverMcp>
Requiredfalse
Partial override
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'
  }
}