---
title: "Nuxt MCP Toolkit"
description: "Build typed MCP tools, resources, and prompts in Nuxt with the shared Nitro runtime."
canonical_url: "https://mcp-toolkit.nuxt.dev"
---
# Nuxt MCP Toolkit

> Build typed MCP tools, resources, and prompts in Nuxt with the shared Nitro runtime.

<landing-hero command="npx skills add https://mcp-toolkit.nuxt.dev" installCommand="npx nuxt add mcp" linkLabel="Get Started" linkTo="/getting-started/installation">
<template v-slot:title="">

Expose your application to any AI

</template>

<template v-slot:description="">

Add a Model Context Protocol (MCP) server to your Nuxt application. Connect your features to AI clients with a Nitro-like Developer Experience.

</template>
</landing-hero>

<landing-features>
<template v-slot:title="">

Make your App accessible to AI

</template>

<template v-slot:description="">

Use the Model Context Protocol to standardize how LLMs interact with your Nuxt application.

</template>

<template v-slot:features="">
<landing-feature-item description="Use familiar patterns like defineMcpTool and defineMcpResource. It feels just like writing API routes." icon="i-lucide-code-2" title="Nitro-like API" to="https://mcp-toolkit.nuxt.dev/tools/overview">



</landing-feature-item>

<landing-feature-item description="Automatic discovery of tools, resources and prompts. Just create files in the server/mcp directory." icon="i-lucide-sparkles" title="Zero Configuration" to="https://mcp-toolkit.nuxt.dev/getting-started/installation">



</landing-feature-item>

<landing-feature-item description="Define your tools with Zod schemas and full TypeScript inference. No more guessing argument types." icon="i-lucide-shield-check" title="Type-Safe Tools" to="https://mcp-toolkit.nuxt.dev/advanced/typescript">



</landing-feature-item>

<landing-feature-item description="Share the Nitro MCP runtime, with modern and legacy protocol paths for clients such as Claude, Cursor and ChatGPT." icon="i-lucide-check-circle-2" title="Standard Compatible" to="https://mcp-toolkit.nuxt.dev/getting-started/connection">



</landing-feature-item>

<landing-feature-item description="Advertise and validate output schemas, with structured data and a JSON text fallback for clients." icon="i-lucide-braces" title="Structured Output" to="https://mcp-toolkit.nuxt.dev/tools/schema-handler">



</landing-feature-item>

<landing-feature-item description="Intercept requests to add authentication, logging and rate limiting. Access event context from your tools." icon="i-lucide-shield" title="Middleware" to="https://mcp-toolkit.nuxt.dev/advanced/middleware">



</landing-feature-item>

<landing-feature-item description="Reuse application work with Nitro cached functions. Keep typed outputs and choose cache keys and storage explicitly." icon="i-lucide-zap" title="Nitro Caching" to="https://mcp-toolkit.nuxt.dev/tools/errors-caching">



</landing-feature-item>

<landing-feature-item description="Describe inputs with complete schemas, defaults and examples. Omit input declarations for tools without arguments." icon="i-lucide-list-checks" title="Schema Validation" to="https://mcp-toolkit.nuxt.dev/tools/schema-handler">



</landing-feature-item>

<landing-feature-item description="Authenticate endpoints and require verified scopes when tools run. Give private catalogs their own endpoint." icon="i-lucide-lock" title="Authorization" to="https://mcp-toolkit.nuxt.dev/tools/groups-organization">



</landing-feature-item>

<landing-feature-item description="InstallButton component, SVG badges and deeplinks to let users add your MCP server to their IDE instantly." icon="i-lucide-download" title="1-Click Install" to="https://mcp-toolkit.nuxt.dev/getting-started/connection">



</landing-feature-item>

<landing-feature-item description="Create separate MCP endpoints with their own tools, resources and configuration. Organize by domain or version." icon="i-lucide-server" title="Multiple Endpoints" to="https://mcp-toolkit.nuxt.dev/tools/groups-organization#give-each-endpoint-its-own-directories">



</landing-feature-item>

<landing-feature-item description="Verify LLMs call the right tools with the AI SDK and Evalite. Catch regressions before they reach production." icon="i-lucide-flask-conical" title="Evals" to="https://mcp-toolkit.nuxt.dev/advanced/evals">



</landing-feature-item>

<landing-feature-item description="Let AI assistants help you build, review and troubleshoot your MCP server with the Agent Skills specification." icon="i-lucide-wand-2" title="Agent Skills" to="https://mcp-toolkit.nuxt.dev/getting-started/agent-skills">



</landing-feature-item>

