Decision: TypeScript is the lowest-friction live-follow for a mixed Java/.NET room. It is one of two Tier-1 official SDKs (~66M npm downloads), zero-install beyond Node, and MCP Inspector ships as a single
npxcommand [1] [6]. Python ties it on maturity but adds a venv/uvstep; C# is official and excellent but needs the .NET SDK + project scaffolding. Follow in TS, port after.
Pre-install (tell attendees before the session)
| Need | Version / command |
|---|---|
| Node.js | ≥ 22.7.5 (Inspector requires it; SDK needs ≥20) [6] |
| Package manager | npm (bundled) — no global installs needed |
| Editor | any; VS Code for inline TS types |
Minimal project
mkdir my-mcp && cd my-mcp && npm init -y
npm install @modelcontextprotocol/sdk zod
npm install -D @types/node typescript
package.json: add "type": "module" and "scripts": { "build": "tsc" }. tsconfig.json: target ES2022, module/moduleResolution Node16, outDir ./build, rootDir ./src, strict: true [2].
One tool over stdio — src/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "demo", version: "1.0.0" });
server.registerTool(
"add",
{
title: "Add",
description: "Add two numbers",
inputSchema: { a: z.number(), b: z.number() },
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}),
);
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("MCP server on stdio"); // ⚠ stdout carries JSON-RPC — log only to stderr
The stdout/stderr rule is the #1 live gotcha: any console.log corrupts the JSON-RPC stream and silently breaks the server [3] [2].
Wire up MCP Inspector
npm run build
npx @modelcontextprotocol/inspector node build/index.js
UI opens at http://localhost:6274 (proxy on 6277); the Tools tab lists add, lets you fill a/b and see the response — no LLM needed [4] [6]. This is the demo loop: edit tool → npm run build → reconnect in Inspector.
Official SDK comparison
| SDK | Status | ⭐ Stars | Live-follow friction |
|---|---|---|---|
| TypeScript | Tier-1 official | ⭐ 12.6k | Lowest — npm i, run node, Inspector via npx [1] |
| Python | Tier-1 official | ⭐ 23.2k | Equal maturity; +venv/uv setup step [1] |
| C# | Official (Microsoft+Anthropic), v1.2 | ⭐ 4.3k | More scaffolding: .NET SDK + host builder [5] |
Stars are similar size signals; all three are official and feature-complete (tools, resources, prompts, stdio + Streamable HTTP) [1].
For the Java attendees
The official Java SDK ⭐ 3.5k (Jun 2026) is mature and production-ready: 1.0.0 GA, maintained with Spring AI, compliant with the 2025-06-18 spec (tools/resources/prompts/sampling/elicitation, STDIO + Streamable HTTP), with Spring Boot client/server starters [7].