The use of AI agents in software development is now a common practice facilitated by multiple editors (Cursor, Claude, VS Code, …). Among all the capabilities provided by agents, the support of the Model Context Protocol (MCP) is a core feature allowing the interoperability of agents with other tools. For instance, MCP servers can provide access to file system actions, command line execution, or interaction with application specific documents (LibreOffice, Word, …)
With the new BESSER MCP Server, we extend the concept of vibe coding to modeling activities, a.k.a. Vibe Modeling. The goal of this approach is to let the agents reason at the problem level, vibing to create the model, and once the model is validated, rely on existing deterministic approaches for code generation. This way, we can combine the benefits of AI with those of rule-based, deterministic, model-driven generation, opening the door for an agentic low-code development process.
Note: This first version of the MCP server is focused on Domain Models, but other types of models will be added in future versions.
The BESSER MCP Server
Regardless of the deployment method selected, the MCP server provides four types of tools : information tools, creation tools, deletion tools, and generation tools:
- Information tools provide information on the BESSER platform and on the current model edited.
- Creation tools allow to create a model, classes, enumerations and OCL constraints, as well as populating the classes with attributes, methods and associations.
- Deletion tools are the pendant of creation tools, allowing to remove model elements and allowing update through a deletion-creation process.
- Finally, Generation tools give access to the BESSER generators to produce various artifacts based on the model.
The complete list of the tools is available in the README file of the GitHub repository.
The BESSER MCP Server proposes two types of deployments. The first, and recommended, possible deployment is local. In this version, the model is kept in memory and updated by each tool call, avoiding the need to pull the model for each request.
The second option is the distant deployment, on a dedicated server. In this version, tool calls expect an additional URL to be provided. This URL should accept both GET and POST request to read and update the current state of the model. For each tool call, the latest version of the model is requested, modified by the tool, and the updated version is uploaded.
How to use it
The first step to using the MCP server is to start it via the command line (the procedure is detailed in the documentation). Once the server is running, you need to connect the server to an MCP client. In this example we will use the Cline extension for VSCode allowing us to use free LLMs (through OpenRouter) to experiment.
Connecting Cline to the MCP server is done in four simple steps:
- Open the Cline panel on VScode
- Click on “Manage MCP Server” at the bottom, then the cog
- Clicking on “Configure MCP server” will open the configuration file
- Copy the
mcp-config.jsonfile content to the opened config file
Note: the
mcp-config.jsonfile is available in the MCP Server repository
Now that the server is started and the client configured, you can test the setup by asking information about BESSER. If your configuration is correct, Cline will ask you for permission to call the tool. After that, you can start vibe modeling by asking Cline to create a model for a given application, as we have done in the following example.
Plans for the future
Of course this server is bound to evolve over time. The main evolution planned is to extend this server to the other models addressed by BESSER (Object Model, Agent Model, …). In addition, to manage the edition of large models over time, we plan to add save/load facilities allowing us to save the model produced in a chat and loading it again in another chat. Finally, we would like to allow better integration with the modeling editor, introducing an import/export mechanism to import models created in the editor and export models created by agents.

I am a PhD student in software engineering in the DiverSE team in Rennes, France. I’m currently working on Self-Adaptable Languages with Benoit Combemale, Olivier Barais and Gunter Mussbacher.

Recent Comments