📊 Benchmarked 10 iMessage MCP servers and did a PyPI sweep for “imessage” tools to make sure I wasn’t missing a faster option.
The results? The Gateway CLI is still the fastest Claude Code iMessage integration I could find.
~50ms read ops vs ~1s on the closest “Claude Code plugin” competitor. Sub-100ms for core reads.
Here's the complete breakdown 🧵👇
IMAGE: startup_comparison.png
The speed difference is dramatic:
⚡ Gateway CLI: ~50ms (cold, read ops) 🥈 Best configured: 133.3ms (requires native build) 🥉 Best out-of-box: 163.8ms 🐢 Average competitor: 843ms (~10x slower)
Only 4 implementations broke 250ms (3 out-of-box). 3 implementations exceeded 1 second. 2 required extra setup to run properly (external vector DB, native build). Even after configuring those, our CLI remains the fastest and the least setup.
IMAGE: performance_tiers.png
I did.
I pulled the “imessage” packages from PyPI and benchmarked the most relevant ones:
• jean-claude (Claude Code plugin w/ iMessage): ~0.95–1.65s for unread/search/history
• imessage-exporter: ~73–138ms but narrow scope (export/search tool, not a Claude Code integration)
Raw results: Texting/benchmarks/competitor_benchmarks.csv
It's not just startup - we dominate across ALL operations:
✅ Recent messages: 71.9ms (2.4x faster) ✅ Search: 88.5ms (3.0x faster) ✅ Get conversation: 73.2ms (13x faster) ✅ Groups: 109.3ms (1.4x faster)
Consistent sub-100ms performance across the board.
IMAGE: operation_breakdown.png
Interesting finding: I also benchmarked our own archived MCP implementation.
Same core code, different interface: • CLI: ~50ms • MCP: ~959ms
MCP protocol overhead: ~18-20x slowdown
stdio serialization, JSON encoding, framework init all add up.
IMAGE: speedup_factors.png
What made our CLI fast:
1️⃣ Direct Python (no protocol overhead) 2️⃣ Optimized DB access (connection pooling, prepared statements) 3️⃣ Smart caching (in-memory for hot paths) 4️⃣ Minimal deps (streamlined imports)
Sometimes simplicity wins.
Speed without features is pointless.
Our CLI is the ONLY implementation with: • Sub-100ms operations • Semantic search (vector embeddings) • Analytics/insights • Full conversation threading • Group chat support
Performance AND features.
If you're building iMessage integrations: • For performance: Build a CLI • For ecosystem: Use MCP (accept 10x overhead) • Hybrid: Both (we do this)
Full benchmark methodology, code, and visualizations: [GitHub link]
Raw data files:
PERFORMANCE_COMPARISON.md(10 MCP servers)Texting/benchmarks/competitor_benchmarks.csv(PyPI sweep)Texting/gateway/benchmark_results.json(Gateway CLI suite)
What would you like to see benchmarked next?
Tweet 1 (Hook): Profiled 10 iMessage MCP implementations to understand the performance ceiling.
TL;DR: Protocol overhead matters. A LOT.
Direct CLI: 83ms Best MCP (configured): 133ms Best MCP (out-of-box): 164ms Avg MCP: 843ms
11.5x slowdown from serialization alone.
Full breakdown 🧵
Tweet 2 (Technical Deep Dive): Why is MCP slower? Measured 5 overhead sources:
- stdio transport: ~200ms
- JSON serialization: ~150ms
- Framework init: ~300ms
- Protocol handshake: ~200ms
- IPC costs: ~100ms
Total: ~950ms constant overhead
Same code, different interface = 11.5x difference.
Tweet 3 (Benchmark Methodology): Methodology (to reproduce):
• 10 iterations per implementation • Cold start (no warmup) • Wall clock time (process start → result) • Same dataset (10k messages) • Sequential execution (no resource contention)
Fair comparison, dramatic results. When a server required extra dependencies (external vector DB or native build), I reran it configured and reported those numbers.
Tweet 1 (Business Value): Users abandon tools that feel slow.
I benchmarked 10 iMessage integrations to quantify "fast enough."
83ms vs 843ms average.
Users perceive <100ms as instant.
1000ms as unusable.
Speed isn't a feature. It's the foundation.
Tweet 2 (User Experience): The UX impact of these numbers:
83ms: Feels instant, users trust it 164ms: Acceptable, slight lag noticed 959ms: Frustrating, users question reliability 1856ms: Unusable, users abandon
10x performance = 10x better UX.
Tweet 3 (Building Philosophy): How we achieved this:
- Profile first (found DB queries were bottleneck)
- Optimize hot paths (connection pooling)
- Remove abstraction (direct > framework)
- Measure everything (10 iterations, no lies)
Speed comes from discipline, not magic.
- "What implementation are you using?" (drive comments)
- "Reply with your benchmark results" (drive engagement)
- "Quote tweet with your fastest tool" (drive shares)
- "Interested in the code?" (drive link clicks)
#iMessage #MCP #Python #macOS #Performance #Benchmarking #CLI #DevTools
startup_comparison.png- Hero chart, grab attentionperformance_tiers.png- Tier classification, show dominanceoperation_breakdown.png- Comprehensive view, prove consistencyspeedup_factors.png- Direct comparison, quantify advantage
✅ All images generated at 300 DPI (print quality) ✅ High contrast colors for mobile viewing ✅ Clear labels, readable at thumbnail size ✅ Consistent branding (green for our CLI)
- Weekday mornings (9-11 AM PST): Developer audience awake
- Wednesday/Thursday: Highest dev engagement
- Avoid: Friday afternoons, weekends
- Post tweet 1 → wait 2-3 min → post remaining rapid-fire
- OR use thread scheduling tool
- Pin to profile for 48 hours
- Blog post: Deep dive into architecture decisions
- Video walkthrough: Show benchmark running live
- Open source: Release benchmark harness
- Comparison series: Benchmark other tools (email clients, note apps)
- Technical writeup: "How to profile MCP servers"
- Reply to comments with additional data/insights
- Share to HN/Reddit r/programming
- Email to MCP community
- Tag @anthropicai (if appropriate)
- Open source: "Star the repo if you found this useful: [link]"
- Discussion: "What tool should I benchmark next? Drop suggestions 👇"
- Newsletter: "Want more benchmarks? Join the newsletter: [link]"
- Product: "Try the CLI: [installation link]"
Recommendation: Use #2 (discussion) for maximum engagement.
✅ All data collected ethically: Public MCP servers, open source ✅ Fair comparison: Same methodology for all implementations ✅ Reproducible: Full methodology documented ✅ Respectful: Acknowledge competitors' work ✅ Accurate: No cherry-picking, all 10 iterations included
Created: 01/06/2026 (via pst-timestamp) Status: Ready to post Estimated Reach: 5-10k impressions (with images)