Vibe Design System: monday.com's React UI Library and Its MCP Server
🎨 Vibe Design System - Official monday.com UI resources for application development in React.js
At a glance
- What is it?
- Vibe is monday.com's open source React component library, published as @vibe/core with icons, Playwright test utilities, codemods and an MCP server. It is built for teams that want monday.com's look in their own React apps, and the MCP server is the part worth a closer look.
- Who is it for?
- Adopt Vibe if you are building React interfaces that should match monday.com, or if you want an MCP server that feeds component APIs and icon names to an AI coding assistant. Do not adopt it if your app has no connection to monday.com, since you would inherit its visual language and its release cadence for no gain.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Vibe Solves, and Who It Is Actually For
Vibe is the official monday.com UI resource set for React.js. The problem it addresses is narrow and concrete: if you are building an application that should look and behave like monday.com, you would otherwise reimplement buttons, typography, tooltips, icons and styling tokens yourself, and drift from the original over time. Vibe packages those decisions so a React app can import them.
The intended audience is React developers, and the repository layout confirms it. The monorepo is TypeScript, uses Yarn workspaces over packages/* and packages/components/*, and the root package.json describes itself as the Vibe monorepo with no runtime dependencies of its own. The topics list on the repository includes react, typescript, component-library and design-system.
There is a second audience that the README calls out separately: developers using AI coding tools. Vibe ships an MCP (Model Context Protocol) server, described as providing assistance for working with Vibe components by helping discover component APIs, retrieve usage examples, find appropriate icons and follow best practices. That is a different kind of user from someone who just wants a Button component, and it is the most distinctive part of the project.
What Vibe is not: it is not a general purpose component library that happens to be open source. It carries monday.com's visual identity, and its documentation lives at vibe.monday.com rather than in the README.
How the Monorepo Is Split Across @vibe Packages
Vibe is not one package. The README lists an ecosystem, and each entry maps to a directory under packages/ in the repository.
@vibe/core is the core component library. @vibe/icons holds the icon set. @vibe/testkit provides testing utilities for Playwright, which means the project treats browser-level testing of Vibe components as part of its surface area. @vibe/codemod contains codemods and CLI tools, which is how the project expects you to move code between major versions rather than by hand. @vibe/style holds the styling foundations and, per the README, is included in @vibe/core, so you do not install it separately for normal use. Two further entries are not scoped under @vibe: vibe-storybook-components, which provides Vibe Storybook blocks, and storybook-addon-playground, which lives in a separate repository under the mondaycom organisation.
The build is orchestrated by Lerna. The root scripts run lerna run build for the full build, lerna run lint and lerna run test across packages, and a postinstall hook that builds a specific subset: vibe-storybook-components, @vibe/shared, @vibe/icons and @vibe/hooks. That postinstall scope tells you something practical. Those four packages are treated as prerequisites for everything else, so a fresh clone builds them first.
The release cadence is visible in the published versions. @vibe/wizard, @vibe/typography and @vibe/tooltip all shipped patch releases on 2026-09-08, and the repository's last push was on 2026-09-10. Version numbers on those packages sit in the 4.x line, matching the Vibe 4 generation the README points people toward.
Installing @vibe/core and Rendering a First Component
The README gives the install command for the core package, with a Yarn equivalent. Both are one line.
npm install @vibe/core
# or
yarn add @vibe/coreInstalling the package is not sufficient on its own. The README states that to load all the relevant CSS tokens you must import the tokens file in your root application file. Skipping this step is the most likely reason a first attempt renders unstyled markup.
import "@vibe/core/tokens";Components are imported from the library's root entry rather than from deep paths. The README's example imports Button directly from @vibe/core.
import { Button } from "@vibe/core";After those three steps, a rendered Button should carry Vibe's styling and tokens. The README does not document a theme provider, a wrapper component or any required context, so if the styling looks wrong, the tokens import is the first thing to check. The README also does not document server-side rendering behaviour or a Next.js integration path; those are absent from the README rather than contradicted by it.
The MCP Server and What It Changes About Using Vibe
The MCP server is the part of Vibe that does not resemble a normal design system. According to the README, it helps you discover component APIs, get usage examples, find appropriate icons and follow best practices, and it is meant to be integrated into your preferred AI development tools. The repository topics include mcp, mcp-server and llm, consistent with that description.
The README does not put the setup instructions inline. It points to the package README at packages/mcp/README.md for installation, so the exact client configuration is not something this article can reproduce, and it should not be guessed. What is clear from the structure is the intent: instead of an assistant inventing a prop name for a Vibe component, the MCP server is the source it queries.
There is a real argument for this design. Component libraries are exactly the kind of dependency where an AI assistant is most likely to hallucinate, because the API surface is large, versioned and not well represented in general training data. Vibe 4 changed APIs relative to Vibe 3, and a model trained on older monday.com code will confidently produce Vibe 2 or Vibe 3 patterns. An MCP server that serves the current API addresses that directly.
The caveat is that this only works if your tooling supports MCP and you actually configure it. Nothing in the README suggests the MCP server is required for normal development; it is an optional layer.
Version Drift Is the Main Failure Mode
The README's Older Versions section is unusually blunt, and it is the clearest limitation in the project. Vibe 3, published as @vibe/core v3, will no longer receive new features or enhancements, though it will continue to receive critical bug fixes as needed. Vibe 2, published under the package name monday-ui-react-core, is no longer maintained at all. The README recommends following the migration guide to upgrade to Vibe 4.
That means three generations of the same library are in circulation under two different package names. If you search for monday.com component examples, you may land on monday-ui-react-core code, which is Vibe 2 and unmaintained. The package rename between Vibe 2 and Vibe 3 is the specific trap: an import that looks plausible will resolve to a package that receives no fixes.
This is where @vibe/codemod earns its place. The README describes it as codemods and CLI tools, and the migration guide is the documented path between versions. A major version bump in a component library touches every file that imports from it, and hand-editing is the alternative.
The broader limitation is fit. Vibe encodes monday.com's design decisions. If your product has its own visual identity, adopting Vibe means either restyling components against their intended appearance or accepting monday.com's. For a non-monday.com product, a headless or unstyled primitive library is usually the better starting point, because it does not ask you to fight its defaults.
Vibe Against Other React Component Libraries
The honest comparison is not Vibe versus another visual component library. It is Vibe versus the unstyled primitive approach, because that is the fork in the road.
A library like Radix Primitives or React Aria gives you behaviour and accessibility without visual opinion. You supply the styling. That is the right trade when your design system already exists and you need accessible building blocks underneath it. Vibe makes the opposite trade: it supplies appearance and tokens, and you accept its opinions. The README's tokens import is the mechanism, and @vibe/style being folded into @vibe/core means the styling layer is not optional.
The second comparison is against monday.com's own v2 package, monday-ui-react-core. That is not really an alternative so much as a predecessor. It is unmaintained per the README, so choosing it means choosing a package that will not receive fixes.
The third comparison is against building your own components on top of a CSS framework. Vibe's advantage there is the codemod and migration tooling plus the MCP server; a hand-rolled set has neither. Its disadvantage is that the upgrade path is controlled by monday.com, and the README shows that path involves real migration work between major generations.
Licence, Maintenance and Upgrade Cost
The repository does not state a licence, and the README does not include a licence section. Individual packages are published to npm under the @vibe scope, so the licence terms that apply to your use are the ones attached to those packages. Check the licence field on the specific packages you install before distributing anything built with them; this is a fact to verify, not something to assume from the project being public on GitHub.
On maintenance, the evidence is concrete rather than promotional. The repository is not archived, the last push was on 2026-09-10, and packages including @vibe/wizard, @vibe/typography and @vibe/tooltip published patch releases on 2026-09-08. The README states that Vibe 4 is the actively maintained line and that Vibe 3 receives only critical bug fixes. Those are the facts to plan around.
The upgrade cost is the practical concern. Vibe 3 to Vibe 4 is a major version move with a published migration guide and a codemod package, so the cost is bounded but not zero. The unbounded case is starting on Vibe 2 code without realising it, because that package name is still installable and still appears in older examples. Pinning your dependency and checking which major line you are on takes a minute and avoids the whole category of problem.
Editorial conclusion
Adopt Vibe if you are building React interfaces that should match monday.com, or if you want an MCP server that feeds component APIs and icon names to an AI coding assistant. Do not adopt it if your app has no connection to monday.com, since you would inherit its visual language and its release cadence for no gain. Before committing, verify three things: that @vibe/core v4 covers the components you need, that the migration guide for your current version is something you can follow, and that the licence terms of the individual packages fit your distribution model, because the repository does not state a licence.
Frequently asked questions
What is the monday.com Vibe design system?
It is monday.com's official set of UI resources for building applications in React.js, distributed as packages including @vibe/core for components, @vibe/icons for icons and @vibe/testkit for Playwright testing utilities. The README describes it as a collection of components, styles and guidelines.
How do I use monday.com Vibe in a React app?
Install @vibe/core with npm or yarn, import "@vibe/core/tokens" in your root application file to load the CSS tokens, then import components from the package root, for example { Button } from "@vibe/core". The README gives all three steps.
What is a monday.com Vibe app?
In this repository the term refers to applications built with the Vibe Design System packages, which the README describes as providing components, styles and guidelines for React.js application development. The repository also ships an MCP server for AI development tools, which the README lists as @vibe/mcp.
Is monday.com Vibe free to use?
The README does not state a licence for the repository or for the @vibe packages, and it has no licence section. Check the licence field on the specific npm packages you install rather than assuming terms from the repository being public.
How much does monday.com Vibe cost?
The repository does not document any pricing for the Vibe Design System packages. They are published on npm under the @vibe scope, and the README gives no cost information beyond that.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/mondaycom-vibe)