Production MCP server for The Noun Project — search & download icons in Cursor/Claude with OAuth 1.0a, rate limiting, and FREE-tier cost optimization
Noun MCP Server demonstrates solid definition quality with well-structured tool schemas, clear descriptions emphasizing cost optimization for the FREE tier, and proper parameter typing. All 7 tools have explicit inputSchemas with typed parameters and descriptions. Tool names follow verb_resource convention (search_icons, get_icon, download_icon, etc.). Descriptions are notably detailed, averaging ~180 chars, and include important operational context (API call costs, rate limits, usage guidance). However, there are gaps in output schema documentation (schemas not visible in source for tool responses), limited error handling guidance, and missing tool annotations (readOnlyHint/destructiveHint) that would improve agent reasoning. The server shows production intent (version syncing, cost optimizer, LRU caching, OAuth 1.0a) but lacks some Arcade patterns for robust agent composition.
Show current API usage vs limits for hourly, daily, and monthly windows, split into service calls vs icon calls. Cached for 5 minutes.
Download one icon as SVG or PNG (optional color/size; FREE trial is public-domain only). This is an expensive *icon* call (150/day on the free trial). Use only when the user asked to save or embed the file, not to inspect search results.
Get a collection and a page of its icons. Service call. Prefer this over calling get_icon on each member.
Get extra details for one icon, including a temporary SVG icon_url (expires in 1 hour). This is an expensive *icon* call (FREE trial: 150/day and 150/month). Skip it when search_icons already has the metadata you need.
Autocomplete icon search terms (max 10). Cheap service call — use before searching if the query is ambiguous.
Output schemas not documented. Tool responses (icons array, metadata structure, pagination tokens) are not formally documented in the source. LLMs cannot reliably predict what fields to extract or plan downstream calls without knowing return structure.
Missing tool annotations. No readOnlyHint or destructiveHint declared on tools. download_icon is marked WRITE risk but the tool definition lacks destructiveHint annotation. Agents cannot reason about side effects without explicit markers.
Limited error recovery guidance. Tool descriptions warn about rate limits and API costs but do not include recovery paths (e.g., 'If you hit rate limit, wait 1 hour and retry' or 'If icon not found, try search_icons first'). Error responses visible in code (e.g., requestLayer.test.ts) lack actionable next steps for agents.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Search Noun Project collections (icon sets). Service call — cheaper than get_icon/download_icon.
Search The Noun Project for icons. Returns IDs, style, license, thumbnails, tags, and attribution. This is a cheap *service* call — do NOT follow up with get_icon for every result. Use download_icon only when the user wants a file. Prefer a specific query over pagination (FREE trial: 2,000 service calls/month, 1,000/day).
Parameter 'next_page' and 'prev_page' tokens are opaque strings with minimal description. Pagination is present but the description does not explain what pagination tokens are or how to use them (sequential vs random access, token expiry, etc.).
check_usage tool has empty required array (no required params), but the description does not clearly state that it takes no input. This could confuse agents about when to call it or what it returns.