Getting help from LLMs

This page describes some of the ways that you can get help from large language models (LLMs) when developing a Vespa application.

From our experience, providing the right context to the LLM is essential to get good results when asking questions about Vespa.

Vespa skills for AI coding assistants

We provide a set of agent skills that teach AI coding assistants how to work with Vespa. An installed skill is loaded by the assistant when relevant to the task, giving it Vespa-specific instructions and reference material.

Skill Description
app-package Scaffold and configure application packages: services.xml, schemas, deployment.xml, query profiles and embedders
schema-authoring Write, validate and evolve schema files: field types, indexing, match modes, tensors, rank profiles, structs and fieldsets
query-builder Build YQL queries and design rank profiles: operators, grouping, rank phases, ML models and query tensors
feed-operations Document put/update/remove, document ID format, partial and conditional updates, bulk feeding and visiting
vespa-cli Use the Vespa CLI to deploy, manage and debug applications, including production pipelines, testing and CI/CD
pyvespa Define, deploy, feed and query Vespa applications from Python using pyvespa
elasticsearch-migration Migrate from Elasticsearch: map indices and mappings to schemas, translate Query DSL to YQL, and plan reindexing

Installing skills with the Vespa CLI

Agent skills for your harness can be installed with either npx or vespa cli

The Vespa CLI can install the skills for Claude Code, Codex, Cursor and Antigravity CLI. The first time you run a vespa command in an interactive terminal, you are asked whether to install them. You can also manage skills explicitly:

# List available skills
vespa skills list

# Install all skills - prompts for harness(es) and scope
vespa skills install

# Install selected skills for Claude Code and Codex, in the current project only
vespa skills install schema-authoring app-package --harness claude,codex --local

# Update installed skills to the latest version
vespa skills update

The skills can alternatively be installed by using the command: npx skills add vespa-engine/skills.

Markdown version of documentation pages

Every page of the documentation is available in Markdown format, by changing the URL from .html to .html.md. There is also a link to the markdown version in the top right corner of each page.

This can for example be used to copy/paste relevant markdown documentation page(s) into your AI tool of choice when working with LLMs on particular topics.

llms.txt

We provide an llms.txt file, that can serve as a top level entrypoint for an LLM, which includes both top-level overview, architecture, as well as title of and link to markdown-version of all documentation pages.

See llmstxt.org for more information about the format.

Example usage

The llms.txt file can be downloaded with:

curl -O https://docs.vespa.ai/llms.txt

This file can then be used as an entrypoint when working with LLMs, either through an IDE, CLI or a chat interface. If the LLM has a tool available that allows it to fetch the referenced URLs, it can fetch the content of the desired pages as needed.

We also provide llms-full.txt which contains the full content of all documentation pages in markdown format. This file is relatively large (almost 0.5M words as of Oct 2025), so use accordingly.

MCP Server

Public Vespa MCP server

We don't provide any official MCP server at this time, but will update this page as soon as we do.

Personal MCP server

Users can enable MCP server capablities in their own Vespa apps. This can be done by adding McpRequestHandler to services.xml with one or more McpSpecProvider components.

A pre-built McpSearchSpecProvider already exists, and a usage example can be found in this sample app. This exposes Vespa search to LLMs via the /mcp/ endpoint.

Users can add more tools by implementing McpSpecProvider and adding the components in services.xml.

Example MCP config

Add this to services.xml

<component id="com.yahoo.search.mcp.McpSearchSpecProvider" bundle="container-search-and-docproc"/>
<handler id="ai.vespa.mcp.McpRequestHandler" bundle="container-disc">
    <binding>http://*/mcp/*</binding>
</handler>