StoryCanon
A structured story bible for long-form fiction: scenes, characters, world, plot and foreshadowing.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
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.>'
{
"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
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
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 が
開発用の値のまま本番に乗る。
Frequently asked questions
What is StoryCanon?
A structured story bible for long-form fiction: scenes, characters, world, plot and foreshadowing.
How do I install StoryCanon?
It runs as a remote server. In 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.>'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does StoryCanon need an API key?
Yes. It expects Authorization, which you set in its configuration.
Is StoryCanon open source?
Its code is public on GitHub, but the repository does not declare a standard license.
Who maintains StoryCanon?
It is published by exp3. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.