Getting started
FlashMCP turns any REST API with an OpenAPI spec into a fully-functional MCP server your LLM can use. One URL. Zero setup. No servers to deploy, no code to write, no dependencies to install — it just works.
FlashMCP is fully hosted on a global edge network. You point your MCP client at a URL and we handle everything else: discovering the spec, parsing every endpoint, resolving complex schemas, and building optimized tool definitions. It's magic.
Quick start
You can go from zero to a working MCP server in under a minute. Here's how:
Step 1: Pick an API
Choose any REST API that has an OpenAPI (formerly Swagger) specification. This covers thousands of popular APIs — Stripe, GitHub, Twilio, Notion, PagerDuty, and many more. If the API has a spec, FlashMCP can use it.
Step 2: Add FlashMCP to your MCP client
Open your MCP client configuration and add a new server entry. The URL is simply
https://flashmcp.dev/ followed by the API's hostname.
{
"mcpServers": {
"petstore": {
"url": "https://flashmcp.dev/petstore3.swagger.io"
}
}
}
That's it. No npm install. No Docker. No build step. FlashMCP runs entirely in the cloud —
your MCP client connects to it over HTTP like any other hosted service.
Step 3: Use it
Restart your MCP client (or reconnect). Your LLM now has access to every endpoint in the API as a callable tool. Ask it to list resources, create records, update data, or delete items — all through natural language.
URL format
Every FlashMCP URL follows the same pattern:
https://flashmcp.dev/{targetHost}[/{basePath}][?spec={specPath}]
| Parameter | Required | Description |
|---|---|---|
targetHost |
Yes | The hostname of the API you want to connect to (e.g. api.github.com) |
basePath |
No | An optional base path if the API is served under a subpath (e.g. /api/v3) |
spec |
No | Path to the OpenAPI spec, either a relative path (/openapi.json) or an absolute URL (https://example.com/spec.json) |
Examples
| Use case | FlashMCP URL |
|---|---|
| Simple API (auto-discovery) | https://flashmcp.dev/petstore3.swagger.io |
| API with base path | https://flashmcp.dev/api.example.com/v2 |
| Explicit spec path | https://flashmcp.dev/api.example.com?spec=/openapi.json |
| Cross-domain spec (absolute URL) | https://flashmcp.dev/api.stripe.com?spec=https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json |
Tip: Most popular APIs work without a ?spec= parameter.
FlashMCP automatically discovers specs for thousands of APIs. You only need to
specify the spec path when auto-discovery can't find it.
What gets mapped
FlashMCP reads the OpenAPI specification and turns every operation into an MCP tool your LLM can call. Each tool gets a name, a description, and a fully-typed input schema — all generated automatically.
Tool naming
If an operation has an operationId in the spec, that becomes the tool name
directly. If not, FlashMCP generates a readable name from the HTTP method and path.
| Spec definition | MCP tool name |
|---|---|
GET /pets with operationId: "listPets" |
listPets |
POST /pets with operationId: "createPet" |
createPet |
GET /pets/{petId} (no operationId) |
get_pets_petId |
DELETE /pets/{petId} (no operationId) |
delete_pets_petId |
Supported HTTP methods
All five standard HTTP methods are fully supported:
- GET — Read resources
- POST — Create resources
- PUT — Replace resources
- PATCH — Partially update resources
- DELETE — Remove resources
LLM-optimized parameters
FlashMCP flattens request body schemas into simple, top-level parameters. Your LLM calls tools with clean, flat arguments — no nested objects or wrapper properties required. For example, instead of:
createPet({ body: { name: "Rex", status: "available" } })
Your LLM simply calls:
createPet({ name: "Rex", status: "available" })
Complex $ref pointers, nested schemas, allOf/oneOf/anyOf
compositions, and even circular references are all resolved automatically. You never have to think
about schema complexity — FlashMCP handles it.
Try it now
Copy and paste this configuration into your MCP client to connect to the Swagger Petstore demo API. It's a free, public API — no authentication required.
Ready to go! Paste this config, restart your MCP client, and ask your LLM to "list all pets" or "add a new pet named Buddy."
{
"mcpServers": {
"petstore": {
"url": "https://flashmcp.dev/petstore3.swagger.io"
}
}
}
Once connected, your LLM will have access to every Petstore endpoint as a tool —
including listPets, getPetById, addPet,
updatePet, deletePet, and more. No server running on your
machine, no configuration files to maintain, no updates to install.
Next up: learn how to customize your setup with configuration options, or see how to pass API keys with authentication.