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-serveradd 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 TypeScript MCP server on the official
MCP SDK, 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.
There's no build step: Node runs the .ts files directly by stripping their
types, locally and on foro.sh.
Layout
server.tsis the entrypoint foro.sh starts (maininpackage.json). It serves streamable HTTP at/mcpon$PORT, with a fresh server and transport for each request.app.tsbuilds that server and registers every tool on it.tools/has one file per tool. Each exports the tool's logic and a function that registers it; add that function tocreateMcpServer()inapp.ts.tests/is Vitest.tools.test.tstestsadd, then startsserver.tsin its own process and calls the tool over HTTP, since a tool that never got registered doesn't stop the server from starting.
Related MCP server: node-mcp-poc
Run it locally
You need Node 22.18 or newer.
npm install
npm startThe 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. npm start loads it, and the code reads it from process.env.
.env is never committed or deployed.
Test
npm testDependencies
Add packages with npm install <package>, which updates package.json and
package-lock.json together, and commit both. foro.sh installs with npm ci,
which uses the lockfile exactly as committed and fails the build when it
disagrees with package.json.
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. If you have
uv, uvx foro check runs foro.sh's deploy checks
locally first.
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.
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceExposes all CLI commands as MCP tools over stdio or HTTP transport.16 npmApache 2.0
- FlicenseNot gradedqualityDmaintenanceA minimal MCP server that exposes tools for addition, echoing text, time lookup, and URL fetching, with support for HTTP and stdio transports.-
- AlicenseAqualityCmaintenanceExposes a verified tool registry (calculator, sandboxed file read, web fetch) over MCP stdio, enabling any MCP-capable client to reuse the same tools from the inspectable ReAct loop.3MIT
- FlicenseNot gradedqualityCmaintenanceThis server exposes local stdio MCP tools as HTTP/SSE endpoints, enabling remote clients like Claude Desktop to call them. It supports single-tool and aggregated modes with authentication, auto-restart, and hot reload.-