Blog · 2026-05-07

Deploy your first MCP server in one command

Go from a defineMcp file to a live MCP endpoint at https://your-slug.denkops.host/mcp with one deploy command, from the CLI or from Claude Code.

One command is all it takes. You write one TypeScript file with defineMcp, add a four-field denkops.json, run denkops deploy, and your MCP server is live at https://mcp-starter.denkops.host/mcp, ready to be installed in any assistant that supports remote MCP servers. This post walks the official starter from empty directory to live URL, first with the CLI, then with the Claude Code plugin.

What does a minimal MCP server look like?

Two files. The first is index.ts, which defines the server and exports it as the module default:

import { defineMcp } from "@denkopsai/sdk/mcp";
import { z } from "zod";

export default defineMcp({
  name: "mcp-starter",
  version: "1.0.0",
  tools: {
    add: {
      description: "Add two numbers.",
      input: z.object({ a: z.number(), b: z.number() }),
      handler: ({ a, b }) => ({ sum: a + b }),
    },
  },
});

That is the whole server. defineMcp takes a name, a version, and a map of tools, each with a description, a Zod input schema, and a handler. The full starter also ships a resource and a prompt, but one tool is enough to go live. You never write HTTP routing or protocol code: the platform serves the exported app and speaks MCP at /mcp for you.

The second file is denkops.json:

{ "name": "mcp-starter", "slug": "mcp-starter", "runtime": "bun", "connector": true }

The slug becomes your URL. "connector": true turns on the hosted OAuth flow, so assistants can install your server with a login and consent screen you never build. Everything else about what a connector is stays the same.

How do I deploy it from the CLI?

Two commands:

denkops login
denkops deploy

denkops login uses the GitHub device flow: it shows a code, you confirm it in the browser once, and the CLI is authenticated. denkops deploy builds the project and ships it into an always-on slot. When it returns, your server is live at https://mcp-starter.denkops.host with the MCP endpoint at /mcp. The process stays up between calls, so there are no cold starts.

Can I deploy from Claude Code instead?

Yes, and you can skip the CLI entirely. Install the DenkOps plugin:

/plugin marketplace add DenkOpsAI/denkops-mcp
/plugin install denkops

Then say "log in to DenkOps" and click Approve in the browser tab that opens, once. From then on, saying "deploy on DenkOps" in your project directory ships it, and Claude hands you back the live URL and an API key in the conversation. The Claude Code flow is the same deploy, phrased as a sentence.

What do you have when it finishes?

A public MCP server at a stable HTTPS URL. The transport is stateless streamable HTTP: clients POST JSON-RPC to /mcp, and every MCP client that supports remote servers can connect. Paste the URL into your assistant of choice as a remote MCP server, complete the OAuth consent your connector: true flag enabled, and ask it to add two numbers. Your tool runs in an always-on slot, so the next call finds the same warm process.

From here, the interesting work is your tools, not your infrastructure. The next post covers typing tool inputs with Zod so agents call them correctly.

FAQ

Do I need to write any HTTP or protocol code to deploy an MCP server?

No. `defineMcp({ name, version, tools })` builds the whole server, and you export its return value as the module default. The platform serves it and answers MCP requests at `/mcp`. Your code is only the tool definitions: a description, an input schema, and a handler each.

What goes in denkops.json?

Four fields: `name`, `slug` (which becomes your URL, `https://<slug>.denkops.host`), `runtime` (the starter uses `bun`), and optionally `"connector": true` to enable the hosted OAuth flow so assistants can install the server without you writing auth code.

Do I have to use the CLI to deploy?

No. The CLI route is `denkops login` (GitHub device flow) followed by `denkops deploy`. The Claude Code route is installing the DenkOps plugin, saying "log in to DenkOps" once, then saying "deploy on DenkOps". Both end in the same place: a live HTTPS URL and an API key.

Ship it yourself: bunx denkops deploy or say "deploy on DenkOps" from your coding agent.

Start on DenkOps →

← What is an MCP connector? · Typed MCP tools with Zod →