Skip to main content
The Para Migration MCP Server is an AI-powered Model Context Protocol (MCP) server that automates wallet provider migrations to Para. Instead of manually rewriting providers, hooks, imports, and configuration, you can run the migration through your AI coding assistant and have it handle the entire process atomically — all changes succeed together or roll back automatically. It works with Claude Code, Cursor, and Claude Desktop, and supports migrations from Privy, Reown (AppKit), Web3Modal, and WalletConnect.

Supported Migration Paths

Source ProviderStrategyDescription
Privyprivy-to-paraReplaces PrivyProvider, usePrivy, useWallets, and related hooks
Reown / AppKitreown-to-paraReplaces AppKit, useAppKit, useAppKitAccount, and related hooks
Web3Modalweb3modal-to-paraReplaces Web3Modal, useWeb3Modal, useWeb3ModalAccount, and related hooks
WalletConnectwalletconnect-to-paraReplaces WalletConnect provider and connector configuration

Prerequisites

Before starting, make sure you have:

Installation

Add the Migration MCP server to your AI tool of choice:
Run the following command in your terminal:
claude mcp add para-migration -- npx -y para-migration-mcp
Restart Claude Code to pick up the new server.

Step-by-Step Migration

Once the MCP server is connected, walk through these steps in your AI tool’s chat interface. Each step corresponds to an MCP tool that runs automatically behind the scenes.
1

Analyze Your Project

Start by asking your AI assistant to analyze your project:
Analyze my project at ./my-app for wallet provider usage
This runs the analyze_project tool, which scans your project’s dependencies, imports, provider components, hooks, and styles. It returns:
  • The detected wallet provider (Privy, Reown, Web3Modal, or WalletConnect)
  • The recommended migration strategy
  • A summary of all provider-related code found (hooks, providers, imports)
If your project uses a non-standard structure, you can also specify the path to your package.json directly.
2

Check Wagmi Compatibility

Para maintains full Wagmi compatibility, so your existing Wagmi hooks continue to work after migration. Verify this by asking:
Check Wagmi hook compatibility for my project at ./my-app
This runs check_compatibility and reports which Wagmi hooks are in use and whether they’re compatible with Para’s provider.
3

Preview the Migration (Dry Run)

Before making any changes, preview what the migration will do:
Run a dry run migration from Privy to Para for my project at ./my-app
This runs execute_atomic_migration with dryRun: true. It returns a detailed list of every operation that would be performed — dependency removals, import replacements, provider swaps, hook updates, and CSS additions — without actually modifying any files.Review the output to make sure you’re comfortable with the changes.
4

Execute the Migration

When you’re ready, execute the migration:
Execute the atomic migration from Privy to Para for my project at ./my-app
This runs execute_atomic_migration with dryRun: false. The migration is atomic — either all operations succeed together, or everything rolls back to the original state. You’ll never be left with a half-migrated project.The tool will:
  1. Remove old wallet provider imports
  2. Add Para SDK imports
  3. Replace provider components with ParaProvider
  4. Update hook usages (e.g., usePrivy becomes useAccount)
  5. Add Para CSS imports to your entry point
Make sure your project is committed to version control before running the migration, so you can easily review the diff afterward.
5

Validate the Migration

After the migration completes, run validation to catch the issues that cause 90% of migration failures:
Validate my Para migration at ./my-app
This runs validate_para_migration and checks for five critical issues:
  1. ParaModal missing<ParaModal /> must be rendered inside <ParaProvider>
  2. CSS imports missing@getpara/react-sdk/styles.css must be imported in your entry point
  3. Environment enum — Must use Environment.DEVELOPMENT (not the string "development")
  4. Old dependencies present — Old provider packages should be fully removed
  5. Para dependencies missing@getpara/react-sdk must be installed
You can also check the overall migration completion percentage:
Check migration completion state for ./my-app
This runs validate_migration_state and returns a breakdown of how much of the migration is complete across dependencies, imports, providers, hooks, and styles.
6

Install Updated Dependencies

Based on the validation output, update your dependencies:
Terminal
# Remove old provider packages
npm uninstall @privy-io/react-auth       # For Privy migrations
npm uninstall @reown/appkit @reown/appkit-adapter-wagmi  # For Reown migrations
npm uninstall @web3modal/wagmi            # For Web3Modal migrations

# Install Para SDK
npm install @getpara/react-sdk
Then run your project to verify everything works:
Terminal
npm run dev

Generating Additional Components

If you need to generate specific components after the migration, the MCP server includes several code generation tools you can invoke through your AI assistant.

Provider Component

Generate a production-ready ParaProvider component:
Generate a Para provider component with my API key and mainnet + polygon chains
This runs generate_provider_component and outputs a complete provider with ParaModal, CSS imports, and Environment enum already configured correctly.

Connect Button

Generate a styled wallet connection button:
Generate a Para connect button with Tailwind styling
Supported styling options: tailwind, styled-components, css-modules, or none.

