Skip to main content

calcing-mcp

An MCP server that exposes the calcing engineering calculation apps as tools for external AI clients (Claude Desktop, Claude Code, and other MCP-capable hosts).

Each calcing app becomes two MCP tools:

  • calcing_solve_<app> — run the calculation,
  • calcing_validate_<app> — validate inputs without solving.

Plus one discovery tool:

  • calcing_list_apps — list all available apps with short descriptions.

Under the hood every tool call is a single HTTPS request to the calcing Agent API:

POST https://saas.calcing.de/api/elements/<app>/agent/solve
X-Agent-Token: <your token>
Content-Type: application/json

{ "input": { ... app-specific inputs ... } }

Available apps

Tool App
calcing_solve_shaft_strength_din Wellenfestigkeit / Shaft strength (DIN 743)
calcing_solve_bearing Waelzlager / Rolling bearing (ISO 281)
calcing_solve_passungen Passungen / Fits (ISO 286)
calcing_solve_waelzkontakte Waelzkontakte / Rolling contacts (Hertz)
calcing_solve_vawt Vertikalachsen-Windturbine (IEC 61400-2)
calcing_solve_screw Schraubenverbindung / Bolted joint (VDI 2230)
calcing_solve_passfeder Passfeder / Parallel key (DIN 6892)
calcing_solve_hawt Horizontalachsen-Windturbine (HAWT)
calcing_solve_pressverband Pressverband / Interference fit (DIN 7190)
calcing_solve_axial_fan Axialventilator / Axial fan
calcing_solve_bearing_contacts Waelzlager-Kontakte / Bearing contacts
calcing_solve_bearing_shaft_system Welle-Lager-System / Shaft-bearing system

Call calcing_list_apps at any time for the live list plus descriptions.

Installation

Requires Python >= 3.10.

From PyPI

Once published, install from PyPI with your tool of choice:

pip install calcing-mcp        # into the current environment
pipx install calcing-mcp       # isolated global CLI (recommended)
uvx calcing-mcp                # run without installing (uv)

From source with pipx (global CLI)

pipx install /path/to/clients/calcing-mcp

With pip (editable, for development)

cd clients/calcing-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e .

Either way you get a calcing-mcp console command that runs the server over stdio.

Create an agent token

  1. Sign in at accounts.calcing.de.
  2. Go to Billing → Tokens (accounts.calcing.de/billing/tokens).
  3. Create a new agent token:
    • Audience (aud): saas
    • Scopes: select the apps you want to expose (each solve tool needs the matching app scope). Grant only what you need.
  4. Copy the token — it is shown only once.

Export it in the environment where the MCP server runs:

export CALCING_AGENT_TOKEN="cai_agent_...."

Environment variables

Variable Required Default Purpose
CALCING_AGENT_TOKEN yes — Agent token (aud=saas)
CALCING_API_BASE no https://saas.calcing.de/api Override the API base URL
CALCING_TIMEOUT no 120 HTTP timeout in seconds

Claude Desktop configuration

Add the server to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "calcing": {
      "command": "calcing-mcp",
      "args": [],
      "env": {
        "CALCING_AGENT_TOKEN": "cai_agent_....",
        "CALCING_API_BASE": "https://saas.calcing.de/api"
      }
    }
  }
}

If calcing-mcp is not on Claude Desktop's PATH (e.g. it lives in a venv), use an absolute path or run it through the interpreter:

{
  "mcpServers": {
    "calcing": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["-m", "calcing_mcp.server"],
      "env": { "CALCING_AGENT_TOKEN": "cai_agent_...." }
    }
  }
}

Restart Claude Desktop; the calcing_* tools then appear in the tools list.

Claude Code configuration

claude mcp add calcing --env CALCING_AGENT_TOKEN=cai_agent_.... -- calcing-mcp

Usage

Ask your AI client to call a tool, e.g. "Use calcing_list_apps to see what's available, then solve a DIN 743 shaft with calcing_solve_shaft_strength_din."

The input argument holds the app-specific payload as a JSON object (a JSON string is also accepted). Use calcing_validate_<app> first if you want the app to check the payload before running the full calculation.

Errors are surfaced explicitly (no silent fallbacks):

  • 401 — token missing/expired,
  • 403 — token lacks the app scope, or plan/quota does not allow it,
  • 422 — the input payload failed validation,
  • 429 — rate limit / quota exceeded.

Privacy & quota

Every tool call sends your input payload to saas.calcing.de and is authenticated with your agent token. Calls count against your account's plan quota and are attributable to your token. Do not put secrets in input, and revoke the token in the billing panel if it is ever exposed.

Publishing (maintainers)

The package is built with hatchling and published to PyPI. Publishing requires maintainer credentials — either a configured PyPI Trusted Publisher for this repository, or a PyPI API token. Contributors without those cannot publish.

Automated (GitHub Actions)

.github/workflows/publish.yml runs on every push/PR (CI: install + import on Python 3.10–3.13, then python -m build + twine check). On a GitHub Release or a v* tag push it additionally uploads to PyPI via pypa/gh-action-pypi-publish.

By default it uses Trusted Publishing (OIDC, id-token: write, no secret needed once the project is registered as a Trusted Publisher on PyPI). To use a token instead, set a PYPI_API_TOKEN repository secret and switch the publish step to with: password: ${{ secrets.PYPI_API_TOKEN }} (see the comment in the workflow).

Cutting a release:

# bump version in pyproject.toml and calcing_mcp/__init__.py, update CHANGELOG.md
git tag v0.1.0 && git push origin v0.1.0
# or create a GitHub Release for the tag — either triggers the publish job.

This workflow lives under clients/calcing-mcp/ because the MCP package is published independently of the monorepo. It is written as if this folder were the repository root; when calcing-mcp is split into its own repo, this folder becomes the root and the workflow works unchanged.

Manual (local)

cd clients/calcing-mcp
python -m pip install --upgrade build twine
python -m build                 # -> dist/*.whl and dist/*.tar.gz
python -m twine check dist/*
python -m twine upload dist/*    # prompts for PyPI credentials / token

License

MIT — see LICENSE.

Metadata

Release files for calcing-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for calcing-mcp 0.1.0
File Size Uploaded
calcing_mcp-0.1.0.tar.gz 9.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for calcing-mcp 0.1.0
File Interpreter ABI Platform
calcing_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 20.4 kB

Release files / calcing_mcp-0.1.0.tar.gz

Download URL calcing_mcp-0.1.0.tar.gz
Size 9.6 kB
Tags Source
SHA-256 checksum
How to use checksums
dc156c9125c21f88bb2478b3f9191f1f58bc3129f8fd720c5fe05d0acab4ce7e
BLAKE2b-256 checksum
How to use checksums
ae2293a3e076f64594af4b0071ad4c28a93e499c7536c9572026f24eeedf57fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release files / calcing_mcp-0.1.0-py3-none-any.whl

Download URL calcing_mcp-0.1.0-py3-none-any.whl
Size 10.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
56e9815c9b6f09047e122b4d45ee38754be6edea0eaf83d4c74e83f0d4c2215f
BLAKE2b-256 checksum
How to use checksums
363a082c6e96d3243666d6de610d98caf4f0ebed0ae43aa51facacb91f01034a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.11

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page