7月の第一週。章が変わった。この半年が 可能性 を扱ったなら、この半年は 作る順序 を扱う。第一週に二編が出た。
今週の Signal
土台から敷き直す。「MCP サーバー初実装」がこの章の最初の一段だ。ノート四つを道具として差し出す数十行のサーバーを作り、Claude Desktop の設定にパスを一行登録する。それで全部だ — ストアも、配備も、審査も無い。チャットに「ノートに保存して」と書けば自分のノートPCのコードが実行される。dart test がサーバーを別プロセスとして立ち上げ、往復と永続まで自分で検査する。
そしてその隣に45行が立つ。「45行」は、近所の集まりの会費をチャットとメモ帳で管理していた人が週末の午後に作った道具だ。今回は時間ではなく 行数を数えた — 画面定義が何行で、サーバーが何行か。作った時間は人によって違うが、行数は変わらないからだ。
道具・パッケージのメモ
mcp_server の stdio モードでは stdout は JSON-RPC 専用の通路だ。診断メッセージを print で一行流せば、その行がプロトコルのストリームを壊す。今回のサーバーのエラー出力が全部 stderr にしか出ない理由がそれだ。組み込みでの「なぜ時々パースが失敗するのか」の相当数が同じ場所から出る。
短い考え
最初のサーバーを立ち上げると、たいてい同じ勘違いをする — さあプロトコルを学ばねば、と。逆だ。initialize ハンドシェイクも tools/list も stdio のフレーミングもパッケージが隠す。残る仕事は、道具が何を意味するかを書くことだけだ。 その文をうまく書くことがコードより重要だ。モデルが道具を選ぶ根拠がその文だからである。
来週
画面をサーバーから受け取って描く側へ移る。そして「誰がこのボタンを押していいのか」を道具の境界で止める編が続く。
makemind.dev 「更新」— 週に一度、その週に何が上がり、作りながら何に引っかかったか。