CSS Imports

Auto-detect your project’s entry point and generate the correct CSS import:
Generate CSS imports for my project at ./my-app
This runs generate_css_imports and detects whether your entry point is main.tsx, layout.tsx, _app.tsx, or another file, then generates the appropriate import statement.

Hook Migration Examples

See before/after examples of how hooks change during migration:
Show me hook migration examples from Privy to Para
This runs generate_hooks_examples and shows the mapping for each hook — for example, usePrivy becomes useAccount, useWallets becomes useWallet, and so on. Supported source providers: privy, reown, walletconnect.

Next.js Layout with Styles

Generate a complete Next.js root layout with Para styles properly imported:
Generate a Next.js layout with Para styles
This runs generate_layout_with_styles and outputs a layout.tsx file with the @getpara/react-sdk/styles.css import in the correct location.

Common Issues

Missing ParaModal: The most common migration issue. <ParaModal /> must be rendered inside your <ParaProvider> component. Without it, the wallet connection modal won’t appear. The migration tool adds this automatically, but verify it’s present after migration.
Missing CSS Import: Para’s modal requires its stylesheet. Make sure @getpara/react-sdk/styles.css is imported in your application’s entry point (e.g., layout.tsx, main.tsx, or _app.tsx). Without it, the modal renders without styling.
Environment String vs Enum: Use the Environment enum from @getpara/react-sdk rather than a plain string. For example, use Environment.DEVELOPMENT instead of "development". Using a string will cause runtime errors.

Tool Reference

Full parameter documentation for all 14 MCP tools provided by the migration server.
analyze_project — Analyze a project to detect wallet provider usage and prepare a migration plan.
ParameterTypeRequiredDescription
projectPathstringYesPath to the project directory
packageJsonPathstringNoPath to package.json (auto-detected if omitted)

check_compatibility — Check compatibility between current Wagmi hooks and Para.
ParameterTypeRequiredDescription
projectPathstringYesPath to the project directory

validate_migration — Validate migration setup and check for common issues.
ParameterTypeRequiredDescription
projectPathstringYesPath to the project directory
configobjectNoMigration configuration to validate against

validate_para_migration — Validate the 5 critical issues that cause 90% of migration failures.
ParameterTypeRequiredDescription
projectPathstringYesPath to the project directory

validate_migration_state — Get migration completion percentage across dependencies, imports, providers, hooks, and styles.
ParameterTypeRequiredDescription
projectPathstringYesPath to the project directory
execute_atomic_migration — Execute a complete atomic migration with automatic rollback on failure.
ParameterTypeRequiredDefaultDescription
projectPathstringYesPath to the project directory
strategyenumYesMigration strategy: privy-to-para, reown-to-para, web3modal-to-para, or walletconnect-to-para
dryRunbooleanNofalsePreview changes without modifying files
generate_migration_config — Generate a Para configuration object.
ParameterTypeRequiredDefaultDescription
paraApiKeystringYesYour Para API key
environmentenumNo"development""development" or "production"
supportedChainsnumber[]No[1]Chain IDs to support (e.g., [1, 137] for mainnet + Polygon)
walletsstring[]No["METAMASK", "COINBASE", "WALLETCONNECT"]External wallets to enable: METAMASK, COINBASE, WALLETCONNECT, RAINBOW

generate_provider_component — Generate a React provider component for Para integration.
ParameterTypeRequiredDefaultDescription
configobjectYesMigration configuration (from generate_migration_config)
typescriptbooleanNotrueGenerate TypeScript or JavaScript

generate_connect_button — Generate a styled connect button component.
ParameterTypeRequiredDefaultDescription
stylingenumNo"tailwind"Styling approach: none, tailwind, styled-components, or css-modules
typescriptbooleanNotrueGenerate TypeScript or JavaScript

generate_css_imports — Generate CSS import statements for the correct entry point.
ParameterTypeRequiredDefaultDescription
projectPathstringYesPath to the project directory
typescriptbooleanNotrueGenerate TypeScript or JavaScript

generate_layout_with_styles — Generate a Next.js layout with Para SDK styles properly imported.
ParameterTypeRequiredDefaultDescription
typescriptbooleanNotrueGenerate TypeScript or JavaScript

generate_hooks_examples — Generate before/after hook usage examples showing migration patterns.
ParameterTypeRequiredDefaultDescription
fromProviderenumNo"privy"Source provider: privy, reown, or walletconnect
typescriptbooleanNotrueGenerate TypeScript or JavaScript
create_migration_guide — Generate a step-by-step migration guide tailored to your project.
ParameterTypeRequiredDescription
projectNamestringYesName of the project being migrated
currentSetupstringNoDescription of the current wallet provider setup
targetConfigobjectNoTarget Para configuration

quick_migration_mode — Generate an ultra-fast development configuration with timeouts and fallbacks.
ParameterTypeRequiredDescription
configobjectYesBase migration configuration

Next Steps