{"id":"stabgan-openrouter-mcp-multimodal","name":"openrouter-mcp-multimodal","homepage":"https://www.npmjs.com/package/@stabgan/openrouter-mcp-multimodal","repo_url":"https://github.com/stabgan/openrouter-mcp-multimodal","category":"ai-ml","subcategories":[],"tags":["mcp","openrouter","multimodal","vision","image-generation","sharp","typescript","nodejs","ai-tools"],"what_it_does":"A Model Context Protocol (MCP) server that routes requests to OpenRouter models and exposes tools for text chat (including multimodal message content), image analysis (with server-side image fetching and Sharp-based optimization), image generation, and model search/validation.","use_cases":["Multimodal chat with OpenRouter models via MCP clients (e.g., Claude Desktop, Cursor)","Vision workflows: analyze user-provided images from local paths, URLs, or data URIs","Image generation from text prompts via OpenRouter","Model discovery: search/validate models and retrieve model info (pricing/context/capabilities)"],"not_for":["Running untrusted prompts that may cause the server to read unintended local files (tools can access local file paths provided by the MCP client)","SSRF-safe internal network access (the README notes SSRF mitigations, but you should still avoid exposing sensitive internal hosts)","Production environments that require explicit, published SLAs or strict compliance guarantees (not evidenced in the provided docs)"],"best_when":"You want a ready-to-use MCP server to unify OpenRouter text + vision + image generation behind a small tool surface in common MCP clients.","avoid_when":"You need strict control over where image bytes come from (local filesystem and URL fetching are both possible) or you require fully specified operational guarantees (SLA, explicit retry/idempotency semantics, rate-limit headers) beyond what’s documented.","alternatives":["OpenRouter API directly (without MCP)","Other MCP servers for OpenRouter or vision/image generation","Self-hosted model gateway with your own authenticated REST/GraphQL layer"],"af_score":71.0,"security_score":58.5,"reliability_score":40.0,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T15:34:34.618591+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":["TypeScript","JavaScript","Node.js (implied)"],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["OpenRouter API key via environment variable OPENROUTER_API_KEY (passed to MCP server process)"],"oauth":false,"scopes":false,"notes":"Auth is delegated to OpenRouter using an API key provided to the MCP server runtime; no OAuth flow or fine-grained scopes are described in the README."},"pricing":{"model":null,"free_tier_exists":true,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"The README indicates support for free models on OpenRouter (not the MCP server itself). Exact rate/usage limits and costs are not specified here."},"requirements":{"requires_signup":true,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":71.0,"security_score":58.5,"reliability_score":40.0,"mcp_server_quality":85.0,"documentation_accuracy":80.0,"error_message_quality":null,"error_message_notes":null,"auth_complexity":95.0,"rate_limit_clarity":30.0,"tls_enforcement":70.0,"auth_strength":70.0,"scope_granularity":20.0,"dependency_hygiene":60.0,"secret_handling":70.0,"security_notes":"README describes SSRF mitigations for URL fetching (blocked private/link-local/reserved targets, capped response size, timeouts, redirect cap) and warns about local file access and disk writes via save_path. It does not document TLS enforcement details or explicit secret logging behavior, but it uses env var configuration for API keys.","uptime_documented":0.0,"version_stability":65.0,"breaking_changes_history":40.0,"error_recovery":55.0,"idempotency_support":"false","idempotency_notes":"No explicit idempotency guidance is documented; image generation/chat are typically non-idempotent unless the underlying request is treated as such by the client.","pagination_style":"none","retry_guidance_documented":false,"known_agent_gotchas":["`analyze_image` may access local files if the MCP client supplies paths; ensure the agent only passes intended, safe paths","`analyze_image` may fetch image URLs server-side; ensure the agent avoids URLs pointing to internal/sensitive hosts even though private IPs and response sizes/redirects are bounded","`generate_image` can write files when `save_path` is used; treat prompt and paths as untrusted input to avoid writing to unintended locations","Model search/validation tools may call OpenRouter endpoints; caching exists (TTL env var), but cache behavior and invalidation guarantees are not fully specified"]}}