Skip to main content
Glama

tsx-query

Semantic React/TSX analysis MCP server for AI coding assistants.

Save 70-90% tokens compared to grep + file reads.

npm version npm downloads License: MIT

Why tsx-query?

LLMs waste tokens on grep + file reads. tsx-query uses semantic AST analysis to return precisely what you need.

Query

grep + read

tsx-query

Savings

Find Button usages

~15,000 tokens

~800 tokens

95%

Trace prop flow (5 levels)

~75,000 tokens

~3,000 tokens

96%

Find all setState calls

~30,000 tokens

~1,500 tokens

95%

Analyze re-render triggers

~40,000 tokens

~2,000 tokens

95%

Related MCP server: Component Library MCP

Installation

npm install -g @paramhq/tsx-query

Quick Start

For Claude Code

claude mcp add tsx-query -- npx -y @paramhq/tsx-query

Or manually add to your MCP config (~/.claude/mcp.json or project .mcp.json):

{
  "mcpServers": {
    "tsx-query": {
      "command": "npx",
      "args": ["-y", "@paramhq/tsx-query"]
    }
  }
}

For Other MCP Clients

{
  "command": "npx",
  "args": ["-y", "@paramhq/tsx-query"]
}

From Source

git clone https://github.com/paramhq/tsx-query.git
cd tsx-query
npm install
npm run build
npm run mcp

High-Value Tools

1. find_component_usages

Find all JSX usages of a component with powerful filtering.

{
  "projectPath": "/path/to/project",
  "componentName": "Button",
  "withProp": "onClick",
  "hasInlineHandler": true
}

Filters:

  • withProp / withoutProp - Filter by prop existence

  • withPropValue - Filter by prop value (exact or regex)

  • hasInlineHandler - Find inline arrow handlers

  • hasSpreadProps - Find spread props usage

  • onlyConditional - Only conditional renders

Returns: File locations, props with values, parent component, code snippets.

2. trace_prop_flow

Trace a prop through the component hierarchy. Replaces reading 5-10 files manually.

{
  "projectPath": "/path/to/project",
  "propName": "userId",
  "startFile": "src/components/UserDetails.tsx",
  "direction": "up"
}

Returns: Complete prop path through components with transformations (renamed, destructured, spread).

3. trace_state_updates

Find all locations that update a state variable. Understand state flow without reading handlers.

{
  "projectPath": "/path/to/project",
  "filePath": "src/components/UserForm.tsx",
  "stateName": "formData"
}

Returns: All setState calls with context (handler, useEffect, inline), trigger events, async/conditional flags.

4. find_render_triggers

Analyze what causes a component to re-render with optimization suggestions.

{
  "projectPath": "/path/to/project",
  "filePath": "src/components/UserProfile.tsx",
  "componentName": "UserProfile"
}

Returns: Props, state, context, hooks that trigger renders + memoization status + suggestions.

5. analyze_imports

Analyze import/export relationships with cached import graph.

{
  "projectPath": "/path/to/project",
  "filePath": "src/components/Button/index.ts",
  "direction": "importedBy"
}

Returns: What imports this file, unused exports, circular dependencies.

Additional Tools

Tool

Purpose

find_hook_usages

Find all usages of a hook across codebase

analyze_hook_deps

Find missing/unnecessary hook dependencies

analyze_file

Analyze single file structure

list_components

List all JSX in a file

clear_cache

Clear project cache after external changes

Roadmap

  • trace_event_handler - Trace callback chains from event to side effects

  • trace_context_usage - Map Context providers to consumers

Why Use Over Grep?

Grep Limitation

tsx-query Solution

Finds "Button" in comments/strings

Only finds JSX <Button> usages

Can't filter by prop values

withPropValue: { prop: "variant", value: "danger" }

Can't detect aliased imports

Handles import { Button as Btn }

Can't trace prop flow

Full cross-file prop tracing

Reads entire files

Returns only relevant data

Built With

Author

