Skip to main content
Glama
README.md
# react-perf-mcp

An MCP server that runs **parallel AI agents** to analyze your React components for performance issues. Works in Claude Code, Cursor, or any MCP-compatible client.

## How it works

Most code review tools send your code to a single LLM and ask for a general review. `react-perf-mcp` runs four specialized agents **in parallel**, each focused on a specific performance domain:

| Agent | Analyzes |
|-------|----------|
| **RenderAgent** | Unnecessary re-renders, inline objects/functions, missing `React.memo` |
| **MemoAgent** | Incorrect `useMemo`/`useCallback` usage, missing or over-memoization |
| **BundleAgent** | Heavy imports, missing `React.lazy`, full-library imports vs named imports |
| **ProfilerAgent** | Cascading re-renders, missing virtualization, state co-location, `Suspense` |

All agents run in parallel and are aware of your **project context** (React version, bundler, Redux usage) and your team's **custom rules** via `.react-perf.json`.

## Setup

```bash
npx react-perf-mcp init
```

The setup wizard will:
1. Ask for your [Anthropic API key](https://console.anthropic.com/settings/keys)
2. Auto-detect Claude Desktop, Claude Code, and Cursor
3. Write the MCP server config to the right place

### Manual config

Add to your MCP client config (e.g. `~/.claude/settings.json` for Claude Code):

```json
{
  "mcpServers": {
    "react-perf": {
      "command": "npx",
      "args": ["react-perf-mcp"],
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-..."
      }
    }
  }
}
```

## Usage

Once configured, talk to your MCP client naturally:

```
review the performance of src/components/Cart.tsx
```

```
analyze this component for re-render issues:
[paste code]
```

### Available tools

| Tool | Description |
|------|-------------|
| `review_file(path)` | Read a file from disk and analyze it |
| `review_code(code, filePath?)` | Analyze a code snippet directly |

## Team config

Add a `.react-perf.json` to your project root to customize the agents' standards:

```json
{
  "rules": {
    "memo": "always for list items and components receiving callbacks",
    "bundleLimit": "200kb per chunk",
    "lazyLoad": "required for routes and heavy third-party components"
  }
}
```

This is similar to `.eslintrc` — commit it so your whole team gets consistent suggestions.

## Requirements

- Node.js 18+
- Anthropic API key ([get one here](https://console.anthropic.com/settings/keys))

## Contributing

Issues and PRs welcome. Each agent lives in `src/agents/` — adding a new one is straightforward.

## License

MIT

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation4/5

The two tools are clearly differentiated by input: one accepts a code snippet directly, the other reads a file from disk. While they share the same review purpose, the distinct input mechanisms prevent meaningful confusion.

Naming Consistency5/5

Both tool names follow the consistent verb_noun pattern (review_code, review_file), making the naming predictable and easy to understand.

Tool Count3/5

With only two tools, the server feels minimal for its intended scope. The count is borderline but acceptable for a focused performance-review utility, though it could benefit from additional entry points.

Completeness3/5

The tool surface covers two common input modes but lacks broader workflow support, such as analyzing a project directory, comparing branches, or generating reports. Agents may need to work around these missing capabilities.

Maintenance

ActivityInactive
ResponsivenessNo issues