Skip to main content
Glama
patrickkabwe

React Native MCP Server

by patrickkabwe

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

  1. Open Cursor Settings

  2. Look for an option called "Tools and integrations" and click on it

  3. Click on "New MCP Server"

  4. Configure:

    {
        "mcpServers": {
            "react-native-upgrader-mcp": {
                "command": "npx",
                "args": ["-y", "react-native-upgrader-mcp"]
            }
        }
    }
  5. Restart Cursor

VS Code

  1. Install MCP extension (e.g., "MCP Server Manager")

  2. Configure:

    {
        "mcp.servers": {
            "react-native-upgrader-mcp": {
                "command": "npx",
                "args": ["-y", "react-native-upgrader-mcp"]
            }
        }
    }

🛠️ Tools

  • get-stable-version - Get latest stable version

  • get-react-native-diff - Generate upgrade diff between versions

  • get-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

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Submit a pull request

đź“„ License

MIT License

Available Tools

2 tools
get-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:

  1. Update all dependencies to compatible versions

  2. Apply configuration changes while preserving custom settings and user defined code

  3. Handle binary file updates appropriately

  4. Maintain existing customizations in native code and ts/js files

  5. Update build tools versions (Gradle, CocoaPods, etc) with the correct version from the diff using specific cmds

  6. Preserve any local modifications to template files

  7. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromVersionNoThe version of React Native to get the diff from
toVersionYesThe version of React Native to get the diff to

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness2/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 2 tool updates
    • First observedget-react-native-diff
    • First observedget-react-native-stable-version

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness2/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Provides 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.
    13
    63
    59
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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
    -
  • F
    license
    A
    quality
    D
    maintenance
    An 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.
    13
    4
    -
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with accurate, version-aware documentation for React Native, Expo, React Navigation, and Ignite by automatically detecting project dependencies and fetching matching documentation.
    12
    MIT

Latest Blog Posts

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