Temporal Invoice MCP
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
Installation
npx temporal-invoice-mcpAsk AI about Temporal Invoice MCP
Powered by Claude · Grounded in docs
I know everything about Temporal Invoice MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Invoice Demo with Temporal + MCP
Video:
Prerequisites:
- Python3+
uv(curl -LsSf https://astral.sh/uv/install.sh | sh)- Temporal Local Setup Guide
- Claude for Desktop
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_processorunder '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:
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:
- 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)
- 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
- Temporal makes modeling a long-running, durable, interactive transaction simple to integrate with MCP


