MCP server with React Native + Expo best practices, setup guides, and project scaffolding
This is a knowledge/pattern-delivery server with 10 well-named, clearly-described reference tools. All tools follow verb_noun naming (get_*), have good descriptions (195 - 285 chars), and proper parameter schemas with Zod validation. However, the tools are pure knowledge retrieval (no state mutation, no composition chains, no error handling beyond read-only data delivery). Output schemas are implicit (text content) rather than explicitly documented structured responses. The server does not implement tool annotations, error guidance, or multi-step recovery patterns. It excels as a reference/documentation tool but lacks the depth expected of a production agent toolkit. STDIO transport caps protocol readiness at 50.
Get API and data fetching patterns (Axios + TanStack Query). Call this when creating API services or data fetching hooks. Covers Axios client with interceptors, domain-grouped services, custom query/mutation hooks, query key conventions, and QueryClient config. Use `topic` to get a specific section only.
Get React Native component patterns. Call this when creating any component: button, card, list item, image, form input. Covers Pressable, expo-image, React.memo, React Compiler, composable pattern, and uncontrolled TextInput. Use `topic` to get a specific section only.
Get memory optimization patterns. Call this when debugging memory leaks or performance issues. Covers useEffect cleanup (listeners, timers), closure memory leaks, React Native DevTools memory profiler, view flattening, R8 shrinking for Android, and a common memory leak sources checklist. Use `topic` to get a specific section only.
Get Expo Router navigation patterns. Call this when working with routes, navigation, deep links, or auth guards. Covers file structure, layouts, AuthGuard, typed params, navigation API, deep linking, and layout groups. Use `topic` to get a specific section only.
Get performance optimization patterns. Call this when optimizing lists, images, bundle size, or animations. Covers LegendList/FlashList/FlatList, image optimization, tree-shaking, barrel exports, Concurrent React (useDeferredValue, useTransition), InteractionManager, and Reanimated worklets. Use `topic` to get a specific section only.
Output schemas are implicit text/plain, not documented structured responses. Tools return { content: [{ type: 'text', text: ... }] } but no caller-visible schema defines what fields, structure, or metadata the returned text contains. LLMs cannot plan downstream operations or extract structured data.
No error handling guidance. Tools are read-only knowledge retrieval, but no documentation explains fallback behavior if a topic enum value is unrecognized or the content generation fails. LLMs have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 80 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Get project folder structure and file placement guide. Call this when deciding where to place a new file. Covers the full folder tree, where to put screens/components/hooks/services/stores/types/constants, naming conventions, and import aliases. Use `topic` to get a specific section only.
Get screen architecture patterns (Logic/UI separation). Call this when creating a new screen or route. Covers the Route file + ScreenUI file split, naming conventions, and why it matters for testability and SOLID principles. Use `topic` to get a specific section only.
Get state management patterns (Zustand + MMKV). Call this when creating a store or working with global state. Covers Zustand store setup, MMKV persistence adapter, selectors, useShallow, getState() for outside React, and store organization rules. Use `topic` to get a specific section only.
Get styling patterns (NativeWind / Tailwind CSS). Call this when styling components. Covers NativeWind v4 className approach, arbitrary values, cssInterop for third-party components, Tailwind config, JS constants, conditional styles, and setup checklist. Use `topic` to get a specific section only.
Get TypeScript patterns for React Native. Call this when writing types or interfaces. Covers strict mode config, model types, API response types, route param typing, props interface naming, store types, generics for reusable hooks, as const, discriminated unions, and type guards. Use `topic` to get a specific section only.
No tool composition or chaining capability. Each tool is independently useful but produces text output that cannot be programmatically consumed by downstream tools. No IDs, references, or machine-readable structure returned to enable multi-step agent flows.
All tools return plain text with optional topic-based filtering. Topic enums are documented in descriptions ('pressable, expo-image, react-memo, ...') but not validated at schema level as strict enum constraints. Allows unrecognized topic values with no feedback.
No tool annotations. Tools are all read-only (readOnlyHint) and idempotent (idempotentHint) but these hints are not declared in the schema. This forces LLMs to infer safety/idempotency rather than reading explicit metadata.