AT

aslan11/temporal-invoice-mcp

Developer tools
21 stars 0 forks Quality 55 Trend 55

The purpose of this repo is to demonstrate how easy it is to create "Human-In-The-Loop" Durable Tools for MCP servers by leveraging Temporal

Overview

- Python3+ - uv (curl -LsSf https://astral.sh/uv/install.sh | sh) - Temporal Local Setup Guide - Claude for Desktop Instead of starting the server and worker manually you can launch them in a tmux session using the boot-demo.sh helper script: - If successful you'll see invoice_processor under 'Search & Tools' 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 + 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: 1.

README

Invoice Demo with Temporal + MCP

Video:

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 

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:

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:

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
View this README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide

Configuration

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