検証: セルフホスト版TwentyのMCPをヘッドレスで叩いて往復回数を数えた
00:01:40 ・ source: https://zenn.dev/mskbhd/articles/lab-800-twentymcp
Transcript
hostenToday we verify if open-source CRM Twenty's self-hosted MCP server actually works headless.
guestjaオープンソースCRMの Twenty をセルフホストで立てて、ブラウザなしにMCPを叩けるか検証した話ですね。
hostenThe author built a contact-center scenario: search CRM by phone, create record if not found—and counted how many API roundtrips that takes.
guestja着信電話番号でCRMを検索して、いなければ作成する流れが、MCP何往復で終わるのかを数えたわけです。
hostenCold session needs five roundtrips; warmed up, just two—but auth GraphQL lives at `/metadata`, not `/graphql`.
guestjaコールドで5往復、温まると2往復で済みますが、認証系のGraphQLが `/metadata` にあることで1時間も足止めされました。
hostenMCP response is smaller than REST API—606 bytes versus 2.3 KB—because `select` parameter forces projection.
guestjaMCPはRESTより冗長だという予想と逆で、実際には606バイト対2.3KBとMCPのほうがデータ量で有利でした。
hostenSelf-hosted Twenty runs on 14GB RAM, starts in 137 seconds, and memory fluctuates 1.6–2.8 GB depending on garbage collection.
guestjaセルフホスト版は14GBのマシンで定常1.6GB、ピーク2.8GB、起動に137秒かかり、Docker Composeのヘルスチェックタイムアウトで初回は失敗します。
hostenThe key lesson: phone matching via AI agent needs guardrails—partial matches cause false records in production.
guestja実運用では、エージェントに電話番号の完全一致を強制しないと、無関係な顧客レコードを拾う事故が起きます。