TenkaCloud Docs

開発者マニュアル Stable

TenkaCloud本体、インフラコード、共通パッケージ、各Portal、リポジトリのツールを変更 する人のためのマニュアルです。本体のコードを変えずに競技をデプロイする作業は 競技開催者の役割です。

あなたのゴール

プラットフォームの契約を壊さず、必要なリポジトリ検査に通る、範囲の明確な変更を 1つ作ります。

リポジトリを準備する

bun install
git submodule update --init problems
make doctor

make doctorは不足しているローカル要件を表示しますが、自動インストールや設定変更 は行いません。Getting startedから必要な実行経路 だけを選びます。

変更前に担当場所を見つける

パス 担当
apps/ 管理者・参加者・開発者向けWebアプリ
infrastructure/ AWS CDK stack、環境設定、デプロイ経路
packages/ 共通contract、SDK、runtime adapter、CLI
scripts/ リポジトリ検査、デプロイ補助、生成物
problems/ commitを固定した公式問題カタログsubmodule

契約を変える前に、最寄りのテストとリポジトリ内の指示を読みます。 プラットフォーム構成はplane間の責務とevent 契約を説明しています。

変更の流れ

  1. テスト可能な完了条件を持つGitHub Issueから始める。
  2. 最小の担当moduleと既存テストを見つける。
  3. 実装と利用者向け文書を同時に更新する。
  4. 作業中は範囲を絞ったテストを実行する。
  5. Pull Request前にmake harnessmake before-commitを実行する。
  6. 最終差分を確認し、対象ファイルだけをstageする。

.env、認証情報、生成されたsecret、無関係な変更をcommitしません。単体テストが greenでも、実AWSデプロイやブラウザ操作まで証明したことにはなりません。未確認の 境界は正確に報告します。

コード変更か環境設定か

  • 対応済みの値へ開催者が変えるだけなら、既存の.envパラメータを使い、説明を 更新します。競技開催者マニュアルを参照。
  • 受け付ける値、検証、生成リソース、実行時の挙動を変えるなら、担当コード、テスト、 .env.example、マニュアルを同じPull Requestで更新します。
  • データベース保存先の変更では、データ移行とロールバックの境界を明示します。 暗黙のdual writeを追加しません。

MCP 2026-07-28

TenkaCloudのAlways-On control planeは、sessionを持たないMCP 2026-07-28 endpointを 提供します。MCPは、AI clientがTenkaCloudの許可された機能を呼ぶための共通形式です。 開発者向け接続では、専門用語の説明と対応runtime一覧だけを読み取れます。

接続先は{ALWAYS_ON_CONTROL_PLANE_ORIGIN}/mcp/developerです。clientは最初に server/discoverを呼び、各requestへ次を付ける必要があります。

  • MCP-Protocol-Version: 2026-07-28
  • JSON bodyのmethodと同じMcp-Method
  • tools/callresources/readでは、対象名と同じMcp-Name
  • _meta内のprotocol version、client info、client capabilities

このendpointはinitializeMcp-Session-Id、sticky routingを使いません。旧仕様だけを 話すclientは接続できません。公開情報の一覧結果には5分のpublic cache、認証後の結果には 保存しないprivate cache指定が返ります。request bodyが32 KiBを超えると、toolを 実行する前に拒否します。

endpoint 境界
/mcp/developer 公開・read-only。explain_conceptlist_runtime_capabilities
/mcp/problem-author 公開・read-only。渡されたJSONだけを純粋に検証
/mcp/organizer Auth0 issuer、audience、organization、tenant、roleを既存middlewareで検証
/mcp/participant team keyを検証し、そのteam IDとevent IDだけへ固定

開催者endpointが401 Unauthorizedを返す場合、WWW-Authenticate内の resource_metadataから保護対象リソース情報を取得できます。現行のAuth0構成では、 管理者が事前登録したOAuth clientを使用します。Dynamic Client Registration(DCR)を 公開せず、Client ID Metadata Document(CIMD)は接続先の認証サーバーが client_id_metadata_document_supported対応を明示した場合にだけ使用します。

deploy、teardown、設定変更を同期toolとして公開していません。将来追加する場合は Tasks extensionでdurable handle、cancel、idempotencyを実装し、危険な操作は multi-round-trip requestによる明示確認を要求します。それまでは既存の画面と運用手順を 使用します。

MCP hostはtoolを呼ぶたびにtool名と引数を表示し、利用者の承認を得る必要があります。 現在の全toolはread-only、non-destructive、idempotentと宣言しています。ただしHTTP serverから、remote clientが手元の承認画面を本当に表示したかは確認できません。確認 なしでtoolを呼ぶclientは接続しないでください。

MCPの実装はapps/always-on-control-plane、problem検証contractは packages/problem-sdkが担当します。protocol header、role間の認証混同、他tenant・ 他team・flag・credentialの漏えいをnegative testで確認します。

レビュー依頼前の確認

  • 新しい挙動を確認する範囲の絞られたテストがある。
  • 利用者向けの英語と日本語が一致している。
  • 生成物と索引が最新である。
  • link、type、format、関係するbuildが通る。
  • 未実施のライブ検証をNot runと書く。
  • IssueとPull Requestがコード差分だけでなく利用者への影響を説明している。

問題内容を変更する作業はpackの担当です。その場合は 問題作成者マニュアルを使ってください。