FERS MCP server, local
Structural finite-element analysis for AI agents, solving on your own machine. The same tools as the hosted FERS MCP server: build beams, frames, trusses and plates, add loads and EN 1990 combinations, run modal, buckling and seismic analyses and Eurocode unity checks. The difference is where the solve runs: here, with the FERS engine (Rust compiled to WebAssembly) inside this process, not on a server.
- Results come back in seconds and stay on your machine.
- No per-solve charges, no request timeouts, no upload size limit.
- Free for non-commercial use, models up to 100 members. Commercial use needs a FERS Pro API key, which also raises the limit to 10,000 members.
Install
Node.js 18 or newer. The package runs with npx, nothing else to install.
Claude Desktop. Download fers-mcp.mcpb from the
latest release and double-click it, or add this to
claude_desktop_config.json (Settings, Developer, Edit Config):
{
"mcpServers": {
"fers": {
"command": "npx",
"args": ["-y", "@ferscloud/fers-mcp"],
"env": { "FERS_API_KEY": "<your key, optional>" }
}
}
}
Claude Code
claude mcp add --transport stdio fers --env FERS_API_KEY=<your key> -- npx -y @ferscloud/fers-mcp
Cursor (.cursor/mcp.json) and most other clients use the same shape as Claude Desktop, with
"type": "stdio". VS Code (.vscode/mcp.json) uses a top-level servers key instead of mcpServers.
Codex CLI (~/.codex/config.toml):
[mcp_servers.fers]
command = "npx"
args = ["-y", "@ferscloud/fers-mcp"]
env = { FERS_API_KEY = "<your key>" }
ChatGPT desktop: Settings, MCP servers, Add server, STDIO, command npx -y @ferscloud/fers-mcp.
Clients that cannot start a program on your computer (Claude and ChatGPT in the browser or on a phone) can use
the hosted server at https://ferscloud.com/api/mcp instead. It authors and validates models there and hands
back a link that solves the model in your browser.
Options
| Setting | Default | What it does |
|---|---|---|
FERS_API_KEY | not set | A FersCloud API key (create one, Profile, API Keys). A Pro account raises the limit to 10,000 members. |
--out-dir <folder> or FERS_MCP_OUT_DIR | not set | solve_model with detail: "full" writes the complete result to a file here and returns its path, instead of putting it in the conversation. |
FERS_HOME | ~/.fers | Where stash_model drafts and save_model models are kept. |
FERS_MCP_TIMEOUT_S | 300 | Ceiling on one solve, in seconds. |
FERS_CLOUD_URL | https://ferscloud.com | Licence server. |
get_usage reports the tier in force, why, and the engine version.
What leaves your machine
Your models never do. With FERS_API_KEY set, the server sends that key to FersCloud to obtain a 30-minute solve
token; the engine verifies the token offline. Without a key nothing is sent at all and every solve runs on the
Free tier.
Licence
PolyForm Strict License 1.0.0, see LICENSE: free for any non-commercial purpose. Commercial use needs a paid
FERS Cloud plan (https://ferscloud.com/pricing), which includes the commercial licence. The licence does not allow
modifying or redistributing the package. Documentation: https://ferscloud.com/mcp
Releasing (maintainers)
The package is built from the FERS Cloud sources (src/lib/mcp-core, src/mcp-local) by
npm run build:mcp-local, and released by the GitHub workflow publish-mcp.yml, which tests, packs,
installs and smoke-tests both the npm package and the Claude Desktop bundle before it publishes anything.
- The version follows the engine the package bundles:
<engine minor>.<engine patch>.<n>, so engine 0.2.75 gives 2.75.0 and another release on that engine 2.75.1. After an engine bump runnode scripts/set-mcp-version.mjs; for a server-only change,node scripts/set-mcp-version.mjs --next. It writesmcp-local/package.json,mcp-local/manifest.json,server.json,public/.well-known/mcp/server-card.jsonandSERVER_VERSIONinsrc/lib/mcp-core/server.ts;mcpManifests.test.tsfails until they agree and follow the engine pin. - Releases publish themselves. After every successful prod deploy the workflow releases the version when
npm does not have it yet: npm, the
mcp-v<version>release with the.mcpbon FERS_core, and the official registry. A manual run builds and verifies; withpublish = trueit also finishes a release whose later step failed, since each publish step skips what already exists. - The first release (2.1.0) was published by hand, because npm attaches a trusted publisher only to an
existing package. The trusted publisher is
Jeroen124/FERS_cloud, workflowpublish-mcp.yml.