<landing-feature-item description="Organize tools, resources and prompts into groups with tags. Auto-inferred from subdirectories or set explicitly." icon="i-lucide-tags" title="Groups & Tags" to="https://mcp-toolkit.nuxt.dev/tools/groups-organization#groups-and-tags">



</landing-feature-item>

<landing-feature-item description="Debug your MCP server in real-time with the built-in inspector. View tools, resources, prompts, connections and logs." icon="i-lucide-bug" title="DevTools Integrated" to="https://mcp-toolkit.nuxt.dev/getting-started/inspector">



</landing-feature-item>

<landing-feature-cta icon="i-lucide-arrow-right" label="Get Started" to="https://mcp-toolkit.nuxt.dev/getting-started/installation">
<template v-slot:title="">

Start building now

</template>
</landing-feature-cta>
</template>
</landing-features>

<landing-code>
<template v-slot:title="">

Just Write Code

</template>

<template v-slot:description="">

Define tools, resources and prompts using standard TypeScript files. No complex configuration or boilerplate required.

</template>

<template v-slot:tools="">

```ts
// server/mcp/tools/calculate-total.ts
import { z } from 'zod'
import { defineMcpTool } from '@nuxtjs/mcp-toolkit/server'

export default defineMcpTool({
  description: 'Add a list of numbers',
  annotations: { readOnlyHint: true, openWorldHint: false },
  inputSchema: z.object({ values: z.array(z.number()) }),
  outputSchema: z.object({ total: z.number() }),
  handler: ({ values }) => ({ total: values.reduce((sum, value) => sum + value, 0) }),
})
```

</template>

<template v-slot:resources="">

```ts
// server/mcp/resources/help.ts
import { defineMcpResource } from '@nuxtjs/mcp-toolkit/server'

export default defineMcpResource({
  uri: 'docs://help',
  description: 'Application help',
  mimeType: 'text/plain',
  handler: () => 'Use the total tool to add numbers.',
})
```

</template>

<template v-slot:prompts="">

```ts
// server/mcp/prompts/summarize.ts
import { z } from 'zod'
import { defineMcpPrompt } from '@nuxtjs/mcp-toolkit/server'

export default defineMcpPrompt({
  description: 'Summarize text',
  inputSchema: z.object({ text: z.string() }),
  handler: ({ text }) => `Summarize this text:\n\n${text}`,
})
```

</template>
</landing-code>

<landing-dev-tools darkImage="/mcp-devtools-dark.png" imageAlt="Nuxt MCP DevTools" lightImage="/mcp-devtools-light.png">
<template v-slot:title="">

Built-in Inspector

</template>

<template v-slot:description="">

Debug your MCP server in real-time. View registered tools, resources, and prompts, and monitor client connections and request logs.

</template>
</landing-dev-tools>

<landing-cta :links="[{"label":"Get Started","to":"/getting-started/installation","icon":"i-lucide-arrow-right","trailing":true,"color":"neutral","size":"xl"},{"label":"Star on GitHub","to":"https://github.com/nuxt-modules/mcp-toolkit","icon":"i-lucide-github","trailing":true,"color":"neutral","variant":"ghost","size":"xl"}]">
<template v-slot:title="">

Ready to build your first MCP Server?

</template>

<template v-slot:description="">

Get started in minutes with our comprehensive guide and examples.

</template>
</landing-cta>

## Resources for Agents

- [API catalog: every service document this site publishes](https://mcp-toolkit.nuxt.dev/.well-known/api-catalog)
- [Sitemap (XML)](https://mcp-toolkit.nuxt.dev/sitemap.xml)
- [Sitemap (Markdown): every page on the site](https://mcp-toolkit.nuxt.dev/sitemap.md)
- [llms.txt: index of the documentation for LLMs](https://mcp-toolkit.nuxt.dev/llms.txt)
- [llms-full.txt: the full documentation as a single file](https://mcp-toolkit.nuxt.dev/llms-full.txt)
- [Agent skills index: every skill published by this site](https://mcp-toolkit.nuxt.dev/.well-known/skills/index.json)
- [Agent skill: manage-mcp](https://mcp-toolkit.nuxt.dev/.well-known/skills/manage-mcp/SKILL.md)
- [MCP server card](https://mcp-toolkit.nuxt.dev/.well-known/mcp/server-card.json)
- [MCP endpoint](https://mcp-toolkit.nuxt.dev/mcp)
- [OpenAPI document: every route this site serves to agents](https://mcp-toolkit.nuxt.dev/openapi.json)


## Sitemap

See the full [sitemap](https://mcp-toolkit.nuxt.dev/sitemap.md) for all pages.
