{"id":10301,"date":"2025-12-19T06:20:00","date_gmt":"2025-12-19T06:20:00","guid":{"rendered":"https:\/\/modeling-languages.com\/?p=10301"},"modified":"2025-12-19T06:20:00","modified_gmt":"2025-12-19T06:20:00","slug":"mcp-for-agentic-lowcode","status":"publish","type":"post","link":"https:\/\/modeling-languages.com\/mcp-for-agentic-lowcode\/","title":{"rendered":"Modeling skills for AI agents thanks to MCP support in our low-code platform"},"content":{"rendered":"<p>The use of AI agents in software development is now a common practice facilitated by multiple editors\u00a0(Cursor,\u00a0Claude,\u00a0VS Code,\u00a0&#8230;).\u00a0Among all the capabilities provided by agents,\u00a0the support of the <a href=\"https:\/\/modelcontextprotocol.io\/docs\/getting-started\/intro\" target=\"_blank\" rel=\"noopener\">Model Context Protocol\u00a0(MCP)<\/a>\u00a0is a core feature allowing the interoperability of agents with other tools.\u00a0For instance,\u00a0MCP servers can provide access to file system actions,\u00a0command line execution,\u00a0or interaction with application specific documents\u00a0(LibreOffice,\u00a0Word,\u00a0&#8230;)<\/p>\n<p>With the new <a href=\"https:\/\/modeling-languages.com\/besser-graphical-modeling-editor\/\" target=\"_blank\" rel=\"noopener\">BESSER<\/a> MCP Server,\u00a0we extend the concept of vibe coding to modeling activities,\u00a0a.k.a.\u00a0<a href=\"https:\/\/modeling-languages.com\/vibe-modeling\/\" target=\"_blank\" rel=\"noopener\">Vibe Modelin<\/a>g. 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 <strong>agentic low-code development<\/strong> process.<\/p>\n<blockquote><p><strong>Note:<\/strong>\u00a0This first version of the MCP server is focused on Domain Models,\u00a0but other types of models will be added in future versions.<\/p><\/blockquote>\n<h2 id=\"the-besser-mcp-server\">The BESSER MCP Server<\/h2>\n<p>Regardless of the deployment method selected, the MCP server provides four types of tools : information tools, creation tools, deletion tools, and generation tools:<\/p>\n<ul>\n<li><strong>Information tools<\/strong>\u00a0provide information on the BESSER platform and on the current model edited.<\/li>\n<li><strong>Creation tools<\/strong>\u00a0allow to create a model,\u00a0classes,\u00a0enumerations and OCL constraints,\u00a0as well as populating the classes with attributes,\u00a0methods and associations.<\/li>\n<li><strong>Deletion tools<\/strong>\u00a0are the pendant of creation tools,\u00a0allowing to remove model elements and allowing update through a deletion-creation process.<\/li>\n<li>Finally,\u00a0<strong>Generation tools<\/strong>\u00a0give access to the BESSER generators to produce various artifacts based on the model.<\/li>\n<\/ul>\n<p>The complete list of the tools is available in the README file of the\u00a0<a href=\"https:\/\/github.com\/BESSER-PEARL\/BESSER-MCP-Server\" target=\"_blank\" rel=\"noopener\">GitHub repository<\/a>.<\/p>\n<p>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.<\/p>\n<p>The second option is the distant deployment,\u00a0on a dedicated server.\u00a0In this version,\u00a0tool calls expect an additional URL to be provided.\u00a0This URL should accept both GET and POST request to read and update the current state of the model.\u00a0For each tool call,\u00a0the latest version of the model is requested,\u00a0modified by the tool,\u00a0and the updated version is uploaded.<\/p>\n<h2 id=\"how-to-use-it\">How to use it<\/h2>\n<p>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 <a href=\"https:\/\/openrouter.ai\/\" target=\"_blank\" rel=\"noopener\">OpenRouter<\/a>)\u00a0to experiment.<\/p>\n<p>Connecting Cline to the MCP server is done in four simple steps:<\/p>\n<ol>\n<li>Open the Cline panel on VScode<\/li>\n<li>Click on &#8220;Manage MCP Server&#8221; at the bottom, then the cog<\/li>\n<li>Clicking on &#8220;Configure MCP server&#8221; will open the configuration file<\/li>\n<li>Copy the\u00a0<code>mcp-config.json<\/code>\u00a0file content to the opened config file<\/li>\n<\/ol>\n<blockquote><p><strong>Note:<\/strong>\u00a0the\u00a0<code>mcp-config.json<\/code>\u00a0file is available in the MCP Server repository<\/p><\/blockquote>\n<p>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 <a href=\"https:\/\/modeling-languages.com\/vibe-modeling\/\">vibe modeling<\/a> by asking <a href=\"https:\/\/cline.bot\/\" target=\"_blank\" rel=\"noopener\">Cline <\/a>to create a model for a given application, as we have done in the following example.<\/p>\n<p><a href=\"https:\/\/modeling-languages.com\/wp-content\/uploads\/2025\/12\/BESSER-MCP.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10308\" src=\"https:\/\/modeling-languages.com\/wp-content\/uploads\/2025\/12\/BESSER-MCP.gif\" alt=\"\" width=\"387\" height=\"448\" \/><\/a><\/p>\n<h2 id=\"plans-for-the-future\">Plans for the future<\/h2>\n<p>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, &#8230;). 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.<\/p>\n<span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Integrate our low-code platform in your agentic development platform thanks to our MCP support<\/p>\n","protected":false},"author":103,"featured_media":10311,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","_has_post_settings":[],"footnotes":""},"categories":[20,24],"tags":[951,865,946,966],"hashtags":[],"class_list":["post-10301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-modeling","category-tools","tag-agent","tag-ai","tag-vibe-coding","tag-vibe-modeling"],"_links":{"self":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts\/10301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/users\/103"}],"replies":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/comments?post=10301"}],"version-history":[{"count":7,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts\/10301\/revisions"}],"predecessor-version":[{"id":10304,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/posts\/10301\/revisions\/10304"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/media\/10311"}],"wp:attachment":[{"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/media?parent=10301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/categories?post=10301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/tags?post=10301"},{"taxonomy":"hashtags","embeddable":true,"href":"https:\/\/modeling-languages.com\/wp-json\/wp\/v2\/hashtags?post=10301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}