temporal-mcp-server

enzomotta/temporal-mcp-server
0 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Enables AI assistants to observe and manage Temporal workflows, including listing, starting, signaling, resetting, terminating, querying, and retrieving history, with support for wait_for_activity and webhook utilities.

README.md

Temporal MCP Server

A Model Context Protocol (MCP) server that lets AI assistants observe and manage Temporal workflows. Built in Kotlin/JVM with a Node.js bridge for fast MCP initialization.

Prerequisites

  • JDK 17+
  • Node.js (for the MCP bridge)
  • Access to a Temporal server (local or Temporal Cloud)

Build

./gradlew shadowJar

The JAR is created at build/libs/temporal-mcp-server-1.0-SNAPSHOT.jar.

Configuration

The server is launched via minimal-mcp.js, which handles MCP protocol initialization and spawns the Java process.

MCP Client Configuration

{
  "mcpServers": {
    "temporal": {
      "command": "node",
      "args": [
        "path/to/minimal-mcp.js",
        "--namespace", "my-namespace",
        "--address", "my-host:7233"
      ],
      "env": {
        "TEMPORAL_API_KEY": "your-api-key"
      }
    }
  }
}

Command-Line Arguments

| Argument | Required | Description | |---|---|---| | --namespace | Yes | Temporal namespace | | --address | Yes | Temporal server address (e.g., my-ns.abc.tmprl.cloud:7233) |

Environment Variables

| Variable | Description | |---|---| | TEMPORAL_API_KEY | API key for Temporal Cloud authentication | | TEMPORAL_CLIENT_CERT_PATH | Path to mTLS client certificate file | | TEMPORAL_CLIENT_KEY_PATH | Path to mTLS client key file | | TEMPORAL_CLIENT_CERT | mTLS client certificate content (alternative to path) | | TEMPORAL_CLIENT_KEY | mTLS client key content (alternative to path) |

Authentication

API Key (Temporal Cloud)

Set TEMPORAL_API_KEY in the env section of your MCP config. The key is sent as a Bearer token in gRPC metadata.

mTLS Certificates

For mTLS authentication, provide either file paths or content directly:

{
  "mcpServers": {
    "temporal": {
      "command": "node",
      "args": ["path/to/minimal-mcp.js", "--namespace", "my-ns", "--address", "my-host:7233"],
      "env": {
        "TEMPORAL_CLIENT_CERT_PATH": "/path/to/client.pem",
        "TEMPORAL_CLIENT_KEY_PATH": "/path/to/client.key"
      }
    }
  }
}

Tools

Workflow Observation

| Tool | Description | |---|---| | list_workflows | Lists workflows in the namespace. Supports query filter and pageSize (1-1000, default 10). | | get_workflow_status | Gets status of a specific workflow by workflowId (optional runId). Returns parentWorkflowId, parentRunId, taskQueue, closeTime, memo, and searchAttributes. | | get_workflow_history | Retrieves the complete event history of a workflow with full event attributes. | | query_workflow | Executes a query on a running workflow (workflowId, queryType, optional args). |

Workflow Actions

| Tool | Description | |---|---| | start_workflow | Starts a new workflow (workflowId, workflowType, taskQueue, optional args). | | send_signal | Sends a signal to a running workflow (workflowId, signalName, optional signalArgs). | | reset_workflow | Resets a workflow to a specific point in its history, creating a new run. Supports eventId or resetType: "last_workflow_task" to auto-detect the last WorkflowTaskCompleted event. | | terminate_workflow | Terminates a running workflow (workflowId, optional reason). |

Utilities

| Tool | Description | |---|---| | wait_for_activity | Polls until a workflow reaches a specific activity (workflowId, activityName, optional timeoutSeconds 1-3600). | | send_webhook | Sends an HTTP POST webhook (webhookUrl, payload, optional headers). Useful for completing async activities. |

Development

Running Tests

./gradlew test

Architecture

minimal-mcp.js acts as a bridge: it responds immediately to the MCP initialize handshake, then spawns the Java process in the background. Once Java is ready, all subsequent requests are forwarded to it.

Related MCP servers

Browse all →