aedificium-template
aedificium — 個人学習ノート+レキシコン、Claude ネイティブ
http://localhost:8788 上のカードグリッド UI で、ノート、定義(レキシコン)、PDF を扱います。チャットペインは MCP 経由で Claude Code に接続されます。数式は最高級にレンダリングされます(KaTeX)。ディスク上のすべてはプレーンな Markdown で、git に自動コミットされ、(オプションで)GitHub に自動プッシュされます。
これは オープンソーステンプレート です。フォークし、そのフォークを兄弟の scriptorium/ コードラボの隣にクローンして、書き始めてください。
得られるもの
カードグリッド+リーダー — 左にノート、右に Claude とのチャット。
最高級の数式 — インラインで
$e^{i\pi}+1=0$、ディスプレイで$$…$$、KaTeX をサーバーサイドで使用。カードグリッド および リーダーで描画されます。レキシコン — 1 ファイルに 1 定義(
lexicon/eigenvalue.md)。見出し語+同義語+分野ラベル付きの辞書エントリとして描画されます。PDF ライブラリ — PDF を
pdfs/に置くと、サイドカーのディスカッションカードが自動的に表示されます。埋め込みビューアはありません。ブラウザのネイティブビューアの方が優れているからです。#page=Nでページへのディープリンクが可能です。チャットは Claude Code — ブラウザで入力すると Claude が回答し、現在選択中のカードがコンテキストとして一緒に送られます(
refs=…)。Wiki リンク — 任意のノート内の
[[slug]]はリーダー内でクリックして開くリンクになり、/note/<slug>のディープリンクは History API 経由で機能します。Git ネイティブ — 書き込みは自動コミット(デバウンス約 3 秒)され、
originが設定されていれば自動プッシュされます。PDF 用に LFS が事前設定されているため、GitHub は大きなバイナリをきれいに処理できます。
前提条件
macOS(arm64) 上で開発・テストされています。Linux は同等のパッケージをインストールすれば動作するはずです。
bun — サーバーが使用する JavaScript ランタイム。
brew install oven-sh/bun/bun。git-lfs — PDF 用。
brew install git-lfs。Claude Code — チャットペインが通信する CLI。これによりノートブックが インタラクティブ になります。
セットアップ
# Fork on GitHub first, then:
git clone git@github.com:clausd/aedificium.git
cd aedificium
bun install
git lfs install起動
重要なフラグが 1 つあり、見落としがちです。 Claude Code は、ブラウザ → Claude 方向のチャネルを機能させるために --dangerously-load-development-channels server:aedificium を必要とします。これがないと、reply / commit_chat ツールは依然として機能しますが(Claude → ブラウザ)、チャットペインに入力したものは 何も Claude に届きません。沈黙はバグのように見えますが、バグではありません。
claude --dangerously-load-development-channels server:aedificiumClaude Code は .mcp.json に従って bun server.ts を自動的に起動します。その後、http://localhost:8788 を開いてください。
エイリアスを検討してください:
alias claude-aed='claude --dangerously-load-development-channels server:aedificium'「bun を nohup するな」ルール
自分で bun を nohup / disown で起動しないでください。そうすると、bun は Claude Code の MCP stdio パイプから切り離された孤児プロセスになります。ブラウザは引き続き機能しますが、Claude は reply と commit_chat を失い、将来の Claude Code セッションもポート 8788 にバインドできなくなります(孤児プロセスが掴んだままのため)。
server.ts の変更を反映する必要がある場合:
kill $(lsof -tiTCP:8788 -sTCP:LISTEN) # or just kill the pid you see
# then exit + re-enter Claude Code; the harness respawns a fresh bun child.レイアウト
notes/ YYYY-MM-DD-HHMM-slug.md — free-form notes
lexicon/ <slug>.md — one term per file, dictionary style
pdfs/ PDFs + auto-generated sidecar .md discussion cards
assets/ pasted / dropped images referenced from cards
files/ misc non-PDF uploads
archive/ archived cards (preserves original subdir)
data/chat.jsonl durable chat transcript (tracked + searchable)
server.ts the Bun app (single file, ~2500 lines)
CLAUDE.md the design doc + Claude Code project instructions
.mcp.json MCP config (Claude Code reads this to spawn bun)
.gitattributes LFS routing for *.pdf1 ページにまとめた規約
カードの種類は宣言ではなく推定されます。
notes/内のファイルはノート、lexicon/内のファイルはレキシコンエントリ、PDF にはサイドカーカードが付きます。数式: インラインは
$x$(ドル記号は内容に密着)、ディスプレイは$$…$$。エッジケースはCLAUDE.mdを参照。マシンタグ を本文に記述:
#area:calculus、#see:other-slug、または単独の#question。UI はこれらを散文から隠し、チップとして描画します。Wiki リンク:
[[some-slug]](オプションで[[some-slug|表示テキスト]])はサーバーサイドで解決され、リーダーで開きます。
完全な仕様: CLAUDE.md。
任意 — 兄弟コードラボ
モデル、ノートブック、図のためのコンパニオン Python リポジトリが必要な場合は、scriptorium-template を兄弟チェックアウトとして使用してください:
your-workspace/
aedificium/ # this repo
scriptorium/ # from scriptorium-templatescriptorium の aedificium.py ブリッジを使うと、ノートブックのセルが aedificium の散文をインラインで描画し、matplotlib の図を aedificium/assets/ に直接保存できます。2 つが兄弟でない場合は、AEDIFICIUM_DIR(scriptorium 側)または AED_SCRIPTORIUM_DIR(こちら側)を設定してください。
GitHub のセットアップ
LFS をローカルにインストールしたら、通常どおり GitHub にプッシュします:
git remote set-url origin git@github.com:clausd/aedificium.git
git push -u origin main自動プッシュは各自動コミットの後(デバウンス 5 秒)に実行されます。AED_NO_PUSH=1 で無効にできます。GitHub LFS の無料枠はアカウントあたり毎月ストレージ 1 GB / 帯域幅 1 GB で、最大数百件の論文からなる個人用 PDF ライブラリには十分な余裕があります。
環境設定
変数 | デフォルト | 効果 |
|
| HTTP + WebSocket ポート。 |
| unset | すべての自動コミットを無効にする。 |
| unset | 自動コミットはするが自動プッシュはしない。 |
| unset | チャットログのチェックポイント作成を無効にする。 |
|
| 複数のコミットを 1 回のプッシュにまとめる。 |
|
| チャットチェックポイントまでのアイドル時間。 |
|
| 強制チェックポイントまでのチャットの最大経過時間。 |
|
|
|
|
| カードの「エディタで開く」URL スキーム。 |
トラブルシューティング
「チャットペインに入力しても何も起こらない。」 ほとんど常に
--dangerously-load-development-channels server:aedificiumフラグの欠落が原因です。そのフラグを付けて Claude Code を再起動してください。「Claude が
replyツールは利用できないと言う。」 Bun が孤児化しています。ポート 8788 のプロセスを強制終了し、Claude Code を終了して再起動してください。「
git pushが PDF を拒否する(100 MB を超えています)。」 PDF を追加したときに LFS が有効になっていませんでした。git lfs installを実行し、次にgit lfs migrate import --include="*.pdf" --everythingを実行し、その後git push --force-with-leaseを実行してください(自分だけがクローンしている場合にのみ安全です)。「自動コミットが停止した。」 bun の stderr を確認してください。最も一般的な原因は、マシン間での
data/chat.jsonlのマージ競合です。競合は通常、両側の和集合になります(chat.jsonl は追記専用です)。
ライセンス
MIT。自由に改変してください。重要なのは、あなた自身がノートを所有しているということです。
クレジット
オリジナルのコンセプト、アーキテクチャ、実装は Claus Dahl によるものです。2 リポジトリへの分割(散文 ↔ コード)は、中世の写字室が修道院図書館を支えた方法に着想を得ています。そこから名前が来ています。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Connect your team's living knowledge base — docs, data, issues, CRM — to Claude and ChatGPT.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/clausd/aedificium-template'
If you have feedback or need assistance with the MCP directory API, please join our Discord server