Products

Ships to

MCP servers

Build an MCP server by writing only the tools.

An MCP server lets any AI assistant use your product. The tools are the easy part; transport, OAuth, hosting and testing are the rest. Flow does the rest.

Works with ChatGPT, Claude, Cursor, VS Code and other MCP clients.

tools/get-menu.ts
import { tool } from "@flow-engineer/flow";
import { z } from "zod";

export default tool({
  name: "get_menu",
  description: "Today’s menu for a restaurant.",
  input: z.object({ restaurantId: z.string() }),
  run: async ({ restaurantId }) => api.menu(restaurantId),
});

// served as a remote MCP server, with sign-in

What you can build

One server,
every assistant.

Any client

The same tools in ChatGPT, Claude and your IDE

MCP is the shared protocol: ChatGPT apps and Claude connectors are both MCP servers, and coding tools like Cursor and VS Code speak it too.

ChatGPT

A ChatGPT app

Added in developer mode.

Claude

A Claude connector

Added in Settings → Connectors.

Coding agents

Cursor and Claude Code

Tools in the editor, or a CLI.

Brand examples are illustrations of what could be built, not those companies' products.

The usual way vs. Flow

Most of an MCP server
isn’t the tools.

Building it yourself~3–4 weeks

  1. Tool schemas and handlers 1–2 days
  2. Streamable HTTP, sessions, CORS 1–2 days
  3. OAuth 2.1, discovery, CIMD/DCR 1–2 weeks
  4. Hosting, secrets, rate limits 2–3 days
  5. Inspector tests, client quirks 2–3 days

Auth is where remote MCP servers most often go wrong: missing discovery documents, or tokens needed just to list tools.

With Flow Frameworkan afternoon

  1. Create the project1 min
  2. Write your tools1–2 hrs
  3. Serve with sign-inbuilt in
tools/get-menu.ts
import { tool } from "@flow-engineer/flow";
import { z } from "zod";

export default tool({
  name: "get_menu",
  description: "Today’s menu for a restaurant.",
  input: z.object({ restaurantId: z.string() }),
  run: async ({ restaurantId }) => api.menu(restaurantId),
});

How Flow works

Write it once. Ship it to MCP and everywhere else.

  • Tools become your appThe same typed tools are served as an MCP server and a CLI. No transport, schema or protocol code.
  • Each user signs inFlow handles each user’s sign-in, so the assistant only reaches what that person can.
  • Tested and tracedSimulated users check which prompts should and should not call your tools, and every call is traced.

Get started

How to build a remote MCP server with Flow.

  1. Create a Flow project

    Run npx @flow-engineer/flow new my-agent, or ask Claude Code or Codex to set it up. You get one folder: the agent’s instructions, its tools, its skills and its tests.

  2. Write what it can do as tools

    Each job is a TypeScript function with a typed input that calls your API: check an order, book a slot, find a deal. No protocol code.

  3. Test it on simulated users

    Run npx @flow-engineer/flow test. Simulated users try the scenarios that matter, including people who change their mind or ask for something your agent should refuse.

  4. Serve it

    Flow serves your tools as a remote MCP server on HTTPS with each user’s sign-in handled, ready for any MCP client.

  5. Connect a client

    Add the address in ChatGPT’s developer mode, Claude’s connectors, or your IDE’s MCP settings.

terminal
$ npx @flow-engineer/flow new my-agent
$ cd my-agent
$ npx @flow-engineer/flow test
✓ 24 scenarios passing

Guide

MCP servers, explained.

What is an MCP server?

The Model Context Protocol (MCP) is an open standard for connecting AI assistants to tools and data. An MCP server lists tools with typed inputs; the assistant (the client) decides when to call them and reads the results. ChatGPT, Claude, Cursor and VS Code are MCP clients.

Local (stdio) or remote (HTTP)?

A local server runs on the user’s machine and talks over stdio, good for developer tools. A remote server runs on HTTPS with the Streamable HTTP transport and works from any device and in ChatGPT and Claude. A product with user accounts wants a remote server.

How does MCP authentication work?

Remote servers use OAuth 2.1, as MCP’s authorization spec describes: the server advertises its authorization server, the client registers (the 2025-11-25 spec prefers Client ID Metadata Documents, with dynamic client registration as a fallback) and the user signs in with PKCE. Flow handles this so each user signs in to their own account.

How many tools should an MCP server have?

Fewer than you think. Every tool definition goes into the assistant’s context on every turn, so expose the jobs users ask for, not every endpoint. Clear names and descriptions matter more than coverage.

What are MCP Apps?

An MCP extension, stable since January 2026, that lets a tool return interactive UI rendered by the client in a sandbox. It works across ChatGPT, Claude and other clients.

How do I test an MCP server?

The MCP Inspector checks that tools list and run. Flow adds scenario tests with simulated users, which check that the right prompts call the right tools and the wrong ones don’t.

FAQ

MCP questions,
answered.

What is an MCP server?

A server that exposes tools and data to AI assistants over the Model Context Protocol, so ChatGPT, Claude and other clients can use your product.

How do I build an MCP server in TypeScript?

Define tools with typed inputs, serve them over Streamable HTTP, add OAuth for user data, and host it. With Flow you write only the tools; Flow serves the rest.

How do I add OAuth to an MCP server?

Follow MCP’s authorization spec (OAuth 2.1 with PKCE, discovery metadata and client registration). Flow handles it for you.

Is SSE deprecated in MCP?

The standalone HTTP+SSE transport was replaced by Streamable HTTP, which can still stream responses.

Where should I host an MCP server?

Anywhere with public HTTPS. Flow Cloud hosts Flow projects with tests and traces.

MCP or CLI for coding agents?

Both have a place: MCP for signed-in access across assistants, a CLI for coding agents that work in a terminal. Flow ships both from the same tools.

Do ChatGPT and Claude use the same MCP server?

Yes. One remote MCP server can serve ChatGPT, Claude and other clients.

Ship your MCP server today.

One open-source TypeScript project. The same agent on WhatsApp, iMessage, Telegram, ChatGPT and more.