📄️ Basics
The initialize/initialized handshake is replaced by a single server/discover request; capabilities are advertised in DiscoverResult. See RC preview.
📄️ Tools
Tool.inputschema / outputschema are full JSON Schema 2020-12 documents (InputSchema over serde_json::Value); the #tool] macro emits them automatically. See [RC preview.
📄️ Resources
The Model Context Protocol (MCP) provides a standardized way for servers to expose resources to clients. Resources allow servers to share data that provides context to language models, such as files, database schemas, or application-specific information. Each resource is uniquely identified by a URI.
📄️ Prompts
The Model Context Protocol (MCP) provides a standardized way for servers to expose prompt templates to clients. Prompts allow servers to provide structured messages and instructions for interacting with language models. Clients can discover available prompts, retrieve their contents, and provide arguments to customize them.
📄️ Sampling
sampling/createMessage is removed in MCP 2026-07-28. Server-side sampling no longer exists; expose the capability as a host-provided tool instead. See RC preview.
📄️ Elicitation
Context::elicit takes a stable replay key (ctx.elicit(key, params)) and runs in the MRTR re-run model — handlers must be side-effect-free up to each elicit point; wrap effects in ctx.once / ctx.memo / ctx.on_commit. See RC preview.
📄️ HTTP Transport
The HTTP transport is request/response only — no SSE GET, no DELETE, no Mcp-Session-Id on the wire. Multi-instance deployments require withrequeststatesecret and a shared withrequeststatestore. See RC preview.
📄️ Custom HTTP Stack
Neva's Streamable HTTP transport is pluggable. The default server is built on Volga and is enabled by server-full / http-server-volga, but starting with v0.3.3 you can host the MCP endpoint on any HTTP stack — axum, hyper, actix-web, or a hand-rolled adapter — by implementing a single trait.
📄️ Logging
logging/setLevel and notifications/message are removed in MCP 2026-07-28. Use the host's own telemetry pipeline. See RC preview.
📄️ Middlewares
Neva supports a middleware pipeline that allows you to intercept, inspect, or modify requests before and after they are processed. Middlewares are async functions that receive a MwContext and a Next callback.
📄️ Progress
For long-running tools, Neva can emit progress notifications (notifications/progress) to keep clients informed about how far along a task has progressed.
📄️ Tasks
Tasks is advertised as an extension (capabilities.extensions"io.modelcontextprotocol/tasks"]); with_tasks thinly wraps the registration. Task-augmented elicit uses ctx.task().elicit(params). See [RC preview.
📄️ Dependency Injection
Neva includes a built-in dependency injection (DI) container that lets you register shared services — database connections, HTTP clients, configuration objects, caches — and have them automatically provided to your tool, resource, and prompt handlers.
📄️ Argument Completion
MCP allows servers to suggest completions for prompt and tool arguments — similar to tab-complete in a terminal. When a client types a partial value, it can request a list of matching options, and the server responds with suggestions.
📄️ Content Types
MCP tool and resource handlers can return several different kinds of content — not just plain text. This page covers all available content types and when to use each.
📄️ Error Handling
The way errors behave in Neva depends on which kind of handler returns them.