https://weather-mcp.fastmcp.app/mcp, ready for any
MCP client to call. Horizon builds the server from your GitHub repository,
publishes it behind the gateway, and keeps the endpoint live across future
pushes.
The path is short: point Horizon at a repository and an entrypoint, and each push
to your default branch becomes a new build and deployment. You write the MCP
server; Horizon owns everything from source to a protected URL.
A server to deploy
A Horizon hosted server is a Python FastMCP server in a Git repository. Horizon reads one file, the entrypoint, to start the server and to discover the tools, resources, and prompts it exposes. Anything your entrypoint imports at startup is available to the running server. This is a complete server you can deploy. It exposes a singleget_weather tool:
main.py
main.py at the root of a repository. main.py is the entrypoint
Horizon looks for by default, so a repository shaped this way needs no extra
configuration. To use a different file, or to point at a named server object,
configure the entrypoint as server.py or server.py:mcp when you create the
server. For how Horizon resolves the entrypoint, Python version, and
dependencies, see Build system.
The server above has no third-party dependencies beyond FastMCP, which Horizon
installs for you. When your server imports other packages, commit a
requirements.txt or pyproject.toml and Horizon installs them during the
build. For configuring secrets and settings your code needs at runtime, see
Environment variables.
Deploy on Horizon
Sign in and create an organization
Sign in at horizon.prefect.io. On first sign-in
you create an organization, which owns your servers, members, and access
settings. Every server you deploy belongs to one organization.
Connect GitHub and choose a repository
Horizon builds from source in GitHub, so the first step is linking a GitHub
installation. Authorize the Horizon GitHub App and grant it access to the
repositories you want to deploy. The repository picker then lists those
repositories with their default branch. Select the one holding your server.
For how the GitHub connection works and what each event triggers, see
GitHub.
Configure the server
Name the server, then confirm the entrypoint. The name determines the
deployment URL, previewed as
{name}.fastmcp.app while you type. Leave the
entrypoint as main.py for the server above, or point it at your file.
Optionally set a dependency file and environment variables. New servers have
Horizon authentication enabled by default, so the endpoint starts behind
an access check.Watch the first build
When you create the server, Horizon resolves your default branch to an exact
commit, installs dependencies, packages the server, and inspects it with
FastMCP to discover its tools, resources, and prompts. Build logs show each
step. A build is tied to the commit it resolved, so moving the branch
afterward does not change that build.
Confirm it is live
Open the server’s Deployments page. The stable production URL sits at the top, ending in/mcp, and the status reads Live once the first
deployment is serving. This URL stays constant as you push new versions; Horizon
changes the artifact behind it through promotion and rollback without asking
clients to reconfigure.
Because Horizon authentication is enabled, callers authenticate before a request
reaches your code. The gateway verifies the caller, checks access, and only then
forwards the request to your Python handler. To make a server public or to let
your own code own authentication, disable Horizon authentication, described in
Authentication.
With the server live, you are ready to point an MCP client at it.
Connect a client walks through configuring Claude, Cursor,
ChatGPT, and the CLI clients against your new endpoint.