txn2 is an open source organization for components developed by Craig Johnston, sponsored by Deasil Works, Inc. and Plexara. Includes Model Context Protocol servers, command-line tools, and Go libraries covering the modern data stack, Kubernetes networking, and host-file management.
All components are released on GitHub under the MIT or Apache 2.0 license.
§ 01 / model context protocol servers
MCP servers for the data stack
Model Context Protocol servers exposing object storage, distributed SQL engines, and metadata catalogs to MCP-capable clients.
platform
mcp-data-platform
An AI assistant can run SQL, but it doesn't know that cust_id is PII, that the table was deprecated last month, or who to ask when something breaks. mcp-data-platform fixes that. It connects assistants to your data infrastructure and adds business context from your semantic layer. Query a Trino table and get its meaning, owners, quality scores, and deprecation warnings in the same response.
orchestrates mcp-datahub, mcp-s3, and mcp-trino behind a single endpoint
Connects S3-compatible storage to MCP clients with read-only mode, size limits, prefix-based ACLs, and audit logging. Works with AWS S3, SeaweedFS, LocalStack, MinIO, or anything that speaks S3. Multi-account from a single installation.
Connects Trino to MCP clients with an optional semantic layer. Surfaces business descriptions, ownership, and quality scores from metadata catalogs alongside query results, and marks sensitive columns so an AI assistant knows what not to read. Multi-cluster from one install.
MCP server and Go library for DataHub. Search datasets, explore schemas, trace lineage, and read glossary terms, domains, and ownership. Ships as a standalone binary, a one-click Claude Desktop .mcpb bundle, or a composable library.
Develop locally, connect to Kubernetes by service name.
Bulk port-forwards every service in a namespace, assigns each a unique 127.x.x.x loopback IP, and writes the matching hostname entries into /etc/hosts. Your application's existing in-cluster connection strings (http://api-gateway:8080, redis-cli -h cache, mysql -h database) work unchanged on your laptop. Interactive TUI with live traffic, pod logs, and auto-reconnect on pod restart.
~ / kubefwd
$ brew install kubefwd
$ sudo -E kubefwd svc -n my-namespace --tui
press ? for help, q to quit# in another terminal, services resolve by name:$ curl http://api-gateway:8080
$ redis-cli -h cache -p 6379
$ mysql -h database -P 3306
A Go library and CLI that originated as the substrate under kubefwd's hosts-file rewrites and grew into a standalone utility. Mutex-protected for concurrent use, supports IPv4 + IPv6, CIDR ranges, comment-based grouping, and dry-run rendering. Preserves comments and file formatting on existing lines.
HTTP reverse proxy that routes requests to backend ports specified in the URL path (/8081/foo → backend:8081/foo). Useful for exposing dynamic ports (NiFi listeners, webhook receivers) through a single Kubernetes ingress.
Reverse proxy that pre-validates JWTs against Keycloak (or any OIDC realm) and forwards parsed claims as HTTP headers. Backend services read user, roles, and realm-access from headers. No token-handling library required.
Kubernetes Admission Mutation Proxy. Forwards Pod admission reviews to a custom HTTP endpoint and applies the JSONPatch operations it returns. Originally built to inject per-user volumes and env vars into JupyterHub-spawned Pods.
Queue-based data collector with store-and-forward. Buffers HTTP POST data when downstream is offline, replays when it comes back. Built for IoT and edge collection where the network blinks.
Another static web server. Serves a directory and exposes its listing through a JSON REST API. Useful for download pages, asset catalogs, and any web app that wants to enumerate what's on disk without writing a backend.
Shared MCP Go library: interfaces, types, middleware patterns, and utilities. The substrate behind mcp-trino, mcp-datahub, mcp-s3, and any custom server that wants to drop into the same composable stack.