Skip to main content

Invoice Demo with Temporal + MCP

Video:

Watch the demo

Prerequisites:

1. Clone & install

 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

2. Launch Temporal locally

 temporal server start-dev

3. Start the worker

 python worker.py [--fail-validate] [--fail-payment]

Quick demo boot

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

Claude for Desktop Instructions (Sonnet 4)

1. Follow steps 1-3 above

2. Edit your Claude Config (Claude > Settings > Developer > Edit Config)

{
  "mcpServers": {
    "invoice_processor": {
      "command": "/Path/To/Your/Install/Of/uv",
      "args": [
        "--directory",
        "/Path/To/temporal-invoice-mcp",
        "run",
        "server.py"
      ]
    }
  }
}

3. Restart Claude for Desktop after editing your config

  • If successful you'll see invoice_processor under 'Search & Tools'

4. To kick off processing the mock invoice, run:

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.

5. Results

Claude submits the invoice workflow:

Claude MCP Invoice Submission

It can get status:

Claude MCP 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:

Claude MCP Combo

What's Cool About This:

  1. Agents and applications connected by MCP can provide a powerful way for humans to interact with processes and applications
    • (as long as the applications have an API to interact with)
  2. MCP tools don't have to be just one API call - you can get process status and even send it more information as it proceeds
  3. Temporal makes modeling a long-running, durable, interactive transaction simple to integrate with MCP
Interactive Agentic Applications Powered By Workflows

Metadata

Release files for iflow-mcp_aslan11-temporal-invoice-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 iflow-mcp_aslan11-temporal-invoice-mcp 0.1.0
File Size Uploaded
iflow_mcp_aslan11_temporal_invoice_mcp-0.1.0.tar.gz 895.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_aslan11-temporal-invoice-mcp 0.1.0
File Interpreter ABI Platform
iflow_mcp_aslan11_temporal_invoice_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.8 MB

Release files / iflow_mcp_aslan11_temporal_invoice_mcp-0.1.0.tar.gz

Download URL iflow_mcp_aslan11_temporal_invoice_mcp-0.1.0.tar.gz
Size 895.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6d12493b479bbda4c1e3cdb8ee2c4443618861b15fc454f859d644811f45c6cf
BLAKE2b-256 checksum
How to use checksums
b7617c24ab470e7967f20687b4d246e521aed56a9c4e32738c6d27bf7b6ac3f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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

Download URL iflow_mcp_aslan11_temporal_invoice_mcp-0.1.0-py3-none-any.whl
Size 902.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
82b772ed99b526009b159ebe9257b2fe92927ebd659b6cd736f623d118f06e7e
BLAKE2b-256 checksum
How to use checksums
d92f2985a8ff180600fd7d0aec40d91feac8f7ce8668a8220b552f327489fff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

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