pt-techne-mcp-server

module
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2026 License: GPL-2.0

README

Techne MCP Server

Tests Dependabot

Model Context Protocol (MCP) server providing platform context and tools to AI assistants. Exposes deterministic, typed tools so platform agents call a tested renderer instead of writing HCL by hand.

Usage

Add this entry to your MCP client config (e.g. .copilot/mcp.json, mcp.json):

{
  "mcpServers": {
    "pt-techne-mcp-server": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "NOMOS_GITHUB_TOKEN",
        "ghcr.io/osinfra-io/pt-techne-mcp-server:latest"
      ]
    }
  }
}
Download binary

Pre-built binaries for Linux (amd64, arm64) are attached to each GitHub release:

# Download the latest release for your architecture
gh release download --repo osinfra-io/pt-techne-mcp-server --pattern '*linux-amd64'
chmod +x pt-techne-mcp-server-linux-amd64

Then configure your MCP client:

{
  "mcpServers": {
    "pt-techne-mcp-server": {
      "command": "/path/to/pt-techne-mcp-server-linux-amd64",
      "env": {
        "NOMOS_GITHUB_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}
Build from source
go install github.com/osinfra-io/pt-techne-mcp-server/cmd/pt-techne-mcp-server@latest
{
  "mcpServers": {
    "pt-techne-mcp-server": {
      "command": "pt-techne-mcp-server",
      "env": {
        "NOMOS_GITHUB_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}
Verification

Release artifacts are signed with cosign keyless (Sigstore OIDC). Install cosign to verify.

Container image:

cosign verify ghcr.io/osinfra-io/pt-techne-mcp-server:<tag> \
  --certificate-identity-regexp='https://github.com/osinfra-io/pt-techne-mcp-server/.github/workflows/release.yml@refs/tags/.*' \
  --certificate-oidc-issuer='https://token.actions.githubusercontent.com'

Binary:

gh release download --repo osinfra-io/pt-techne-mcp-server --pattern '*linux-amd64*'

cosign verify-blob pt-techne-mcp-server-linux-amd64 \
  --bundle pt-techne-mcp-server-linux-amd64.bundle \
  --certificate-identity-regexp='https://github.com/osinfra-io/pt-techne-mcp-server/.github/workflows/release.yml@refs/tags/.*' \
  --certificate-oidc-issuer='https://token.actions.githubusercontent.com'
Configuration

Set NOMOS_GITHUB_TOKEN with access to osinfra-io/pt-logos, osinfra-io/pt-corpus, osinfra-io/pt-pneuma, and osinfra-io/pt-ekklesia-docs. Without it, GitHub-backed tools return not_configured; offline tools (validate_team_spec, render_team_tfvars, render_team_docs_index, render_sidebar_patch) still work.

For local development, gh auth token is the simplest option. See docs/configuration.md for full details on token scopes, sources, and operational error codes.

Tools

Tool Description
validate_team_spec Validate a team spec against the JSON Schema
render_team_tfvars Render a spec to canonical pt-logos .tfvars bytes
open_team_pr Validate, render, and open/update a PR on pt-logos
list_teams List all teams from pt-logos@main
get_team Get a single team's spec and docs pages
lookup_user Find every team/role where a user appears
find_repo Find which team(s) own a repository
next_available_cidrs Compute the next N unallocated GKE subnet CIDR slots
render_corpus_helpers Insert a workspace into pt-corpus helpers.tofu
render_pneuma_helpers Insert a workspace into pt-pneuma helpers.tofu
render_team_docs_index Render a team's docs index page
render_sidebar_patch Patch pt-ekklesia-docs sidebars.js with a team entry
open_team_docs_pr Render docs + sidebar and open/update a PR on pt-ekklesia-docs

All spec-accepting tools handle both JSON objects and JSON-encoded strings (for LLM double-encoding quirks). Write tools are idempotent — identical input returns action: "noop".

Local development

Requires Go 1.26.3.

go build ./cmd/pt-techne-mcp-server            # build the binary
go test -race ./...                             # run tests
golangci-lint run                               # lint (uses .golangci.yml)

Schema maintenance (run after editing internal/spec/schema_embed.json):

go run ./internal/schemadoc schema/team.schema.json docs/schema.md  # regenerate docs

Documentation

Document Description
docs/contributing.md Repo layout, architecture, how to add a tool
docs/configuration.md Token setup, operational error codes, tool semantics
docs/schema.md Generated reference for every team spec field
schema/team.schema.json Team spec schema (symlink to internal/spec/schema_embed.json)

License

GPL-2.0. See LICENSE.

Directories

Path Synopsis
cmd
pt-techne-mcp-server command
pt-techne-mcp-server is the platform's MCP server.
pt-techne-mcp-server is the platform's MCP server.
internal
cidr
Package cidr computes deterministic CIDR allocations for GKE subnets.
Package cidr computes deterministic CIDR allocations for GKE subnets.
github
Package github wraps go-github with the narrow surface open_team_pr needs.
Package github wraps go-github with the narrow surface open_team_pr needs.
helpersrender
Package helpersrender inserts a workspace string into the logos_workspaces list inside a sibling repo's helpers.tofu without reformatting any other byte of the file.
Package helpersrender inserts a workspace string into the logos_workspaces list inside a sibling repo's helpers.tofu without reformatting any other byte of the file.
render
Package render produces canonical tfvars bytes from a typed Team spec.
Package render produces canonical tfvars bytes from a typed Team spec.
render/docs
Package docs renders a deterministic team-index Markdown page for the pt-ekklesia-docs Docusaurus site.
Package docs renders a deterministic team-index Markdown page for the pt-ekklesia-docs Docusaurus site.
render/sidebar
Package sidebar inserts a team's category entry into the pt-ekklesia-docs sidebars.js file by locating // region:<section> markers and appending a category block just before the matching // endregion: marker.
Package sidebar inserts a team's category entry into the pt-ekklesia-docs sidebars.js file by locating // region:<section> markers and appending a category block just before the matching // endregion: marker.
schemadoc command
Command schemadoc renders schema/team.schema.json into docs/schema.md.
Command schemadoc renders schema/team.schema.json into docs/schema.md.
spec
Parser: canonical pt-logos teams/<key>.tfvars -> *spec.Team.
Parser: canonical pt-logos teams/<key>.tfvars -> *spec.Team.
tools
asJSON: typed Go value -> JSON object (map[string]any).
asJSON: typed Go value -> JSON object (map[string]any).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL