Bestax
The bestax MCP server is a read-only, offline documentation/search server for the @allxsmith/bestax-bulma React component library and its agent skills. It does not execute tasks (taskSupport: forbidden) — it answers questions by returning structured documentation data.
Search everything at once with
search_bestax— components, props, examples, CSS variables, and skills — filtered by kind (component, prop, example, css-var, skill, all) and limited.List all documented components (
list_components), optionally filtered by category: elements, components, form, columns, grid, layout, helpers.Get full component documentation (
get_component) — import statement, summary, prop table, and optional examples, CSS variables, accessibility notes, related components, or reference; supports compound dot-paths likeNavbar.Brand.Get a component's prop table only (
get_props) for a component or a subcomponent dot-path.Fetch working usage examples (
get_examples) for a component, optionally filtered by query/heading, up to 30.Look up CSS/Sass variables (
get_css_variables) — the--bulma-*properties a component reads, with Sass names and defaults; search across all variables or per component.Get universal helper props (
get_helper_props) — spacing, color, typography, flexbox, visibility — filtered by group.Map Bulma classes to bestax components/props (
lookup_bulma_classes) — one row per class, optionally with the tag; useful for converting existing Bulma markup.Browse agent skills (
list_skills) and read a skill (get_skill), including its reference documents such ascss-variables.
Provides tools for querying bestax component documentation and mapping Bulma class strings to bestax components and props, along with Bulma-related CSS variables and usage examples for building Bulma-based UIs.
bestax
TypeScript-first React component library for the Bulma v1 CSS framework — 110+ fully typed components — plus a project scaffolder and AI agent tooling.
📋 At a glance
Library |
|
Scaffolder |
|
Requires | React |
Styles |
|
Icons (optional) | Font Awesome, Material Design Icons, Ionicons, Material Icons, Material Symbols — all optional peer dependencies |
Docs | |
LLM docs | llms.txt (curated index) · llms-full.txt (complete docs, one file) |
Agent Skills |
|
Community |
If you are an AI agent or LLM: fetch https://bestax.io/llms.txt for a curated index of the full documentation, or https://bestax.io/llms-full.txt for the complete docs in a single file, before answering questions about or writing code with this library. Every page on bestax.io is also available as raw markdown — see the LLMs guide.
Full documentation, guides, and API reference: 👉 https://bestax.io — the docs site is always the most complete and up-to-date resource.
Related MCP server: Salt MCP
🚀 Quick start
New project
Scaffold a Vite app with everything wired up (CSS flavor, icon library, optional AI skills + CLAUDE.md):
npm create bestax@latest my-app
# or: pnpm create bestax my-appUseful flags: -t vite|vite-ts (template), -b complete|prefixed|no-helpers|no-helpers-prefixed|no-dark-mode (CSS flavor), -i fontawesome|mdi|ionicons|material-icons|material-symbols|none (icons), --skills (install the Agent Skills into .claude/skills), -y (accept defaults). See the create-bestax README.
Existing project
npm install @allxsmith/bestax-bulma
# or: pnpm add @allxsmith/bestax-bulmaImport the bundled CSS once (Bulma v1 + the bestax extras), then use components:
import '@allxsmith/bestax-bulma/bestax.css';
import { Button } from '@allxsmith/bestax-bulma';
function App() {
return (
<Button color="primary" onClick={() => alert('Clicked!')}>
Click Me
</Button>
);
}Prefer stock Bulma? import 'bulma/css/bulma.min.css'; works too — you'll just miss the bestax-only components' styles (add @allxsmith/bestax-bulma/extras.css for those).
Theming, dark mode, and configuration are one wrapper away:
import { Theme, ConfigProvider } from '@allxsmith/bestax-bulma';
function Root() {
return (
<Theme isRoot colorMode="system">
{/* colorMode: 'light' | 'dark' | 'system' */}
<ConfigProvider iconLibrary="fa">
<App />
</ConfigProvider>
</Theme>
);
}Installation guide · Configuration
📦 What's in this repo
Path | Package | What it is |
The component library | ||
Project scaffolder — | ||
Codemods for migrating existing apps from other React Bulma libraries | ||
MCP server — component props, examples and skills for AI coding agents | ||
ESLint rules — catches helper-prop values the library silently drops | ||
— | Docusaurus source of bestax.io | |
— | Agent Skills for coding agents (also bundled into |
The published packages are versioned and released independently.
🧩 Components
110+ components covering all of Bulma v1, plus bestax extras (Carousel, Dialog, Sidebar, Steps, date/time pickers, and more):
Elements — Button, Table, Tag, Title, Icon, Image, Notification, Progress, Skeleton, Content, Delete, and typed HTML wrappers (Paragraph, Span, Figure, lists, …)
Components — Navbar, Modal, Card, Dropdown, Menu, Message, Pagination, Panel, Tabs, Breadcrumb, Toast, Tooltip, Steps, Sidebar, Carousel, Collapse, Dialog, Loading
Form — Field/Control, Input, Select, TextArea, Checkbox(es), Radio(s), Switch, Slider, Rate, File, Numberinput, Autocomplete, Taginput, and DateInput / TimeInput / DateTimeInput pickers
Layout — Container, Section, Hero, Level, Media, Footer
Columns & Grid — classic 12-column flexbox columns and the Bulma v1 CSS Grid
Helpers —
Theme,ConfigProvider,useBulmaClasses,classNames
Migrating from v2? Snackbar was merged into Toast in v3 — see the migration guides.
🎨 Styling and theming
Pick one CSS flavor (all shipped with the library — matching create-bestax -b):
Import | What you get |
| Default. Bulma v1 + bestax extras |
| All classes prefixed |
| Without Bulma helper classes |
| Prefixed, without helpers |
| Without dark-mode styles |
| bestax extras only — for use alongside stock |
| Raw SCSS for full customization |
Dark mode:
<Theme colorMode="dark">(or"system"to follow the OS) — docsBrand colors, fonts, radius: the
Themecomponent overrides Bulma's--bulma-*CSS variables (globally withisRoot, or scoped to a subtree). Default primary color is#1e6b99Class prefixing & icon defaults:
ConfigProvidersetsclassPrefixandiconLibraryfor a whole treeCSS variables reference: docs
🤖 For AI Tools
Building with an AI agent (Claude Code, Cursor, Copilot)? bestax-bulma ships LLM-optimized docs:
📘 LLMs guide — how to use the library with AI tools
📄 llms.txt — curated index · llms-full.txt — the full docs in one file · every docs page is also served as raw markdown
🔌 MCP server — let the agent query the library instead of reading it: props (including compound parts), ~900 examples,
--bulma-*variables, and the skills as prompts. Offline, and pinned to the version you have installed.claude mcp add bestax -- npx -y bestax-mcp🧩 Agent Skills — teach your agent the bestax way:
Skill
Use it when…
bestax-layout-scaffoldTurning a high-level request (dashboard, landing page, …) into a responsive page
bestax-formBuilding forms — Field/Control composition and the full input inventory
bestax-themingCustomizing colors, fonts, dark mode via
Themeand--bulma-*variablesbestax-custom-componentBuilding a new custom component beyond stock Bulma, the bestax way
bestax-iconsAdding icons — Icon/IconText and the five supported icon libraries
bestax-optimizeShrinking the built CSS — flavor builds, modular Sass, import hygiene
bestax-migrateMoving an app off react-bulma-components, rbx, bloomer or raw Bulma classes
npx skills add https://github.com/allxsmith/bestax --skill bestax-layout-scaffoldNew projects get the skills automatically with
npm create bestax@latest my-app --skills(plus a generatedCLAUDE.md).🧰 bestax plugin: the skills and the MCP server in one install. In Claude Code:
/plugin marketplace add allxsmith/bestax-skills /plugin install bestax@bestaxOther agents install it from the same repository.
⭐ Why bestax-bulma?
Built for Bulma v1.x — most other React Bulma libraries are stuck on Bulma 0.9.4
100% TypeScript — every component and prop fully typed
One runtime dependency: Bulma — it ships with the library; clean install, fewer security concerns
Tree-shakeable — import what you need and ship only that: unused components drop out of the ESM build, and modular Sass does the same for CSS. A CJS build covers
require99% test coverage — enforced in CI by the Vitest config, not just claimed
Active developer support — issues, questions, and PRs get fast responses
🔒 Hardened by default
Supply-chain security here is a standing constraint on how the project is built, not a checklist we filled in once:
Signed provenance on every release — each tarball carries a sigstore attestation linking it to the exact commit and CI run that produced it. Check it yourself with
npm audit signatures, or on the package page's Provenance section.npm OIDC trusted publishing — releases authenticate with short-lived, per-run tokens. There is no long-lived
NPM_TOKENin this repo to steal.Signed release commits — release commits and tags are GPG-signed, and
mainrejects unsigned commits outright.Socket.dev scans every PR — dependency changes are checked for malware, install scripts, obfuscated code, and privilege escalation before they can reach
main.Every GitHub Action pinned to a full commit SHA — no movable tags, so a compromised action release can't roll silently into the pipeline.
Install scripts blocked by default — dependency
install/postinstallscripts don't run unless explicitly allow-listed one at a time, each with a written rationale (pnpm-workspace.yaml).3-day dependency cooldown — freshly published versions won't install. This is the main defense against account-takeover worms, which are usually yanked within hours.
Frozen lockfile + audit gate — CI installs exactly what the reviewed lockfile resolves and fails on high-severity advisories.
CodeQL, Dependency Review, and Dependabot — static analysis over both the source and the workflow files, PR-level advisory blocking, and weekly grouped dependency updates.
Layered AI review before merge — every PR gets a CodeRabbit review plus an independent adversarial Claude review that deliberately runs a different model from the one writing AI-authored changes. On top of that,
mainrequires green CI, one approving review, and a human merge. AI agents are structurally barred from editing the workflows, release config, or supply-chain settings that gate them.Inbound issues and PRs are security-triaged — a read-only AI pass flags code crafted to harm whoever runs it, prompt injection aimed at our own automation, and social engineering. Flagged items are labeled and refused by every AI entry point until a human clears them. It fails closed, so an inconclusive scan flags rather than passes, and the model session itself has no write tools — a separate deterministic step applies the label, so the AI never posts or acts on anything.
Full detail: SECURITY.md · Security guide
💬 Community
Contributing
Want to contribute or run the project locally? See CONTRIBUTING.md. In short:
corepack enable && pnpm install --frozen-lockfile
pnpm all # build, typecheck, test + coverage, lint — the pre-PR gateThis is a pnpm + Turborepo monorepo; contributor-facing AI context lives in CLAUDE.md (mirrored for other tools in AGENTS.md).
🙏 Attribution
bestax-bulma is built on top of the incredible Bulma CSS framework, © Jeremy Thomas and licensed under the MIT License, whose notice ships with the package in THIRD-PARTY-NOTICES.md. Some example content and documentation is adapted from the Bulma website (CC BY-NC-SA 4.0), © Jeremy Thomas.
If you find Bulma useful, please consider sponsoring Jeremy Thomas to support its continued development.
We are not affiliated with Bulma or Jeremy Thomas in any way — we're just big fans of the Bulma framework!
License
Source code licensed MIT
Available Tools
10 toolsget_componentGet component documentationARead-onlyIdempotent
Import statement, summary and prop table for one component. Add include for examples, CSS variables, accessibility notes or related components. A dot-path like "Navbar.Brand" answers with that part.
Inputs: name (required), include.
get_css_variablesGet CSS and Sass variablesARead-onlyIdempotent
The --bulma-* custom properties a component reads, with their Sass names and defaults. This is how you restyle bestax — reach for these before writing custom CSS. Omit component to search across all of them.
Inputs: query, component.
get_examplesGet usage examplesBRead-onlyIdempotent
Working examples from the component's documentation page. Every one is executed on the docs site, so they compile against this version.
Inputs: component (required), limit, query.
get_helper_propsGet helper propsARead-onlyIdempotent
The helper props every bestax component accepts — spacing, colour, typography, flexbox, visibility — and their valid values. Call this BEFORE writing an inline style or a utility class by hand; this library expects those to be props.
Inputs: group.
get_propsGet propsARead-onlyIdempotent
The prop table for a component, or for one part of a compound family (pass a dot-path like "Navbar.Brand"). Cheaper than get_component when the props are all you need.
Inputs: component (required), path.
get_skillGet an agent skillARead-onlyIdempotent
A skill's instructions, or one of its reference documents. Load the skill first; pull a reference only when you need that depth.
Inputs: name (required), reference.
list_componentsList componentsARead-onlyIdempotent
Every documented component with a one-line purpose, grouped by category. Cheap — use it to find the right name before calling get_component.
Inputs: category.
list_skillsList agent skillsARead-onlyIdempotent
The bestax Agent Skills — task-level guides for forms, theming, layout scaffolding, icons, custom components, migration and CSS size. Read one with get_skill when a task matches.
Inputs: no named parameters.
lookup_bulma_classesLook up Bulma classesARead-onlyIdempotent
The bestax component and props for a Bulma class string, one row per class: "button is-primary", "columns is-mobile", "has-text-centered mt-4". Call this BEFORE writing a Bulma class by hand, and when converting existing Bulma markup. Pass the tag the classes sit on when there is one.
Inputs: classes (required), tag.
search_bestaxSearch bestaxARead-onlyIdempotent
Search components, props, usage examples, CSS variables and agent skills at once. The entry point — each hit names the tool to call for the full thing. Use this before guessing a component name.
Inputs: query (required), kind, limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct information type (props, examples, CSS variables, skills, class lookup), but get_component is effectively a superset that can emit props/examples/CSS variables via its `include` parameter, overlapping get_props, get_examples and get_css_variables. The descriptions resolve this by framing the specialized tools as cheaper, narrower alternatives, so boundaries are mostly clear but not perfectly orthogonal.
Names follow a predictable verb_noun pattern throughout: get_component, get_props, get_examples, get_css_variables, get_helper_props, list_components, list_skills, get_skill, lookup_bulma_classes, search_bestax. Minor deviation is the singular/plural mismatch between list_components/get_component and list_skills/get_skill, but conventions are otherwise consistent and readable.
Ten tools is well-scoped for a component-library documentation server. Discovery (search_bestax, list_components), retrieval (get_component, get_props, get_examples, get_css_variables), helper guidance (get_helper_props, lookup_bulma_classes) and skills (list_skills, get_skill) each earn their place with no redundancy.
The surface covers the full documentation lifecycle: search, list, detailed retrieval, prop tables, runnable examples, CSS variable theming, helper props, Bulma class mapping, and task-level skills. Coverage is strong for a docs server, with only minor gaps such as no explicit version/migration or changelog retrieval beyond what a skill might supply.
Maintenance
Related MCP Connectors
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
React components and design rules your coding agent installs and follows.
Search, read and install agent-ready React components, screens and blocks for AI products.
React, Tailwind CSS and shadcn/ui components, sections and landing pages for coding agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to private React component library documentation, props, and code examples through type-safe TypeScript integration.-
- AlicenseAqualityDmaintenanceEnables AI agents to build React applications using JP Morgan Chase's Salt Design System by providing real-time access to component APIs, documentation, and accessibility guidelines. It supports tasks such as scaffolding new projects, building UI patterns, and converting Figma designs into Salt code via the Model Context Protocol.657 npm1MIT
- AlicenseAqualityDmaintenanceProvides documentation and component references for the Reacticx React Native library, including props, code examples, and installation guides. It enables users to search through over 90 components and retrieve setup commands for project dependencies.512 npm2MIT
- AlicenseNot gradedqualityBmaintenanceProvides a real API for coding agents to look up design system components, props, and tokens, preventing guessed answers.9MIT