Build an MCP Server in TypeScript with the Official SDK

The FastMCP tutorials in this series are Python, and FastMCP wraps the Model Context Protocol so you rarely touch it directly. This article drops down a level and builds the same kind of server with the official TypeScript SDK (@modelcontextprotocol/sdk) — the reference implementation Anthropic maintains. You register tools and resources on an McpServer, connect it to the stdio transport, and a local client launches it as a subprocess. The stack is Node, tsc, and vitest. ...

12 min

Deploy an MCP Server to Cloudflare Workers

The FastMCP tutorials in this series deploy to a Mac with launchd: one machine, your machine, awake and on the network. This one takes the opposite approach and deploys an MCP server to Cloudflare Workers — TypeScript with the Agents SDK’s McpAgent, pushed to a public HTTPS URL that runs in data centers worldwide. There is no server of your own to keep running, and per-session state lives in a Durable Object (SQLite) instead of a file on disk. ...

12 min

Add Observability to a FastMCP Server on macOS

A server in production has to answer three questions: is it up, what is it doing, and when something breaks, why. This tutorial adds the three observability pillars to a FastMCP server — structured logs, a health check, and metrics — using only the standard library plus two FastMCP primitives (middleware and custom routes). The stack is Mac-native: uv, make, and pytest. The design keeps instrumentation out of the tools: Logging is a JSON formatter on the root logger, written to stderr. Metrics are a small in-process registry fed by one piece of middleware, so every tool is measured without touching its code. Health and metrics are exposed twice: as MCP resources (readable over any transport, including stdio) and as HTTP routes (/health, /metrics) for load balancers and Prometheus. The stdio trap. The stdio transport uses stdout for the MCP protocol itself. Anything else written to stdout — a stray print, a log line — corrupts the stream and breaks the client. All logging here goes to stderr, which is safe on both transports. This is the single most common way a working server mysteriously fails once a client connects to it over stdio. ...

16 min

Register a FastMCP Server with Claude Desktop and Claude Code on macOS

You have a working MCP server (see Build an MCP Server with FastMCP and Create and Deploy a FastMCP Server on macOS). A server on its own does nothing until a client connects to it. This tutorial wires one server into the two Claude clients you are most likely to use on a Mac: Claude Code (the CLI) and Claude Desktop (the chat app). They use different configuration systems, so each gets its own walkthrough, and the tricky remote case gets a mcp-remote bridge. ...

15 min

Secure a FastMCP Server with Clerk on macOS

In Add GitHub OAuth to a FastMCP Server you delegated login to GitHub. That is a good fit when your users already have GitHub accounts, but it ties your server to one social provider. This tutorial uses Clerk instead: a full authentication platform where you own the user directory. Clerk gives you email/password, magic links, social logins, and MFA behind a single OAuth authorization server, and FastMCP’s ClerkProvider plugs that server into your MCP server with a few lines of configuration. ...

16 min

Distribute a Claude Code Plugin That Installs an External MCP Server

Sometimes the MCP server you want your team to use already exists — published to a registry, a GitHub repo, or a container image by someone else. You do not need to fork it or vendor its source into your plugin. A Claude Code plugin can be pure configuration: a .mcp.json that tells Claude Code how to launch that external server over stdio, wrapped in a manifest and a marketplace so a teammate installs it with one command. ...

16 min

Bundle an MCP Server in a Claude Code Plugin

A Claude Code plugin can ship an MCP server the same way it ships a command or a hook: drop a .mcp.json at the plugin root, and Claude Code starts the server for anyone who installs the plugin. The user runs no pip install, edits no config, and copies no path. They install the plugin, and the server’s tools appear. The trick that makes this painless is launching the server with uv run --script against a file that declares its own dependencies inline (PEP 723). The consumer needs only uv on their PATH; uv builds an ephemeral environment with the right packages on first run. No committed virtualenv, nothing to install ahead of time. ...

17 min

Turn a Script into a YouTube Video with Higgsfield MCP and Claude Code

Higgsfield ships a bundled video-explainer workflow through its MCP server: hand it a script and it produces a narrated, animated video by generating one 10-second clip per line, voicing each line, and stitching the result into a single MP4. This guide runs that workflow from Claude Code, using a short made-up script so you can see exactly how a few lines of text become finished clips. Claude Code is a good fit here because the whole flow is text-driven. Every visual is generated from a written style description and per-block prompts, so there are no local files to upload — the terminal client never needs to render an upload widget. You paste a script, answer a few setup questions, and Claude Code orchestrates the Higgsfield tools for you. ...

9 min

Create YouTube Shorts with the Higgsfield MCP

Higgsfield exposes its image and video generation as an MCP server, so you can produce short-form video by chatting with an MCP client instead of clicking around a web app or wiring up an API. This guide uses its Shorts Studio flow: you hand it one source video, pick a visual style, and it returns a set of vertical, AI-restyled clips sized for YouTube Shorts. There is no code to write. The whole workflow is a conversation with an assistant that has the Higgsfield connector enabled; behind each message, the assistant calls a Higgsfield MCP tool. This article shows what to say, which tool runs, and what comes back, grounded in the live server. ...

8 min

Build an Agent That Calls Your MCP Server on macOS

The earlier MCP articles built servers that expose tools and a client that calls those tools by hand: you name the tool, you supply the arguments. An agent is the piece that makes those decisions for you. Given a question and a set of MCP tools, it asks a model which tool to call, runs it, feeds the result back, and repeats until the model has an answer. This article builds that agent with the Anthropic Python SDK and FastMCP, on macOS with uv, make, and pytest. The loop is the standard Anthropic tool-use loop; the only twist is that the tools come from an MCP server instead of being defined inline. ...

16 min