BydbQL Plugin Packaging
The BanyanDB MCP server is also packaged as a Claude/Codex plugin so a host model can generate, validate, and run read-only BydbQL. This page describes the plugin layout, the build it requires before it can load, and how the manifests are kept in sync.
Layout
| Path | Purpose |
|---|---|
.claude-plugin/plugin.json |
Claude Code plugin manifest. |
.claude-plugin/marketplace.json |
Claude Code plugin marketplace catalog. |
.codex-plugin/plugin.json |
Codex plugin manifest. |
.agents/plugins/marketplace.json |
Codex plugin marketplace catalog. |
.mcp.json |
MCP server definition referenced by both manifests. |
skills/bydbql/ |
The bydbql skill and its references/. |
mcp/ |
The MCP server source, the TypeScript build output (dist/), and the bydbql-parse validator tool. |
Install from a GitHub marketplace
The repository includes both a Codex marketplace at .agents/plugins/marketplace.json
and a Claude Code marketplace at .claude-plugin/marketplace.json.
Both can install the plugin directly from GitHub; users do not need to
clone the repository just to make the plugin appear in the plugin directory.
Claude Code
# Direct install (no marketplace needed):
/plugin install apache/skywalking-banyandb
# Or add the marketplace first, then install from it:
/plugin marketplace add apache/skywalking-banyandb
/plugin install banyandb-bydbql@banyandb
Codex
codex plugin marketplace add apache/skywalking-banyandb --ref main
codex plugin add banyandb-bydbql@banyandb
For a fork or development branch, replace the repository and ref:
# Claude Code
/plugin marketplace add JophieQu/skywalking-banyandb --ref <branch>
/plugin install banyandb-bydbql@banyandb
# Codex
codex plugin marketplace add JophieQu/skywalking-banyandb --ref <branch>
codex plugin add banyandb-bydbql@banyandb
Both marketplace entries point at ./ because the plugin manifest, MCP
configuration, skills, and MCP source live at the repository root.
This remote install flow publishes the plugin to Claude Code and Codex. The current MCP runtime is source-based, so starting the MCP tools still requires the build artifacts described below to exist in the installed plugin copy.
Required build before loading
Both the MCP server (mcp/dist/index.js) and the BydbQL parse validator
(mcp/tools/bin/bydbql-parse) are build artifacts. dist/ and tools/bin/ are
git-ignored, so a fresh checkout has neither. Build both before loading the
plugin or starting the server:
cd mcp
npm install
npm run build:all # equivalent to: npm run build && npm run build:validator
npm run buildcompiles TypeScript intomcp/dist/.npm run build:validatorcompiles the Go validator intomcp/tools/bin/bydbql-parse(requires the Go toolchain).
validate_bydbql invokes the prebuilt bydbql-parse binary. It intentionally
does not fall back to go run at query time, so the plugin’s runtime does not
depend on a Go toolchain and does not pay a cold-compile cost inside the
validation timeout. If the binary is missing, validate_bydbql returns an
actionable error asking you to run npm run build:validator rather than silently
recompiling.
.mcp.json working directory
{
"mcpServers": {
"banyandb": {
"cwd": ".",
"command": "node",
"args": ["./mcp/dist/index.js"],
"env": { "TRANSPORT": "stdio", "BANYANDB_ADDRESS": "localhost:17900" }
}
}
}
Both Claude Code and Codex resolve the plugin root to the repository root
(whether installed via marketplace or direct GitHub install). The MCP loader
resolves cwd: "." relative to that installed plugin root, then resolves
./mcp/dist/index.js from the same directory. This means the checked-out layout
and installed layout are expected to match: .mcp.json, mcp/dist/,
mcp/tools/bin/, and skills/ all live under the plugin root. If you manually
copy only part of the repository, keep that layout or update the relative paths
in .mcp.json.
Keeping the manifests in sync
.claude-plugin/plugin.json and .codex-plugin/plugin.json are intentionally
identical except for the version field — the Codex manifest carries a
+codex.<timestamp> build-metadata suffix. make -C mcp test runs
npm run check:plugin-manifests, which fails if any non-version field drifts or
if the Codex version does not use the Claude version as its base. When you change
one manifest (description, keywords, interface, skills, mcpServers, etc.),
mirror the exact change into the other and run that check.
The marketplace catalogs (.claude-plugin/marketplace.json and
.agents/plugins/marketplace.json) serve the same plugin under their respective
platform formats and do not need to be field-identical.