
Temporal Invoice
STDIOMCP server demo integrating Temporal workflows with invoice processing capabilities
MCP server demo integrating Temporal workflows with invoice processing capabilities
uv
(curl -LsSf https://astral.sh/uv/install.sh | sh) git clone https://github.com/your-org/temporal-mcp-invoice-demo.git
cd temporal-mcp-invoice-demo
uv venv
source .venv/bin/activate
uv pip install temporalio fastmcp
temporal server start-dev
python worker.py [--fail-validate] [--fail-payment]
Instead of starting the server and worker manually you can launch them in a
tmux
session using the boot-demo.sh
helper script:
./boot-demo.sh
{ "mcpServers": { "invoice_processor": { "command": "/Path/To/Your/Install/Of/uv", "args": [ "--directory", "/Path/To/temporal-invoice-mcp", "run", "server.py" ] } } }
invoice_processor
under 'Search & Tools'trigger <paste: samples/invoice_acme.json>
Use your MCP client (e.g., Claude Desktop) to call the trigger
, approve
,
reject
, and status
tools. The trigger
tool now returns both the
workflow_id
and run_id
of the started workflow. Pass these values to the
approve
, reject
, and status
tools. The sample invoice lives at
samples/invoice_acme.json
. Inspect Temporal Web at http://localhost:8233
.
Kill and restart the worker at any time to observe deterministic replay.
Claude submits the invoice workflow:
It can get status:
Claude + MCP can send inputs and updates to the process workflow such as approvals, or even do a combination of actions - all agentically, explaining in human analogies what's going on if you ask it to: