jchristn77/tempo-mcp

By jchristn77

Updated about 2 months ago

Data orchestration and workflow automation for building, running, and monitoring data flows.

Image
Integration & delivery
Message queues
API management
0

758

jchristn77/tempo-mcp repository overview

Tempo logo

Tempo

Note
v0.2.0 - Tempo is in ALPHA - API surface and data structures subject to change

NuGet NuGet Tempo.Sdk License: MIT .NET

Tempo is a workflow automation platform for building, running, and monitoring tenant-scoped data flows. A flow is made of reusable steps, invoked through triggers, persisted with artifacts, and observed through run history, request history, OpenAPI, and MCP.

Tempo ships as:

  • Tempo: the core workflow/orchestration library
  • Tempo.Core: server-facing persistence, runtime, settings, and management contracts
  • Tempo.Server: the REST API host
  • Tempo.McpServer: an MCP facade over Tempo.Server built on Voltaic
  • dashboard/: a React/Vite operator UI
  • sdk/csharp, sdk/js, and sdk/python: artifact runtime SDKs with exhaustive test apps

Highlights

  • Tenant-scoped CRUD for data flows, steps, triggers, runs, artifacts, users, credentials, roles, and permissions
  • Runtime model that supports Builtin.Class, Builtin.Method, External.Rest, Artifact.Process, Artifact.Python, Artifact.JavaScript, Artifact.DotnetProcess, and Host.Executable
  • Source-step creation from the UI or API for Python, JavaScript, and C#
  • Mutable artifact packages with dashboard file browsing and in-place editing
  • Runtime-aware startup seeding that creates working sample steps for each available runtime type
  • OpenAPI-backed API Explorer and MCP server for agent-driven automation
  • First-run setup wizard that creates and invokes example flows end to end
  • K-sortable PrettyId identifiers with fixed prefixes and a maximum length of 32
  • Docker Compose deployment, image build scripts, and NuGet publish script

Quick Start

Docker Compose

From the repository root:

docker compose -f .\docker\compose.yaml up --build

Default endpoints:

  • Dashboard: http://localhost:3000
  • Tempo.Server: http://localhost:8901
  • Tempo.McpServer HTTP RPC: http://127.0.0.1:8910/rpc
  • Tempo.McpServer TCP: 127.0.0.1:8911
  • Tempo.McpServer WebSocket: ws://127.0.0.1:8912/mcp

Default seeded credentials on an empty database:

Compose uses named volumes for server config, database, logs, runtime cache, scratch storage, dashboard logs, and MCP configuration. The service images in the compose file are pinned to v0.2.0.

Local Development

Recommended prerequisites:

ToolRequired for
.NET 10 SDKTempo, Tempo.Core, Tempo.Server, Tempo.McpServer, tests
Node.jsDashboard development and Artifact.JavaScript runtime
Python 3Artifact.Python runtime
dotnet commandArtifact.DotnetProcess runtime and C# source-step packaging

Tempo.Server does not fail startup when optional runtime commands are unavailable. Instead, those runtimes are surfaced as unavailable in the runtime catalog and their startup template steps are skipped. Configure command names or absolute paths in tempo.json under runtimes.externalExecution.

Build and run:

dotnet build .\src\Tempo.sln
dotnet run --project .\src\Tempo.Server\Tempo.Server.csproj
dotnet run --project .\src\Tempo.McpServer\Tempo.McpServer.csproj

cd .\dashboard
npm install
npm run dev

Helper scripts at the repository root:

  • build-server.bat v0.2.0
  • build-mcp.bat v0.2.0
  • build-dashboard.bat v0.2.0
  • publish-nuget.bat <nuget-api-key>

Core Concepts

ConceptPurpose
StepA reusable execution unit bound to a runtime and an execution key
Data flowA directed workflow that chains steps through success, failure, and exception edges
TriggerA reusable entry point that invokes a data flow
ArtifactA mutable package of files used by artifact-backed runtimes
RunOne execution of a data flow
Request historyCaptured inbound HTTP traffic, response bodies, headers, and summary buckets

Flows reference steps by executionKey, not by step record ID. This keeps flow definitions stable even when the step row is edited or replaced.

Runtime Keys

Runtime keyPurpose
Builtin.ClassExecutes a registered Tempo.Step subclass
Builtin.MethodExecutes a registered [StepMethod] method
External.RestExecutes a persisted outbound HTTP request
Artifact.ProcessExecutes a package-local process that speaks Tempo protocol v1
Artifact.PythonExecutes a Python handler from an artifact package
Artifact.JavaScriptExecutes a Node.js handler from an artifact package
Artifact.DotnetProcessExecutes a .NET handler from an artifact package using the Tempo SDK host
Host.ExecutableExecutes an operator allowlisted host executable

Legacy.InlineRest remains a compatibility read path. New REST steps should use External.Rest.

First-Run Experience

On an empty database, Tempo seeds:

  • A default tenant, administrator, tenant user, and credential
  • Four protected tenant roles: Administrator, Editor, Operator, and ReadOnly
  • Built-in runtime sample steps
  • Artifact-backed sample steps and sample artifacts for every available artifact runtime
  • A host executable sample only when a host allowlist entry is enabled

The dashboard opens a setup wizard on first access. The wizard explains what Tempo is about to create, then creates:

  • An echo step packaged from source
  • An echo flow and POST trigger
  • A chained flow that generates a random number and doubles it
  • A GET trigger for the chained flow
  • Sample invocations that show both response bodies and response headers

Every workspace in the dashboard includes a page title and subtitle, and sidebar scrolling is independent from workspace scrolling.

Public HTTP Trigger Response Contract

Public HTTP trigger routes are:

/v1.0/triggers/http/{triggerId}

For successful trigger execution:

  • The HTTP response body is the final step output body
  • Execution metadata is returned in headers, not mixed into the JSON body

Current response metadata headers include:

  • x-tenant-id
  • x-run-id
  • x-dataflow-id
  • x-trigger-id
  • x-run-state
  • x-run-created-utc
  • x-run-started-utc
  • x-run-completed-utc
  • x-run-last-update-utc
  • x-runtime-ms
  • x-run-error when applicable

SDKs

Tempo includes SDKs for artifact-backed handlers:

Notes:

  • The C# SDK targets net8.0 and net10.0
  • The server-side projects target net10.0
  • Each SDK ships with a test application intended to exercise the public API surface exhaustively

Mutable Artifacts and Source Steps

Artifacts are file packages, not opaque zip-only deployment units. Tempo stores package contents in a way that supports:

  • Uploading artifacts and versions
  • Editing individual files in the dashboard
  • Creating steps directly from pasted Python, JavaScript, or C# source
  • Reusing one artifact across multiple steps and versions

For artifact-backed runtimes and manifests, see docs/ARTIFACT_MANIFEST.md.

APIs and Documentation

Primary reference material:

Additional operator and implementation guides:

OpenAPI is exposed at:

http://localhost:8901/openapi.json

Runtime configuration schemas in OpenAPI use oneOf, which keeps the API Explorer and generated clients aligned with the concrete runtime config being used.

Build, Test, and Pack

Core solution:

dotnet build .\src\Tempo.sln
dotnet run --project .\src\Test.Automated\Test.Automated.csproj
dotnet test .\src\Test.Xunit\Test.Xunit.csproj
dotnet test .\src\Test.Nunit\Test.Nunit.csproj

SDK test applications:

dotnet run --project .\sdk\csharp\Tempo.Sdk.TestApp\Tempo.Sdk.TestApp.csproj
npm.cmd --prefix .\sdk\js test
python .\sdk\python\test_app\test_sdk.py

NuGet packaging:

publish-nuget.bat YOUR_NUGET_API_KEY

That script packs and pushes:

  • Tempo
  • Tempo.Sdk
  • their matching .snupkg symbol packages

Repository Layout

PathPurpose
src/TempoCore orchestration library
src/Tempo.CorePersistence, runtimes, settings, server contracts
src/Tempo.ServerREST API host
src/Tempo.McpServerMCP bridge over Tempo.Server
dashboardReact/Vite operator UI
sdk/csharpC# SDK and test app
sdk/jsJavaScript SDK and test app
sdk/pythonPython SDK and test app
dockerCompose file and container config
docsFocused operator and developer guides

Technology Stack

TechnologyRole in Tempo
.NET 10Primary runtime for Tempo, Tempo.Core, Tempo.Server, Tempo.McpServer, and the server-side test projects
WatsonEmbedded web server used by Tempo.Server for HTTP routing, OpenAPI exposure, and trigger/API handling
VoltaicMCP scaffolding and transport layer used by Tempo.McpServer
React 19Component model for the dashboard UI
React Router 7Client-side routing for dashboard workspaces and navigation
Vite 6Dashboard development server and production build toolchain
Microsoft.Data.SqliteSQLite persistence provider for local and lightweight Tempo deployments
Microsoft.Data.SqlClientSQL Server persistence provider
NpgsqlPostgreSQL persistence provider
MySqlConnectorMySQL persistence provider
PrettyIdK-sortable ID generation for Tempo resource identifiers
RestWrapperOutbound HTTP execution support for REST-backed steps
SyslogLoggingStructured logging used across the server-side projects

Contributing

Follow the coding and review rules in CLAUDE.md. Keep README, changelog, API docs, and the Postman collection in sync with code changes.

License

MIT. See LICENSE.md.

Logo provided by softicons.com.

Tag summary

Content type

Image

Digest

sha256:05800d03b

Size

336.2 MB

Last updated

about 2 months ago

Requires Docker Desktop 4.37.1 or later.