
Arachne — The MCP Tools Ecosystem, Multimodal Vision and What's Next
When I wrote the first post about Arachne, it was basically a scraper with RAG. Three months later, it became a platform with 25 MCP tools, multimodal vision with local AI, a billing dashboard, observability, and deployment to the official MCP Registry.
This post isn’t about the beginning — it’s about where Arachne is now and how it got here.
From 4 to 25 MCP tools
The killer feature was the MCP protocol. In June, Arachne had 4 MCP tools exposed via STDIO. Today there are 25, with two transports:
STDIO — local tools, direct coupling
SSE — remote via arachne.seu.pet/mcp, X-API-Key authentication
Each tool has a description, estimated timing, and fallback chain. arachne_plan is the orchestrator — you ask me “how do I do X” and it puts together the execution plan before any tool runs.
# Example: browser fallback chain
async def browser_extract(url: str) -> str:
try:
return await playwright_extract(url) # Playwright stealth
except BlockedError:
return await camoufox_extract(url) # Camoufox evasion
except TimeoutError:
return await screenshot_ocr(url) # fallback: capture + OCR
And it went to the official MCP Registry as io.github.Samuelfmedeiros/arachne — auto-discovery by any MCP client that knows the name.
Multimodal vision — 8 stages + local AI
The newest feature and the one I’m most proud of: the vision pipeline that runs everything locally.
# app/vision/pipeline.py — simplified
stages = [
metadata_extract, # dimensions, format, EXIF
color_analysis, # histogram, dominant palette
ocr_extract, # text via Tesseract
edge_detect, # Canny contours
face_detect, # facial detection
texture_analysis, # patterns and textures
quality_assess, # sharpness, noise, exposure
vlm_describe, # optional AI (gemma4:12b)
]
The first 7 stages are zero AI — pure OpenCV + Tesseract + NumPy. The eighth stage uses gemma4:12b running locally on Ollama (CUDA, GPU). Zero external API cost.
Three REST endpoints + two dedicated MCP tools:
| Route | Function |
|---|---|
POST /vision/analyze |
Analyze image from URL |
POST /vision/upload |
Upload + analyze |
POST /vision/screenshot |
Screenshot + one-shot analysis |
arachne_vision |
MCP image tool |
arachne_screenshot_vision |
MCP screenshot+vision tool |
The cherry on top: data URI support (data:image/png;base64,...). You can paste base64 directly from memory buffer without saving a file.
Observability — every call tracked
I implemented X-Called-By and X-MCP-Tool headers injected into every MCP call. Each request leaves a trail in ApiUsageLog:
class ApiUsageLog(BaseModel):
id: int | None
user_id: int
endpoint: str
method: str
status_code: int
response_time_ms: float
tokens_in: int | None
tokens_out: int | None
called_by: str | None # which agent called
mcp_tool: str | None # which MCP tool
created_at: datetime
This makes it possible to answer questions like “who’s using the browser the most?” and “which tool is consuming the most tokens?” — real data, not guesswork.
Monetization — Stripe with 4 tiers
Arachne became a product. Four plans on Stripe:
| Plan | Price | Differentiator |
|---|---|---|
| Free | R$ 0 | 10 requests/day, basic scraping |
| Scraper | R$ 29/month | 500 req/day, browser extraction |
| Pro | R$ 79/month | 2000 req/day, multimodal vision + RAG |
| Enterprise | R$ 399/month | Unlimited, priority support |
All integrated via Stripe Connect with webhooks for checkout.session.completed, invoice.paid, and customer.subscription.updated. Rate limiting is Redis (with RAM fallback) and 10 dedicated limiters per endpoint.
ai-jail — security sandbox
A quiet but critical addition: integration with ai-jail v1.13.0 (bubblewrap). Every browser/handler runs in a sandbox with:
- Read-only filesystem (except
/tmp) - No GPU/Docker access
- No internal network
- Pre-mounted dependency cache
# ~/.ai-jail/rules.toml (global)
[mask]
files = [".env", "*.key", "secrets/"]
network = ["internal"]
The sandbox is modular — disabled via env var ARACHNE_SANDBOX_ENABLED=false without rebuild.
Metrics — server breathing
At the time of writing:
| Metric | Value |
|---|---|
| CPU | 0.6% |
| RAM | 11.9 GB (76.9% used) |
| Disk | 690 GB free (27.8% used) |
| Browser processes | 6 instances |
| Heavy tasks | safe |
The server handles it well. 6 browser instances active, but the worker pool (20/40 gunicorn) gets the job done.
What’s next
The immediate roadmap:
- Code Knowledge Graph — already implemented (KG watcher, Leiden communities, god nodes). Need to expose to frontend.
- MCP Intelligence Layer — Smart Router, Tool Chainer, memory cache between tools
- Video recording in MCP tools (
arachne_record_videowith Playwright screencast) - BYO LLM in Settings — each user chooses their model
- Visual Pipeline Builder — drag and drop stages in the browser
Arachne is no longer just a scraper. It became an ecosystem. And there’s still a long road ahead.