MCP ServerOverview

MCP Server

The BioNodulo MCP server is an MCP server (built with FastMCP) that exposes the BioNodulo platform — the cloud app at bionodulo.com and, optionally, a locally running BioNodulo desktop app — to AI agents and chat clients such as Claude, Codex/ChatGPT, and Cursor.

With it connected, your AI client can act on your BioNodulo account directly: list and submit cloud runs, inspect failures, check your credit balance, manage workflows and files, and drive the local desktop execution engine — all through natural language.

What it can do

AreaExamples
AccountAccount info, cloud service health
Billing & creditsCredit balance, usage ledger, usage analytics, run cost estimates, invoices
Runs (cloud)List, submit, poll status, fetch events/outputs, cancel
WorkflowsList, get, create, update, delete saved workflows
FilesList files, presigned upload URLs, delete files
Hosted AIAI paper-analysis status, chat with the hosted BioNodulo AI
Collab & teamWorkflow share links, team member invites
Desktop app (local)Node catalog, templates, validation, local run queue, logs, system stats

In total the server exposes 38 tools, plus 3 resources (bionodulo://account, bionodulo://credits, bionodulo://runs) and 3 guided prompts. See the Tool Reference for the full list.

Architecture at a glance

  • FastMCP server — a single Python package (bionodulo-mcp) that wraps the BioNodulo cloud REST API and the desktop app’s local backend.
  • Two transportsstdio (the default) for local clients that spawn the server as a subprocess (Claude Desktop, Claude Code, Codex), and streamable HTTP at /mcp for remote web clients (ChatGPT web, Claude.ai web).
  • Clerk session JWT auth — the cloud API accepts a Clerk session JWT as a bearer token. Because these tokens are short-lived, the server can mint and refresh 10-minute session tokens server-side from a Clerk secret key, so clients never have to handle credentials.
  • Optional desktop integration — when a BioNodulo desktop app is running locally, the desktop_* tools talk to its unauthenticated local backend (default http://127.0.0.1:8765).

Next