tsx-query

tsx-query

Semantic React/TSX analysis MCP server that saves 70-90% tokens by using AST to retrieve precise component usages, prop flow, and state update information for AI coding assistants.

Category
Visit Server

README

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%

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured