npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@paramhq/tsx-query

v3.1.1

Published

Semantic React/TSX analysis MCP server for AI coding assistants. Save 70-90% tokens vs grep.

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

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 |

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT - see LICENSE