Sukhdev - @paramhq

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT - see LICENSE

Available Tools

10 tools
analyze_fileB

Analyze a single React/TSX file. Returns components, hooks, imports, exports, and directive.

Inputs: filePath (required).

analyze_hook_depsA

Analyze React hook dependencies in a file. Finds missing dependencies (bugs), unnecessary dependencies, async callbacks in useEffect, and cleanup functions. Essential for catching stale closure bugs.

Inputs: filePath (required), hookTypes, componentName.

analyze_importsA

Analyze import/export relationships for a file. Find what imports this file (importedBy), detect unused exports, and circular dependencies. Uses cached import graph for fast subsequent queries. Returns summary + limited results.

Inputs: filePath (required), projectPath (required), limit, exclude, +4 more.

clear_cacheA

Clear the project and import graph caches. Use this after making changes to files outside the MCP to ensure fresh analysis.

Inputs: projectPath.

find_component_usagesA

Find all JSX usages of a component across the codebase. Returns summary (totalUsages, filesCount), distribution by path, and limited usages with detailed prop info. Supports filtering by props (withProp, withoutProp, withPropValue), patterns (hasInlineHandler, hasSpreadProps), and conditional rendering.

Inputs: projectPath (required), componentName (required), limit, exclude, +10 more.

find_hook_usagesA

Find all usages of a React hook across the codebase. Returns summary (totalUsages, filesCount), distribution by path, and limited usages (default: 10). Use filePath/component filters to drill down.

Inputs: hookName (required), projectPath (required), limit, exclude, +3 more.

find_render_triggersA

Analyze what triggers a component to re-render: props, state, context, hooks. Includes memoization status and optimization suggestions. Helps understand re-render causes without reading component internals.

Inputs: filePath (required), projectPath (required), componentName (required), includeParentAnalysis.

list_componentsA

List all JSX components in a file with their locations, props, and children info.

Inputs: filePath (required).

trace_prop_flowA

Trace a prop through the component hierarchy. Direction "up" finds where the value comes from, "down" finds where it propagates to children. Uses import graph for cross-file tracing.

Inputs: propName (required), direction (required), startFile (required), projectPath (required), +3 more.

trace_state_updatesA

Find all locations that update a state variable. Returns setter calls with context (handler, useEffect, inline), trigger events, and whether updates are async/conditional. Helps understand state flow without reading entire files.

Inputs: filePath (required), stateName (required), projectPath (required), limit, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 10 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (state tracing, component usages, hook deps, imports, etc.). A minor overlap exists between analyze_file and list_components, as both can return component information, but the descriptions clarify the difference between broad file analysis and focused component listing.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern with snake_case (trace_, find_, analyze_, list_, clear_). The verbs vary appropriately by action, and naming is predictable across the set.

    Tool Count5/5

    With 10 tools, the set is well-scoped for a React/TSX analysis server. Each tool covers a distinct aspect of code analysis, and the count feels neither sparse nor bloated.

    Completeness4/5

    The surface covers major analysis needs: state updates, component/hook usage, hook dependencies, imports, render triggers, prop flow, and file-level component listing. Minor gaps exist, such as no dedicated context provider analysis or type-level queries, but agents can work around these with existing tools.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Standalone MCP server for code structure analysis using tree-sitter. Directory trees, symbol definitions, and call graphs without reading raw source files. Supports Rust, Python, Go, Java, TypeScript, Fortran, JavaScript, C/C++, and C#. Benchmarked up to 68% fewer tokens vs native tools.
      7
      Apache 2.0
    • A
      license
      B
      quality
      D
      maintenance
      An MCP server that scans React and Vue projects, extracts component metadata (props, slots, events, imports, usage), and exposes it to AI coding agents via structured tools.
      7
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Token-efficient MCP server for multi-language project analysis (Java, TypeScript, JavaScript, Markdown, Python) with plugins, semantic search, and static analysis.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Universal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.
      18
      35 npm
      MIT