Quickstart
finch gives a server on your machine a stable https address. Your machine dials out to finch, so nothing on it listens and no ports open. This page starts from nothing: write a hello-world MCP server, then put it online and connect it to a client.
1. Write an MCP server
Any MCP server works. The fastest way to get one is FastMCP:
pip install fastmcpSave this as server.py:
from fastmcp import FastMCP
mcp = FastMCP("hello")
@mcp.tool
def greet(name: str) -> str:
"""Say hello."""
return f"Hello, {name}!"
if __name__ == "__main__":
mcp.run(transport="http", port=8000)Run it. It serves MCP over HTTP on your machine:
python server.py
Uvicorn running on http://127.0.0.1:8000Already have a server? Skip to step 2. finch works with any local HTTP app; for a web app or a REST API, see web apps and REST.
2. Install finch
curl -fsSL https://finchmcp.com/install | shIt runs on macOS and Linux and never asks for a password. Any machine that stays on and runs a shell can run finch: a laptop, a Mac mini, a Raspberry Pi, a VPS. Run finch on its own at any time to see every command.
3. Log in
finch login
To finish login, open this page on any device (your phone or laptop
is fine — you do NOT need a browser on this machine):
https://finchmcp.com/cli?code=ZDTJ-9W63
and confirm this code: ZDTJ-9W63
Waiting for approval ✓
finch: logged in as you@example.com at https://finchmcp.com (saved to /Users/you/.finch/cli.json)finch opens the sign-in page in your browser and waits. Sign in (or create a free account), check that the code matches, and approve it. You can also open the link on any other device: the machine you run this on doesn't need a browser or a screen. Over SSH, use finch login --headless, which skips the local browser and just prints the link.
This is the only step that needs you. Everything after it runs without prompts and takes --json, so an agent can do the rest (see agents.md).
4. Add the service
finch add hello --service http://127.0.0.1:8000
finch: added "hello" → http://127.0.0.1:8000
public URL: https://sunny-wren-42.finchmcp.com/hello/mcphello is the service name, and it becomes part of the URL. The first part, sunny-wren-42, is your account address (also called the slug): finch picks it for your account, and every service you publish lives under it. Callers need a key or a sign-in by default; see Access control.
finch add records the service in ~/.finch/finch.yml (or in ./finch.yml if the current directory has one). The file holds no secrets. To point the service at a different port later, run the same command again with the new URL.
5. Keep it running
finch service install
finch: installed /Users/you/Library/LaunchAgents/com.finchmcp.finch.plist (launchd) — serves /Users/you/.finch/finch.yml
installed, running
log: /Users/you/.finch/finch.logThis runs finch in the background, starts it when you log in and restarts it if it stops: a launchd agent on macOS, a systemd user service on Linux. It serves every service in finch.yml. Run it again after you add or change a service. To serve in the foreground instead, for a quick try, run finch run and leave the terminal open.
6. Test it
finch test hello
hello — 1 tool(s):
• greet Say hello.
finch call hello greet --args '{"name": "world"}'
Hello, world!Both go out through finch and back to your machine, so a pass means the public address works end to end. If it fails, the message says which part didn't answer: finch, your machine, or your server.
7. Connect a client
finch connect hello --client claude-code # or cursor, codexfinch connect makes a key for that one client and writes it into the client's settings, so you never copy a key by hand. Reload the client's MCP servers and greet is there.
For claude.ai or ChatGPT, add the public URL as a custom connector instead: they sign you in to finch in the browser, with no key. For any other client, make a key and paste it in as a bearer token:
finch keys mint my-client --service hello
# the finch_ key is shown once; put it in your client nowSee what's happening
finch status # this machine: login, services, background service
finch fleet # every service on your account, its state and URL
finch logs hello # recent calls: time, route, caller, status, durationTo take a service down, finch rm hello. To remove finch from this machine entirely, finch uninstall; the CLI reference lists what each one cleans up.
finch guide for the same steps from the installed binary. The agent does all of the above and shows you the sign-in link.Where to next
Services & machines
finch.yml, web apps, running in the background, and adding more machines.
Keys & auth
Mint, list and revoke keys, and how finch checks them before your machine.
Access control
Keys, OAuth and public services: who can reach what.
CLI reference
Every command, with JSON output for scripts and agents.
Privacy & data handling
What finch sees in transit, and the little it keeps.
AviaryMCP
A Python SDK that serves one set of tools as MCP, REST and OpenAPI.