Show HN: Java MCP Runtime for virtual threads A new Java and Kotlin Model Context Protocol server runtime called Tachyon has been released, built on Netty and conformance-tested against MCP versions 2025-11-25 and 2026-07-28. Tachyon runs synchronous Java handlers on virtual threads or suspending Kotlin handlers rather than on the Netty event loop, and ships with a localhost-only Host/Origin guard enabled by default. The runtime handles transport and protocol details including tools, resources, prompts, completions, logging, elicitation, cancellation, progress, pagination, and subscriptions, letting developers register handlers via a Java builder or Kotlin DSL. Protocol handling Tools, resources and templates, prompts, completions, logging, elicitation, cancellation, progress, pagination, and subscriptions — conformance-tested against MCP 2025-11-25 and 2026-07-28 . Read the features guide /docs/features/ Java and Kotlin Model Context Protocol server runtime built on Netty. Write your handlers — Tachyon handles transport and protocol details. Your first MCP server 1var server = TachyonServer.builder 2 .name "weather-mcp" 3 .withTools tools - tools.register 4 b - b.name "get forecast" 5 .description "Get weather forecast" 6 .inputSchema """ 7 {"type":"object","properties":{"city":{"type":"string"}},"required": "city" } 8 """ , 9 ctx, request - ToolResult.text "☀️ 22°C" 10 .port 8080 11 .build ; 12server.start ; 1import dev.tachyonmcp.kotlin.server.TachyonServer 2import dev.tachyonmcp.api.server.features.tools.ToolResult 3 4val server = TachyonServer port = 8080 { 5 info { name = "weather-mcp"; version = "1.0" } 6 tool name = "get forecast", description = "Get weather forecast" { 7 ToolResult.text "☀️ 22°C, clear skies" 8 } 9} Run synchronous Java handlers on virtual threads , or suspending Kotlin handlers — never on the Netty event loop. Netty owns the socket and connection lifecycle. A localhost-only Host / Origin guard is enabled by default ; deployments explicitly allow additional authorities. Choose the Java builder or Kotlin DSL, register a tool, and start the server. Open the quickstart /docs/quickstart/