React Native MCP Server
This MCP server automates React Native CLI project upgrades by providing version management and generating comprehensive migration diffs.
Fetch Latest Stable Version: Retrieve the most recent production-ready React Native release from GitHub, excluding betas and release candidates
Access Release Candidates: Get pre-release RC versions for early testing and feature validation
Generate Upgrade/Downgrade Diffs: Create detailed differences between any two React Native versions using
rn-diff-purge, showing:Package.json dependencies and versions
iOS configuration (Podfile, xcodeproj settings)
Android configuration (build.gradle, settings.gradle)
Project structure changes
Binary file updates
Template file modifications
Native code changes
Automatic Version Detection: Auto-detect the current React Native version from your project's
package.jsonif not explicitly providedMigration Guidance: Receive step-by-step instructions for applying upgrades, including dependency updates, configuration changes, binary file handling, and build tool version updates
Troubleshooting Support: Get package-manager-specific troubleshooting steps including Pod cleanup, Gradle wrapper updates, and dependency reinstallation
Preserve Custom Code: Apply upgrades while maintaining existing customizations in native code, configuration files, and TypeScript/JavaScript files
Supports React Native Android configuration analysis and upgrade assistance, helping manage Android-specific native code changes during React Native upgrades.
Streamlines Expo React Native app upgrades and configurations, helping developers manage Expo SDK upgrades and configuration changes.
Offers integration capabilities with GitHub Copilot, enhancing the development experience by providing AI-assisted React Native guidance.
Provides tools for handling iOS configurations in React Native projects, assisting with iOS-specific native code changes during React Native upgrades.
Provides platform-specific tools for React Native development on macOS, helping with configuration and upgrade processes.
Enables streamlined React Native development workflows including project initialization, configuration, and AI-assisted development guidance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@React Native MCP Servershow me the upgrade diff from React Native 0.72 to 0.73"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
react-native-upgrader-mcp
A Model Context Protocol (MCP) server that streamlines React Native project upgrades. It provides developers with automated tools to seamlessly upgrade React Native CLI projects to any desired version or the latest stable release. The MCP Server uses rn-diff-purge to generate the diff.
🚀 Features
Version Management: Fetch and track the latest stable React Native versions with semantic versioning support
Upgrade Automation: Generate detailed upgrade/downgrade diffs between versions with step-by-step migration guidance
Release Candidate Support: Access and evaluate pre-release versions for early testing and feature validation
Important: This MCP Server is not compatible with Expo projects.
Related MCP server: Expo MCP Server
đź”§ Setup
Cursor
Open Cursor Settings
Look for an option called "Tools and integrations" and click on it
Click on "New MCP Server"
Configure:
{ "mcpServers": { "react-native-upgrader-mcp": { "command": "npx", "args": ["-y", "react-native-upgrader-mcp"] } } }Restart Cursor
VS Code
Install MCP extension (e.g., "MCP Server Manager")
Configure:
{ "mcp.servers": { "react-native-upgrader-mcp": { "command": "npx", "args": ["-y", "react-native-upgrader-mcp"] } } }
🛠️ Tools
get-stable-version- Get latest stable versionget-react-native-diff- Generate upgrade diff between versionsget-rc-version- Get RC versions
🛠️ Development
git clone https://github.com/patrickkabwe/react-native-upgrader-mcp.git
cd react-native-upgrader-mcp
bun install
bun run build
bun run dev🤝 Contributing
Fork the repository
Create a feature branch
Make your changes
Submit a pull request
đź“„ License
Available Tools
2 toolsget-react-native-diffGet React Native DiffA
Gets the React Native diff between the current version and the user provided version. This diff will show all changes needed to upgrade React Native, including:
Package.json dependencies and their versions
iOS configuration changes (Podfile, xcodeproj settings)
Android configuration (build.gradle, settings.gradle)
Project structure changes
Binary files that need to be updated
Template files modifications
Native code changes
Troubleshooting steps if any
If no fromVersion is provided, the current version from package.json will be used. The diff follows standard git diff format and should be carefully analyzed to:
Update all dependencies to compatible versions
Apply configuration changes while preserving custom settings and user defined code
Handle binary file updates appropriately
Maintain existing customizations in native code and ts/js files
Update build tools versions (Gradle, CocoaPods, etc) with the correct version from the diff using specific cmds
Preserve any local modifications to template files
Please add the end of the process give instruction on the troubleshooting steps if any(Please detect user's package manager and run the correct cmd):
DELETE Pod and Podfile.lock file in iOS folder
Run pod install to prevent errors in iOS folder
Run this cmd to update android binary ./gradlew wrapper --gradle-version {{CURRENT_GRADLE_VERSION_FROM_DIFF}} —distribution-type {{DISTRIBUTION_TYPE_FROM_DIFF}} in android folder
Run {{CURRENT_PACKAGE_MANAGER}} install to install the correct version of the dependencies
YOU MUST call get-react-native-stable-version tool to get the stable version of React Native before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| fromVersion | No | The version of React Native to get the diff from | |
| toVersion | Yes | The version of React Native to get the diff to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the tool outputs a diff in 'standard git diff format,' requires careful analysis with specific steps (e.g., updating dependencies, preserving customizations), and includes troubleshooting instructions (e.g., deleting Pod files, running commands). However, it lacks details on error handling or rate limits, preventing a perfect score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is overly verbose and poorly structured. It mixes high-level purpose with detailed implementation steps and troubleshooting commands in a single block, making it hard to parse. Sentences like 'Please add the end of the process give instruction on the troubleshooting steps if any' are grammatically awkward and reduce clarity. It could be significantly streamlined for better readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (version diffing with multiple configuration aspects) and lack of annotations or output schema, the description does a good job of covering essential context. It explains what the diff includes, how to use it, and post-processing steps. However, the absence of an output schema means the description should ideally detail the return format more explicitly, which is only partially addressed by mentioning 'standard git diff format.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (fromVersion and toVersion). The description adds some context by explaining default behavior ('If no fromVersion is provided, the current version from package.json will be used'), but does not provide additional syntax or format details beyond what the schema offers. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Gets the React Native diff between the current version and the user provided version.' It specifies the verb 'gets' and resource 'React Native diff,' and distinguishes it from its sibling 'get-react-native-stable-version' by explicitly stating that tool must be called first. The detailed list of what the diff includes (package.json, iOS/Android configs, etc.) further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines: it states 'YOU MUST call get-react-native-stable-version tool to get the stable version of React Native before calling this tool,' which directly addresses when to use this tool versus alternatives. It also specifies conditions like 'If no fromVersion is provided, the current version from package.json will be used,' offering clear context for parameter handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-react-native-stable-versionGet Stable VersionA
Gets the latest stable version of React Native from GitHub releases.
This version represents the most recent production-ready release that has been thoroughly tested and is recommended for use in applications.
The version number follows semantic versioning (e.g. 0.72.0) and excludes any release candidates or beta versions.
This tool is commonly used before planning an upgrade to ensure targeting the latest stable release and must be called before calling get-react-native-diff tool.
The output of this tool will be used as the toVersion parameter in the get-react-native-diff tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool fetches from GitHub releases, returns semantic versioning format, excludes unstable versions, and that the output is production-ready. It doesn't mention error handling, rate limits, or authentication needs, but covers core behavioral aspects adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear paragraphs: purpose, version characteristics, usage context, and output usage. Every sentence adds value, though the final sentence about output usage could be slightly more concise by combining with the previous sentence about the sibling tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description provides good context: what it returns (stable version in semver format), where it comes from (GitHub releases), when to use it (before upgrades), and how it connects to the sibling tool. It doesn't describe error cases or exact return structure, but covers the essential information well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage. The description appropriately doesn't discuss parameters since none exist, but it does explain the output format ('semantic versioning') and how the output relates to other tools, adding value beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Gets the latest stable version'), resource ('React Native from GitHub releases'), and scope ('excludes any release candidates or beta versions'). It distinguishes from the sibling tool by specifying this tool retrieves the stable version while the sibling compares versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('before planning an upgrade') and when not to use it (for non-stable versions). It names the alternative tool ('get-react-native-diff') and specifies the relationship ('must be called before calling get-react-native-diff tool').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
- First observed
get-react-native-diff - First observed
get-react-native-stable-version
TDQS
The two tools have completely distinct purposes with no overlap. get-react-native-diff provides detailed upgrade instructions between versions, while get-react-native-stable-version simply retrieves the latest stable version number. An agent would never confuse which tool to use for which task.
Both tools follow the exact same naming pattern: get-react-native- followed by a descriptive noun (diff, stable-version). The kebab-case is consistent throughout, and the verb 'get' is used consistently for both retrieval operations.
With only 2 tools, this server feels severely underpowered for a React Native upgrade domain. While the tools work together logically, there are obvious missing operations like applying the diff, checking current version, or handling specific platform configurations separately. The scope suggests more comprehensive tooling would be appropriate.
The server is severely incomplete for React Native upgrade workflows. While it provides version information and a diff, there's no tool to actually execute the upgrade steps described in the diff output. Agents would be left with detailed instructions but no automated way to implement them, creating a significant gap in the operational surface.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Your Expo and EAS project in natural language: up to date SDK docs, cloud builds (status, logs, trig
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
The AI orchestration agent for modern software teams.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides comprehensive React Native development assistance with expert-level automated code remediation, security vulnerability fixes, performance optimization, and production-ready code generation. Includes testing suite generation, dependency management, and accessibility compliance tools.136359MIT
- FlicenseNot gradedqualityNot gradedmaintenanceA Model Context Protocol server designed to streamline Expo and React Native development for AI assistants like Cursor and Claude. It provides a comprehensive suite of tools for project initialization, EAS builds, OTA updates, and development server management.1-
- FlicenseAqualityDmaintenanceAn MCP server designed for React Native and Expo development that provides specialized tools for project scaffolding, architectural best practices, and troubleshooting. It enables AI assistants to guide users through setup, navigation configuration, and CI/CD processes using modern stacks like NativeWind and Zustand.134-
- AlicenseAqualityCmaintenanceProvides AI agents with accurate, version-aware documentation for React Native, Expo, React Navigation, and Ignite by automatically detecting project dependencies and fetching matching documentation.12MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/patrickkabwe/react-native-upgrader-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server