
One MCP stdio endpoint for a whole toolchain — GitHub, GitLab, cloud, mail, browser and research
One MCP stdio endpoint for a whole toolchain — GitHub, GitLab, cloud, mail, browser and research tools — with capability-gated dispatch, a machine-checked ABI, and cartridges fetched on demand from boj-server-cartridges. Zero runtime dependencies.
// SPDX-License-Identifier: CC-BY-SA-4.0 // SPDX-FileCopyrightText: 2025-2026 Jonathan D.A. Jewell [email protected] = BoJ Server :idprefix: :idseparator: -
One MCP endpoint for the WHOLE toolchain — GitHub, GitLab, Cloudflare, Vercel, Verpex, Gmail, Calendar, browser automation, research, ML, multi-agent coordination, and a large catalogue of pluggable domain cartridges, all reachable through a single zero-dependency stdio bridge.
link:LICENSE[image:https://img.shields.io/badge/License-MPL_2.0-blue.svg[License: MPL-2.0]] https://www.npmjs.com/package/@hyperpolymath/boj-server[image:https://img.shields.io/npm/v/@hyperpolymath/boj-server?logo=npm[npm]] https://www.bestpractices.dev/en/projects/new?repo_url=https://github.com/hyperpolymath/boj-server[image:https://img.shields.io/badge/OpenSSF-Best_Practices-green?logo=opensourcesecurity[OpenSSF Best Practices]] https://scorecard.dev/viewer/?uri=github.com/hyperpolymath/boj-server[image:https://api.scorecard.dev/projects/github.com/hyperpolymath/boj-server/badge[OpenSSF Scorecard]] https://archive.softwareheritage.org/browse/origin/?origin_url=https://github.com/hyperpolymath/boj-server[image:https://archive.softwareheritage.org/badge/origin/https://github.com/hyperpolymath/boj-server/[Software Heritage]] https://sonarcloud.io/summary/new_code?id=hyperpolymath_boj-server[image:https://sonarcloud.io/api/project_badges/quality_gate?project=hyperpolymath_boj-server[Quality gate]]
What it is, honestly: BoJ exposes 68 MCP tools today (45 boj++_*++ {plus} 23 coord++_*++) over stdio with zero runtime dependencies. It catalogues 125 domain cartridges, but most of those are an inspectable catalogue, not live services — a cartridge only performs real actions when its backend process is running and you supply the right credentials. The bridge is fully inspectable offline; side-effectful tools return a structured ++{++error, hint} until their backend is up. See link:#cartridges[Cartridges] for the full story.
'''''
== Contents
'''''
== Features
boj++_*++ (5 core discovery/dispatch {plus} explicit high-frequency tools) and 23 coord++_*++ multi-agent coordination tools.boj++_++cartridge++_++invoke reaches any catalogued cartridge; explicit boj++_<++domain++>_<++verb++>++ tools exist for the highest-frequency operations.local-coord-mcp lets several Claude / Gemini / Codex sessions on one machine discover each other, claim tasks without collision, and run under a master/journeyman/apprentice supervision model.boj++_++health, boj++_++menu, boj++_++cartridges, and boj++_++cartridge++_++info answer from an offline manifest so clients can introspect the server without any backend running.boj:// resources and reusable prompts (audit-repo, convene-cluster, deploy-with-dns-ssl, summarize-channel, triage-issues, proof-status).'''''
== Install
BoJ ships as an MCP server over stdio. The published npm package (@hyperpolymath/boj-server) has zero runtime dependencies, so no install step is ever required regardless of runtime.
Most cartridges call the BoJ REST backend on http://localhost:7700. Without it, the server is still fully inspectable; side-effectful tools return ++{++error, hint}. See link:#backend[Backend].
=== Claude Code (CLI)
=== Claude Desktop
Edit claude++_++desktop++_++config.json:
~/Library/Application Support/Claude/claude++_++desktop++_++config.json%APPDATA%++\++Claude++\++claude++_++desktop++_++config.json~/.config/Claude/claude++_++desktop++_++config.jsonRestart Claude Desktop after saving.
=== npx (any MCP client)
The minimum stdio spec is command: npx, args: ++[++"-y", "@hyperpolymath/boj-server@latest"++]++. Optional env: BOJ++_++URL (default http://localhost:7700). This works with VS Code / Copilot, Cursor, Cline, Windsurf, Continue.dev, Zed, and the Gemini CLI — point each client's MCP config at that command. This repo's .mcp.json is a working reference config.
[[deno--bun--node-from-a-clone]] === Deno / Bun / Node (from a clone)
The bridge entrypoint is mcp-bridge/main.js and runs on any of the three runtimes with no install:
deno run -A /path/to/boj-server/mcp-bridge/main.js
bun /path/to/boj-server/mcp-bridge/main.js
'''''
== Quickstart
After install, ask your LLM: "Use the boj++_++health tool." You get ++{++status:"ok", uptime++_++s, version} when the backend is up, or a structured hint when it is offline.
To talk to the bridge directly over stdio, send newline-delimited JSON-RPC. Initialize, then list tools:
The initialize response reports protocol 2024-11-05 and server boj-server; tools/list returns 68 tool definitions (45 boj++_*++, 23 coord++_*++), each carrying a full description, JSON-Schema inputSchema/outputSchema, and MCP behaviour annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint).
Call a tool:
The server also implements resources/list (7 boj:// resources) and prompts/list.
'''''
== Capabilities overview
The bridge exposes 45 boj++_*++ tools and 23 coord++_*++ tools. A subset of cartridges have explicit boj++_<++domain++>_<++verb++>++ tools for high-frequency operations; everything catalogued is reachable through boj++_++cartridge++_++invoke.
[cols=",,",options="header",]
|===
|Group |Tools |Examples
|Core discovery / dispatch |5 |boj++_++health, boj++_++menu, boj++_++cartridges, boj++_++cartridge++_++info, boj++_++cartridge++_++invoke
|GitHub |14 |boj++_++github++_++list++_++repos, boj++_++github++_++create++_++issue, boj++_++github++_++create++_++pr, boj++_++github++_++merge++_++pr, boj++_++github++_++search++_++code, boj++_++github++_++graphql
|GitLab |8 |boj++_++gitlab++_++list++_++projects, boj++_++gitlab++_++create++_++mr, boj++_++gitlab++_++list++_++pipelines, boj++_++gitlab++_++setup++_++mirror
|Browser (Firefox) |7 |boj++_++browser++_++navigate, boj++_++browser++_++click, boj++_++browser++_++type, boj++_++browser++_++read++_++page, boj++_++browser++_++screenshot, boj++_++browser++_++tabs, boj++_++browser++_++execute++_++js
|Cloud |3 |boj++_++cloud++_++cloudflare, boj++_++cloud++_++vercel, boj++_++cloud++_++verpex
|Communications |2 |boj++_++comms++_++gmail, boj++_++comms++_++calendar
|Research / code intel / ML / search |4 |boj++_++research, boj++_++codeseeker, boj++_++ml++_++huggingface, boj++_++search
|Coordination (local-coord-mcp) |23 |coord++_++register, coord++_++claim++_++task, coord++_++send, coord++_++review, coord++_++approve, coord++_++health
|===
Set BOJ++_++TOOL++_++SCOPE=core to advertise only the discovery surface; explicit boj++_<++domain++>_*++ tools remain reachable via boj++_++cartridge++_++invoke regardless. A CSV of prefixes (e.g. core,github,browser) advertises core plus named groups.
=== Multi-agent coordination (coord++_*++)
A localhost multi-agent bus (default 127.0.0.1:7745) lets multiple AI sessions on one machine discover each other, claim tasks without collision, and operate under supervision (master approves; journeyman executes; apprentice stays gated):
coord++_++register, coord++_++list++_++peers, coord++_++set++_++variant, coord++_++set++_++capabilities, coord++_++get++_++peer++_++capabilities.coord++_++send, coord++_++send++_++gated, coord++_++receive (Nickel-contract validation, opt-in strict mode).coord++_++claim++_++task with role-based watchdog TTL, coord++_++progress heartbeats, coord++_++sweep++_++watchdog, optional advisory paths for path++_++overlap warnings.coord++_++report++_++outcome, coord++_++get++_++affinities, coord++_++set++_++declared++_++affinities, coord++_++scan++_++suggestions (emits overclaim/drift advisory envelopes).coord++_++review, coord++_++review++_++entry, coord++_++approve, coord++_++reject, coord++_++promote++_++to++_++master, coord++_++transfer++_++master, plus coord++_++status / coord++_++health.Task-claim collision-freedom is a task-level guarantee, not a git-level lock: two journeymen claiming different tasks that touch the same file can still hit a vanilla merge conflict. The supported pattern is branch-per-claim {plus} per-peer worktree, advisory path-claims, and master-gated integration. The companion terminal UI lives in link:coord-tui/[coord-tui/] and at https://github.com/hyperpolymath/coord-tui[hyperpolymath/coord-tui].
'''''
== Cartridges
BoJ catalogues 125 cartridges across trust tiers (Teranga / Shield / Ayo). Be clear about what that means:
boj++_++menu lists the full catalogue, but most cartridges report available: false. They are entries describing a capability — its API base URL, auth model (often brokered through vault-mcp), and any native FFI path — not a running service.GITHUB++_++TOKEN, GITLAB++_++TOKEN, CF++_++API++_++TOKEN, OAuth tokens, …) or are brokered by the vault-mcp credential cartridge. boj++_++cartridge++_++info ++<++name++>++ returns the cartridge's manifest, including the exact auth requirement.++{++error, hint} telling you what's missing — they never silently fail.Number transparency: 125 is the single source of truth — it is the number of cartridge.json manifests in the canonical https://github.com/hyperpolymath/boj-server-cartridges[boj-server-cartridges] registry (the bundled cartridges/ tree was retired from this repo; populate a local cache with scripts/fetch-cartridges.sh + BOJ_CARTRIDGES_PATH) and what the live boj++_++menu reports. Every packaging file (package.json, jsr.json, smithery.yaml, ai-plugin.json, openapi.yaml, CITATION.cff) is reconciled to it. Of those 125, most are a catalogue entry rather than a live service — see the bullets above.
Catalogued domains include: git forges & code hosting, cloud platforms (Cloudflare, Vercel, AWS, GCP, DigitalOcean, Hetzner, Fly, Linode, Railway, Render), databases (PostgreSQL, MongoDB, Redis, Neo4j, ClickHouse, DuckDB, Turso, Supabase, Neon, …), containers & Kubernetes, CI/CD & observability (Buildkite, CircleCI, Hypatia, Grafana, Prometheus, Sentry), messaging (Slack, Discord, Telegram, Matrix), productivity (Notion, Linear, Jira, Obsidian, Zotero), ML/AI & coordination, browser & web automation, code intelligence & research, developer tooling (LSP/DAP/BSP, language & package registries), security & secrets, IaC & proof systems, and hyperpolymath-native admin cartridges.
'''''
== Backend
Most cartridges (GitHub/GitLab, cloud, ML, browser, CodeSeeker, etc.) call the BoJ REST API — an Elixir service on http://localhost:7700. Two modes:
[arabic]
. Run BoJ locally — clone this repo and just run (see link:docs/quickstarts/USER.adoc[docs/quickstarts/USER.adoc]). The REST API serves on port 7700.
. Inspectable mode only — without the backend, boj++_++health, boj++_++menu, boj++_++cartridges, and boj++_++cartridge++_++info still respond from the offline manifest, so any MCP client can introspect the server. Side-effectful tools return ++{++error, hint} until the backend is up.
Note on versions: when the backend is offline, boj++_++health may report a placeholder backend version (0.1.0) from the bundled offline manifest — this is the manifest's hardcoded value, not the npm package version (0.4.7). The MCP bridge itself reports 0.4.7 at initialize.
The coordination bus (local-coord-mcp) is a separate localhost service, default http://127.0.0.1:7745 (COORD++_++BACKEND++_++URL).
'''''
== Transports
Selected with BOJ++_++TRANSPORT (ADR-0013):
[cols=",",options="header",]
|===
|Value |Behaviour
|stdio (default) |Reads JSON-RPC from stdin, writes to stdout — how Claude Code / Desktop launch the bridge as a subprocess.
|http |Starts an HTTP{plus}SSE listener on BOJ++_++HTTP++_++PORT (default 7780) for remote / Workers / browser deployments. Binds 127.0.0.1 by default; BOJ++_++HTTP++_++AUTH=none is refused on a non-loopback bind.
|both |Runs stdio and HTTP simultaneously.
|===
HTTP auth: none (loopback only), or bearer against BOJ++_++HTTP++_++AUTH++_++TOKENS. mtls/oidc are planned, not yet implemented.
'''''
== Configuration
Key environment variables (full schema in link:glama.json[glama.json]):
[cols=",,",options="header",]
|===
|Variable |Default |Purpose
|BOJ++_++URL |http://localhost:7700 |Base URL for the BoJ REST backend.
|GITHUB++_++TOKEN |— |PAT for boj++_++github++_*++ tools.
|GITLAB++_++TOKEN / GITLAB++_++URL |— / https://gitlab.com |Token {plus} base URL for boj++_++gitlab++_*++ tools.
|BOJ++_++TOOL++_++SCOPE |full |full, core, or a CSV of domain prefixes (e.g. core,github,browser).
|BOJ++_++RATE++_++LIMIT |60 |Max tool calls per minute.
|BOJ++_++LOG++_++LEVEL |info |debug / info / warn / error / silent.
|BOJ++_++TRANSPORT |stdio |stdio / http / both.
|BOJ++_++HTTP++_++PORT / BOJ++_++HTTP++_++BIND |7780 / 127.0.0.1 |HTTP transport port and bind address.
|BOJ++_++HTTP++_++AUTH / BOJ++_++HTTP++_++AUTH++_++TOKENS |none / — |HTTP auth mode and accepted bearer tokens.
|COORD++_++BACKEND++_++URL |http://127.0.0.1:7745 |Coordination bus backend.
|COORD++_++REQUIRE++_++NICKEL |0 |1 enables strict Nickel-contract validation on gated envelopes.
|OTEL++_++EXPORTER++_++OTLP++_++ENDPOINT |— |When set, every tools/call emits an OTLP/JSON span to ++<++endpoint++>++/v1/traces.
|===
'''''
== Security
BOJ++_++RATE++_++LIMIT), request size caps, and prompt-injection detection with Unicode-confusable normalisation.BOJ++_++HTTP++_++AUTH=none is refused on any non-loopback bind; bearer auth is required for remote exposure.vault-mcp broker), never embedded in tool definitions.believe++_++me sites are isolated, documented axioms over the compiler's opaque Char/String primitives, tracked in link:PROOF-NEEDS.md[PROOF-NEEDS.md].Run the coherence tests:
Report vulnerabilities per link:SECURITY.md[SECURITY.md].
'''''
== License
'''''
[[contributing--links]] == Contributing & links
CONTRIBUTING.md] and link:CODE_OF_CONDUCT.md[CODE++_++OF++_++CONDUCT.md].CITATION.cff]; GitHub renders a "Cite this repository" button from it.Maintained by Jonathan D.A. Jewell.
This repo does not document an install step we could read. Check the README on GitHub.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/boj-server to learn what the "Boj Server" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
This server doesn't publish a machine-readable tool manifest, and it doesn't expose a public endpoint we could ask. Connect the server locally to see what it exposes.
Maintain this server? Claiming proves you own the listing and earns the last 4 points.
Claim this listingPaste this line near the top of your repository's README. The badge always renders the current score.
[](https://aiagentslisting.com/mcp/boj-server)Nothing comparable is listed yet.
v0.4.7v0.4.7 — MCP annotations + outputSchema, resources/prompts surface, OTLP spansRelease notesv0.4.6v0.4.6 — Runtime-agnostic MCP bridge + AAA-tier definitionsRelease notesv0.4.1v0.4.1 — MPL-2.0 relicense + Glama AAA-tier MCP bridgeRelease notesv0.4.5v0.4.5 — Container build unblocked (V 0.5 + Zig 0.15 compat)Release notesv0.4.4v0.4.4 — Complete Zig FFI build infrastructure (99/99 cartridges)Release notesv0.4.3v0.4.3 — Register all 99 cartridgesRelease notesv0.4.2v0.4.2 — V adapter links all 96 cartridge FFI libsRelease notesv0.4.0v0.4.0 — V-lang adapter sweep + believe_me reduction (31→4)Release notesv0.3.1v0.3.1 — Glama inspection + 3 new cartridgesRelease notesv0.3.0v0.3.0 — QuandleDB + LithoGlyph + npm publishRelease notesv0.2.0Bundle of Joy Server v0.2.0 — Grade A ProductionRelease notesConnect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "boj-server" with a rating from 1 to 5 and a short note on what worked and what did not.No reviews yet
Be the first to share your experience with this tool.
One email a week. New agents, MCP servers and skills, and what is actually getting traction.