MCPcopy Index your code
hub / github.com/ClickHouse/clickhouse-js

github.com/ClickHouse/clickhouse-js @client-1.23.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release client-1.23.0 ↗ · + Follow
1,425 symbols 6,025 edges 591 files 118 documented · 8%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ClickHouse JS client

NPM Version

NPM Downloads

About

Official JS client for ClickHouse, written purely in TypeScript, thoroughly tested with actual ClickHouse versions.

The client has zero external dependencies and is optimized for maximum performance.

The repository consists of four packages:

  • @clickhouse/client - a version of the client designed for Node.js platform only. It is built on top of HTTP and Stream APIs; supports streaming for both selects and inserts.
  • @clickhouse/client-web - a version of the client built on top of Fetch and Web Streams APIs; supports streaming for selects. Compatible with Chrome/Firefox browsers and Cloudflare workers.
  • @clickhouse/client-common - shared common types and the base framework for building a custom client implementation.
  • @clickhouse/rowbinary - a library for reading (and soon writing) ClickHouse RowBinary format.

Installation

Node.js client:

npm i @clickhouse/client

Web client (browsers, Cloudflare workers):

npm i @clickhouse/client-web

Environment requirements

Node.js

Node.js must be available in the environment to run the Node.js client. The client is compatible with all the maintained Node.js releases.

Node.js version Supported?
26.x
24.x
22.x
20.x

TypeScript

If using TypeScript, version 4.5 or above is required to enable inline import and export syntax.

Compatibility with ClickHouse

Client version ClickHouse
1.12.0+ 24.8+

The client may work with older versions too; however, this is best-effort support and is not guaranteed.

Quick start

import { createClient } from "@clickhouse/client"; // or '@clickhouse/client-web'

const client = createClient({
  url: process.env.CLICKHOUSE_URL ?? "http://localhost:8123",
  username: process.env.CLICKHOUSE_USER ?? "default",
  password: process.env.CLICKHOUSE_PASSWORD ?? "",
});

const resultSet = await client.query({
  query: "SELECT * FROM system.tables",
  format: "JSONEachRow",
});

const tables = await resultSet.json();
console.log(tables);

await client.close();

See more examples in the examples directory.

Documentation

See the ClickHouse website for the full documentation.

Changelog

Each package keeps its own changelog:

History through @clickhouse/client 1.23.0 lives in the now-frozen repository-wide CHANGELOG.md.

AI Agent Skills

This repository contains agent skills for working with the client:

  • clickhouse-js-node-troubleshooting — troubleshooting playbook for the Node.js client.

Install via CLI:

# per project
npx skills add ClickHouse/clickhouse-js
# globally
npx skills add ClickHouse/clickhouse-js -g

Or ask your agent to install it for you:

install agent skills from ClickHouse/clickhouse-js

Usage examples

We have a wide range of examples, aiming to cover various scenarios of client usage. The overview is available in the examples README.

Contact us

If you have any questions or need help, feel free to reach out to us in the Community Slack (#clickhouse-js channel) or via GitHub issues.

Contributing

Check out our contributing guide.

If you'd like to build a client for an alternative runtime (such as Bun or Cloudflare Workers) or an alternative protocol (such as the native ClickHouse protocol or gRPC over a proxy), see Building specialized clients for alternative runtimes and protocols.

Extension points exported contracts — how you extend this code

Logger (Interface)
(no doc) [13 implementers]
packages/client-common/src/logger.ts
TransportClient (Interface)
(no doc) [6 implementers]
benchmarks/transport/clients.ts
Row (Interface)
(no doc) [2 implementers]
examples/node/performance/async_insert_without_waiting.ts
Row (Interface)
(no doc) [2 implementers]
benchmarks/leaks/memory_leak_arrays.ts
ParseResult (Interface)
(no doc) [1 implementers]
packages/datatype-parser/src/parser.ts
BasicTLSOptions (Interface)
(no doc)
packages/client-node/src/config.ts
RunExecResult (Interface)
(no doc)
packages/client-web/src/connection/web_connection.ts
ParsedArgs (Interface)
(no doc)
tests/clickhouse-test-runner/src/args.ts

Core symbols most depended-on inside this repo

query
called by 312
skills/clickhouse-js-node-rowbinary/tests/clickhouse.ts
query
called by 305
packages/client-common/src/connection.ts
json
called by 268
packages/client-common/src/result.ts
readInt32
called by 247
skills/clickhouse-js-node-rowbinary/src/readers/integers.ts
command
called by 183
packages/client-common/src/connection.ts
from
called by 155
packages/client-common/src/settings.ts
createClient
called by 150
packages/client-web/src/client.ts
query
called by 136
benchmarks/transport/clients.ts

Shape

Function 904
Method 289
Class 115
Interface 115
Enum 2

Languages

TypeScript96%
C++4%
Python1%

Modules by API surface

packages/datatype-parser/src/parser.ts35 symbols
packages/client-common/src/parse/column_types.ts28 symbols
packages/datatype-parser/reference-cpp-extracted-parser/src/parser.cpp27 symbols
packages/client-common/src/logger.ts23 symbols
packages/client-common/src/client.ts22 symbols
tests/clickhouse-test-runner/src/tsv-serialize.ts21 symbols
examples/node/performance/insert_streaming_with_backpressure.ts21 symbols
packages/client-node/src/connection/socket_pool.ts20 symbols
packages/client-node/src/connection/node_base_connection.ts19 symbols
packages/client-common/src/config.ts16 symbols
packages/client-common/__tests__/unit/tracing.test.ts16 symbols
benchmarks/transport/clients.ts16 symbols

For agents

$ claude mcp add clickhouse-js \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact