I've been building Kervan for a while.
It turns HTTP APIs into tools AI assistants can use. You describe the API in a short YAML file (or write tools in TypeScript if you prefer) and Kervan serves them as an MCP server that your AI client, such as Claude Code, can call.
The same tool, two ways
Here's a weather tool written in YAML. This is a complete kervan.yaml:
specVersion: 1 name: weather version: 0.1.0 tools: - name: get_current_weather description: Current temperature (°C) and wind speed (km/h) at a latitude and longitude. input: { type: object, properties: { lat: { type: number }, lon: { type: number } }, required: [lat, lon] } http: url: https://api.open-meteo.com/v1/forecast query: { latitude: "{{input.lat}}", longitude: "{{input.lon}}", current: "temperature_2m,wind_speed_10m" } output: { select: "current" } And the same tool in TypeScript, on the official MCP SDK:
import { createApp, z } from "@kervan/core" import { serve } from "@kervan/transport/node" const app = createApp({ name: "weather", version: "0.1.0" }) app.tool("get_current_weather", { description: "Current temperature (°C) and wind speed (km/h) at a latitude and longitude.", input: z.object({ lat: z.number(), lon: z.number() }), handler: async ({ lat, lon }) => { const url = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}¤t=temperature_2m,wind_speed_10m` return JSON.stringify((await (await fetch(url)).json()).current) }, }) await serve(app) Use YAML when the tool is just an HTTP call. Use TypeScript when you want to write the handler yourself. Both get the same checks.
Try it
npm create kervan@latest my-server npx kervan@latest dev kervan.yaml The server runs over stdio or HTTP. There's a guide for connecting it to Claude Code on the site.
Safe by default
- Spec tools can only reach public addresses
- Secrets stay out of results, errors and logs
- Every call has a timeout
Also
- It speaks the stateless MCP 2026-07-28 revision and serves clients of the 2025 revisions from the same app.
- Kervan Studio is an optional self-hosted web UI for managing servers, secrets, users and logs. The framework works without it.
It's version 0.1, so feedback is very welcome.
- Site and docs: https://getkervan.dev
- Source (MIT): https://github.com/orchesta/getkervan