StoryCanon

Registre officiel Autres

A structured story bible for long-form fiction: scenes, characters, world, plot and foreshadowing.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

Remote (streamable-http)
Claude Code
claude mcp add --transport http storycanon 'https://storycanon.softglow.jp/mcp' --header 'Authorization: <Bearer token. Only needed for clients that cannot do OAuth — the server advertises OAuth 2.1 with dynamic client registration, so connector-style clients obtain their own token from the URL alone. Hand-issued tokens come from the Settings page.>'
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "storycanon": {
            "type": "http",
            "url": "https://storycanon.softglow.jp/mcp",
            "headers": {
                "Authorization": "<Bearer token. Only needed for clients that cannot do OAuth — the server advertises OAuth 2.1 with dynamic client registration, so connector-style clients obtain their own token from the URL alone. Hand-issued tokens come from the Settings page.>"
            }
        }
    }
}

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. StoryCanon
  2. 構成
  3. デプロイ先
  4. ローカル開発
  5. テスト
  6. Prisma クライアント
  7. Cloudflare へのデプロイ

StoryCanon

StoryCanon は、ChatGPT で生成・相談した小説の設定、本文、キャラクター、世界観、伏線、TODO、現在の物語状態を作品ごとに保存するための MVP 実装です。

構成

  • apps/web: Next.js + TypeScript + Prisma + PostgreSQL の Web/API アプリ
  • packages/db: Prisma クライアント。Node と Cloudflare Workers で別の生成物が要るため独立したパッケージにしてある(後述)
  • docs: 内部仕様、外部仕様、移行の記録
  • tests/integration: ローカル結合テスト

デプロイ先

本番は Cloudflare Workers + Supabase PostgreSQL(東京) で稼働している。 main への push で .github/workflows/deploy-workers.yml がマイグレーションとデプロイを行う。

2026-08-30 までは AWS(ALB + ECS Fargate + RDS)だった。移行の経緯と当時ハマった点は docs/cloudflare-cutover.md に残してある。AWS 側の資源は撤去済みで、 CDK のブートストラップも消してあるため、AWS へ戻すには cdk bootstrap からやり直しになる。

ローカル開発

npm install
Copy-Item .env.example apps/web/.env
docker compose up -d postgres
npm run prisma:migrate -w apps/web
npm run dev -w apps/web

テスト

npm run test -w apps/web        # ユニット
npm run test:integration        # 結合(外部リソースは作らない)

Prisma クライアント

Prisma 7 は TypeScript しか出力しないため、クライアントは packages/db でコンパイルしてから使う。 Node と workerd では必要な生成物が違うので両方を作り、package.json の conditional export で 振り分けている。呼び出し側は @storycanon/db を import するだけでよい。

生成物は git 管理外で、npm run dev / build / test / lint が必要な方を自動で作る。 tsc を単体で走らせる場合だけ、先に npm run db:node -w apps/web が要る。

Cloudflare へのデプロイ

通常は main への push で CI が行う。手元から出す場合は apps/web で:

npm run deploy:worker

npx opennextjs-cloudflare build を直接叩かないこと。 deploy:worker は scripts/build-worker.mjs 経由でローカルの .env 類を退避してからビルドする。 これを飛ばすと next build がローカルの値をバンドルに焼き込み、NEXTAUTH_SECRET が 開発用の値のまま本番に乗る。

Questions fréquentes

Qu'est-ce que StoryCanon ?

A structured story bible for long-form fiction: scenes, characters, world, plot and foreshadowing.

Comment installer StoryCanon ?

Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http storycanon 'https://storycanon.softglow.jp/mcp' --header 'Authorization: <Bearer token. Only needed for clients that cannot do OAuth — the server advertises OAuth 2.1 with dynamic client registration, so connector-style clients obtain their own token from the URL alone. Hand-issued tokens come from the Settings page.>'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour StoryCanon ?

Oui. Il attend Authorization, à renseigner dans sa configuration.

StoryCanon est-il open source ?

Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.

Qui maintient StoryCanon ?

Il est publié par exp3. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.