View the source code for this module on GitHub: https://github.com/mcp-use/mcp-use/blob/main/libraries/typescript/packages/mcp-use/src/server/mcp-server.ts
listen(), or get a handler for serverless platforms (Cloudflare Workers, Vercel Edge, Deno).
basic/simple example):
new MCPServer(config) returns an McpServerInstance, a value that is simultaneously the MCPServer class, the Hono app, and an mcp-use helper surface. That means server.tool(...) (MCP) and server.get('/health', ...) (Hono) both work on the same object. The exact return type is McpServerInstance<true> when oauth is configured and McpServerInstance<false> otherwise.Constructor
Creates a new server instance. Initializes the native MCP server from the official SDK, creates the Hono application, sets up OAuth if configured, configures session management (stateful or stateless), and wraps the registration methods for multi-session support. Stateless mode is auto-detected (Deno defaults to stateless, Node.js to stateful) whenstateless is not set.
Parameters
The most commonServer configuration object (see fields below).
ServerConfig fields:
SignatureUnique server name displayed to clients.Semantic version of the server (e.g. “1.0.0”).Human-readable description shown to clients during discovery.Server-wide guidance for AI models, returned during MCP initialization.Hostname used for widget URLs and server endpoints.Full public base URL (overrideshost:portfor widget and OAuth URLs). Use when behind a reverse proxy.OAuth provider configuration. When present, the instance is typed asMcpServerInstance<true>.CORS overrides, matching the options accepted by Hono’scorsmiddleware. Defaults to permissive CORS (origin: "*") for development ergonomics.Allowed origins for DNS rebinding protection. If unset or empty, host validation is disabled; if set, validation is enabled globally.Force stateless (no session tracking) or stateful mode. Auto-detected when omitted: stateless for Deno, stateful for Node.js.Idle timeout for sessions in milliseconds (default: 86400000, one day).
Methods
tool
Registers a tool that MCP clients can call. The definition suppliesname and description; pass a Zod schema (or inputs) to validate arguments, and an optional callback that returns the tool result. Returns the server instance so calls can be chained. Argument types are inferred from the definition, so the callback parameters are fully typed.
Parameters
ReturnsTool configuration (name, description, schema/inputs, annotations, etc.).Async handler that receives the validated input (and a context object) and returns a tool result.
Example
resource
Registers a static resource that clients can read by its URI. A resource represents data or content (a file, a config blob, an API response). Returns the server instance for chaining. ThemimeType defaults to "text/plain" when omitted.
Parameters
ReturnsResource configuration (name, uri, description, mimeType).Async handler returning the resource content.
Example
resourceTemplate
Registers a resource template for parameterized resources. Clients read URIs that match auriTemplate (for example docs://{topic}); the template parameters are extracted and passed to the callback. Optional callbacks.complete provides autocomplete suggestions per parameter. Returns the server instance for chaining.
Parameters
ReturnsTemplate configuration (name, uriTemplate, description, mimeType, callbacks).Async handler receiving the resolvedURLand the extracted params.
Example
prompt
Registers a reusable prompt template that clients can request. Prompts can accept arguments (validated by a Zodschema) and return formatted messages ready to send to an LLM. Returns the server instance for chaining.
Parameters
ReturnsPrompt configuration (name, description, schema).Async handler that returns the prompt messages.
Example
uiResource
Registers a UI resource for interactive widgets (MCP Apps). UI resources serve interactive components that compatible clients (such as ChatGPT with the Apps SDK, or Claude) can render. Returns the server instance for chaining. This is a declarative wrapper over the lower-level builders in the Widgets and MCP Apps reference. ParametersReturnsUI resource configuration (name, uri, and the widget source such ashtml, a component, or an external URL). See UIResourceDefinition.
Example
notifyResourceUpdated
Notifies subscribed clients that a resource has changed. Sends anotifications/resources/updated message to every session that called resources/subscribe for the given URI. Can be called from a tool handler or any async context. Resolves once all notifications have been sent.
Parameters
ReturnsThe URI of the resource that was updated.
Example
listen
Starts the HTTP server. Mounts MCP protocol endpoints (at/mcp and /sse), the inspector UI (at /inspector), widget routes, and OAuth routes (if configured), then begins listening. Resolves once the server is listening. During HMR reload (when the CLI manages the lifecycle) this is a no-op.
Port resolution, in order of priority: the port argument, then the --port CLI argument, then the PORT environment variable, then the default 3000. The host comes from config.host or the HOST environment variable (default "localhost"), and the base URL comes from config.baseUrl or MCP_URL, falling back to http://${host}:${port}.
Parameters
ReturnsPort to listen on. When omitted, falls back to the--portCLI arg, thenPORT, then 3000.
Example
proxy
Mounts one or more remote MCP servers onto this server. It introspects each remote server’s tools, resources, and prompts and registers them natively, so this server acts as a gateway. Pass a map of namespace to connection config, or pass a singleMCPSession plus a namespace option. Sampling and elicitation requests from proxied tools are forwarded to the active client session when request context is available. Resolves once mounting is complete.
Parameters
ReturnsA map of namespace to server connection config, or a singleMCPSession.Additional options. Providenamespacewhen passing a singleMCPSession.
Example
Static methods
fromOpenAPI
Creates an MCP server from a parsed, bundled OpenAPI document. Each included OpenAPI operation is registered as an MCP tool. The servername defaults to spec.info.title and the version defaults to options.version, then spec.info.version, then "1.0.0". Returns an McpServerInstance<false> (OAuth is not configured by this factory).
Parameters
ReturnsOpenAPI options (see fields below).The parsed OpenAPI document.Base URL for the generated HTTP requests.Server name override.Server version override (falls back to “1.0.0”).Bearer or header auth applied to generated requests.Extra headers sent with every request.Only include operations matching these tags.Rules to exclude operations by operationId, path, method, or tags.Custom fetch implementation.
Signature
getPackageVersion
Returns the installedmcp-use package version string (for example "1.13.2").
Returns
Example
Types
McpServerInstance
The runtime type of a value returned bynew MCPServer(config). It is an intersection of three surfaces, so a single instance exposes MCP methods, the full Hono app, and the mcp-use helper surface at once.
The HasOAuth type parameter is true when oauth is configured in ServerConfig and false otherwise; it flows into the typing of tool, resource, and prompt callbacks (for example, the presence of ctx.auth).
Definition