Command line and MCP server
The py-code-org package runs the same "who uses this?" lookups from your terminal, and gives AI coding tools the same answers over MCP. It has no dependencies and needs Python 3.9 or newer.
From the terminal
Run it without installing, with uv:
$ uvx py-code-org who-uses httpx.AsyncClient --limit 3
26,709 packages use httpx.AsyncClient (index built 2026-11-13)
# Package Version Downloads/mo Files First use
1 google-genai 3.2.0 124.9M 8 google/genai/_api_client.py:735
2 google-cloud-aiplatform 2.9.0 70.8M 3 agentplatform/_genai/_runtimes_utils.py:1810
3 sentry-sdk 2.75.0 66.7M 1 sentry_sdk/integrations/httpx.py:28
Or install the py-code command with pipx install py-code-org or uv tool install py-code-org.
py-code who-uses NAME: packages that import or call a name, most downloaded first, with the file and line of the first uses. Add--min-downloads 1000000to keep only popular packages.py-code project NAME: what a PyPI project imports, the modules it provides and how many packages import it.py-code names MODULE: every indexed name under a module, such asnumpy, and how many packages use each.--jsonon any of them prints JSON for scripts.
Names are case-sensitive and written as the code imports them: requests.Session, numpy.linalg.norm, PIL.Image. If a name is not found, the tool suggests the closest indexed spelling.
In Claude Code, Cursor and other AI coding tools
py-code-org mcp runs an MCP server with three read-only tools: who_uses, project_imports and module_names. Your coding assistant can then check who calls a function before it renames or removes it.
Claude Code:
$ claude mcp add py-code -- uvx py-code-org mcp
Cursor: add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project. Claude Desktop and other tools that read an mcpServers file use the same block.
{
"mcpServers": {
"py-code": { "command": "uvx", "args": ["py-code-org", "mcp"] }
}
}
Then ask, for example: "Which popular packages call requests.Session.merge_environment_settings?"
What it sends
Each lookup reads two small static JSON files from data.py-code.org, the same files this site uses: a manifest, then the file that holds the name. Only the name you look up is sent. The index is rebuilt weekly. The source is MIT-licensed.
For bulk questions across all packages, query the Parquet tables with SQL instead.