mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-serverCan you add 12 and 30?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server
A FastMCP server, ready to deploy on
foro.sh. It ships with one example tool, add, so everything
below works before you've written a tool of your own.
Layout
server.pyis the entrypoint foro.sh starts. It loads the tools and serves them over streamable HTTP on$PORTwithforo.run(mcp).app.pyholds theFastMCPinstance every tool registers against.tools/has one file per tool. Add a file, decorate its function with@mcp.tool, andload_tools()picks it up: there's no import list to keep in sync.tests/is pytest.test_tools.pytestsadd, and checks that the entrypoint really registers every tool, since a missing tool doesn't stop the server from starting.
Related MCP server: MCP Server Creator
Run it locally
You need uv.
uvx foro devforo dev starts the server the way foro.sh will, confirms it would pass the
platform's health check, and lists its tools. The server is then at
http://localhost:8000/mcp, so any MCP client can connect to it:
claude mcp add --transport http mcp-server http://localhost:8000/mcpIf a tool needs an API key or another secret, copy .env.example to .env
and fill it in. foro dev loads it, and the code reads it with
foro.secret("NAME"). .env is never committed or deployed.
Test
uv run pytestDependencies
Add packages with uv add <package>, which updates pyproject.toml and
uv.lock together, and commit both. foro.sh installs exactly what uv.lock
pins, so a package listed only in pyproject.toml is never installed and the
server fails on import. uvx foro check catches a stale lockfile before you
push.
Deploy to foro.sh
Push this repo to GitHub.
In the foro.sh dashboard, create a project from it and add any secrets your tools read under Secrets.
Deploy. The server comes up at
https://<slug>.foro.sh/mcp, with a slug foro.sh generates.
To ship a change later, push and press Redeploy. Run uvx foro check
first: it catches most failed deploys in seconds instead of a minute.
Agent skills
.claude/skills/ holds three skills for coding agents working in this repo.
Claude Code picks them up automatically.
design-mcp-tools: shaping tool names, descriptions and parameters so a model picks the right tool and they're cheap to include in every request.
wrap-an-http-api: building tools on an existing API from its real spec, not from half-remembered endpoints.
deploy-to-foro: shipping to foro.sh, and reading the logs when a deploy fails.
They're copied from
foro-sh/foro.
Once they're in your repo they're yours, so edit or delete them as the project
grows. AGENTS.md has the short version of how to work here.
This server cannot be deployed
Maintenance
Related MCP Connectors
Host your MCP tool over streamable HTTP in one command.
FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server framework featuring dynamic tool loading and automatic tool discovery from a dedicated directory. It leverages FastMCP to provide a robust environment for building, configuring, and testing individual Python-based tools.1-
- AlicenseNot gradedqualityFmaintenanceEnables dynamic creation and code generation of MCP servers using FastMCP, with tools for adding custom tools, resources, and generating runnable Python code.41MIT
- FlicenseNot gradedqualityDmaintenanceEnables building and running MCP servers over streamable HTTP, exposing tools to AI assistants like Cursor, with examples of mounting multiple servers in FastAPI.-
- FlicenseNot gradedqualityDmaintenanceFramework for building and running MCP servers as HTTP services. Define tools as pure Python functions, wire up with two lines, run with one command.-