ISSUE-10 Initial implementation for MCP Start Events. Includes a plug…#14
ISSUE-10 Initial implementation for MCP Start Events. Includes a plug…#14pieter-schutte wants to merge 1 commit intomainfrom
Conversation
…in component that will render a new pallete option called MCP Start Event and a corresponding java components that will register MCP components for each MCP Start event, on Startup and process deployment.
EdsGianesi
left a comment
There was a problem hiding this comment.
From the UX viewpoint, it looks appropriate. As. our AI offerings grow, We may need to review these early elements.
|
I've had one error report from Olivier so far. Please report any issues here. I've tested on |
| @@ -0,0 +1,58 @@ | |||
| 'use strict'; | |||
|
|
|||
| var registerBpmnJSPlugin = require('camunda-modeler-plugin-helpers').registerBpmnJSPlugin; | |||
There was a problem hiding this comment.
We have been discussing this internally. The repo is under MIT: https://github.com/camunda/camunda-modeler-plugin-helpers
Do we need to fork this? Would like to get a view from our FINOS experts on using it. @opoupeney
Alternatively, Fidelity seems to have a lot of experience in plugins, perhaps advise a different approach @HarishMalavade
There was a problem hiding this comment.
We will able to add this plugin to modeler release whenever we decide to make this available as part of Fluxnova, I was not able to build this plugin in local, I think one of npm library asked for funding. @pieter-schutte is it possible for you to upload compiled plugin so we can push the generated nodeJS artifacts to plugin folder for the local testing, I think the readme was missing where and how to copy plugin post build was success
@swalsh01 can you have someone from our Modeler team look at mcp-tool-plugin folder and evaluate what it takes to make it as part of Fluxnova modeler repo?
There was a problem hiding this comment.
I think one of npm library asked for funding
That shouldn't block you from installing it (those notices are informational only I believe). There's probably another issue blocking build. If you post more details of any errors on build that might help with debug.
There was a problem hiding this comment.
Thanks Chris. It was my local thing, I was able to resolve the issue. For now I just copied the compiled node modules into local plugin folder. may be As I have called out Sean and team can look at making it part of our regular plugin contribution
HarishMalavade
left a comment
There was a problem hiding this comment.
Couple of general Cosmetic comments
- Should we start creating general Plugins or extensions repo and put all MCP Backend code into that folder and plugin will go into modeler repo
- Can we have better logos for some of these plugins where possible
- How can we point developers to MCP related documentation on how to set up MCP for those who are new to it.
|
I have created a demo which contains all the MCP plumbing you need, plus two examples. I have set the repo to private for now. Fluxnova Maintainers, please ping me via github for link and access. |
|
@pieter-schutte hey happy to take a look |
@pieter-schutte would love to take a look at it. Let me know the best way to look at that example. Thx. |
| @@ -0,0 +1,230 @@ | |||
| # MCP Tool Plugin | |||
There was a problem hiding this comment.
Few more thought process after trying to run this code in local.
- It would be good to call out prerequsites for running this plugin as part of Fluxnova Engine - Going through code today, I understood this is a plugin that needs to be registered and added to Fluxnova Engine
- It would be good if we can modify this repo as an full fledged springboot application or an example that we can simply start, For now like you highlighted we keep the plugin code here and discuss on how we can make some of these plugins available as extensions to be embeded into Clients application on demand or decide to make this part of default Fluxnova-bpm-platform
- Can we also update instructions on how get it running locally - especially differentiating the MCP Host and MCP Server pieces - My Interpretation correct me if I am wrong is this plugin is how we can have BPM specific MCP server allowing us to start any processes via MCP client (Which can be in host application like chat bot) and MCP host is the actual model we design and deploy. Is it fair to assume that?
|
I will resubmit the example project to the @HarishMalavade As I cant upload the original PPT due to restrictions. here is the second best option, which will also be added to the various Overview of where it fits: flowchart LR
AI[🤖 AI]
subgraph Potential["Potential Architecture"]
subgraph Existing["Existing AI Application"]
subgraph AI_Impl["AI Implementation"]
subgraph AI_App["AI Application"]
C1[MCP Client 1]
C2[MCP Client 2]
C3[MCP Client 3]
end
end
subgraph Service_Layer["Service Layer"]
subgraph Embedded["Embedded Service #2"]
S2[MCP Server 2]
end
S1[MCP Server 1]
subgraph Tools1["Tools"]
T1["Tool #1-5"]
end
end
end
subgraph Fluxnova["Fluxnova Runtime"]
S3[MCP Server 3]
FD[Fluxnova AI MCP Dependency]
end
subgraph Tools2["Fluxnova Tools"]
T2[BPMN Diagram A]
T3[BPMN Diagram B]
T4[BPMN Diagram C]
end
end
AI <--> AI_App
C1 -->|MCP Protocol| S1
C1 -->|MCP Protocol| S2
C2 -->|MCP Protocol| S2
C3 -->|MCP Protocol| S3
S1 -->|API| Tools1
S3 --> Tools2
style Fluxnova fill:#90EE90,stroke:#228B22,color:#000
style Tools2 fill:#90EE90,stroke:#228B22,color:#000
style S3 fill:#90EE90,stroke:#228B22,color:#000
style FD fill:#90EE90,stroke:#228B22,color:#000
style T2 fill:#90EE90,stroke:#228B22,color:#000
style T3 fill:#90EE90,stroke:#228B22,color:#000
style T4 fill:#90EE90,stroke:#228B22,color:#000
MCP Client Config for pre-existing MCP client. Below shows possible Spring-AI implementation: MCP Server Config hosted in Fluxnova Runtime: MCP Server Config hosted in Fluxnova Runtime, which is Spring AI specific: |
Thank you Pieter, This is helpful. will wait for your example springboot app to be contributed and try further |
There was a problem hiding this comment.
We can write the compiled version of the plugin to a "dist" folder and copy over the CSS to same. Removing the compiled version from source control would also eliminate the need to keep the src in sync with the compiled version in source control. We would just have to remember to build the plugin before using it.
const CamundaModelerWebpackPlugin = require("camunda-modeler-webpack-plugin");
const CopyPlugin = require("copy-webpack-plugin");
const { join, resolve } = require("node:path");
const outputDir = resolve(__dirname, "./dist");
module.exports = {
mode: "development",
entry: "./client/client.js",
output: {
path: outputDir,
filename: "client.js",
},
devtool: "cheap-module-source-map",
plugins: [
new CamundaModelerWebpackPlugin(),
new CopyPlugin({
patterns: [
{
from: resolve(__dirname, "./client/styles.css"),
to: join(outputDir, "./styles.css"),
},
],
}),
],
};| "domify": "^1.4.0" | ||
| }, | ||
| "devDependencies": { | ||
| "camunda-modeler-plugin-helpers": "^3.0.0", |
There was a problem hiding this comment.
We could use the latest version of "camunda-modeler-plugin-helpers".
Using copy-webpack-plugin we can copy the src CSS into the "dist" folder at build time. camunda-modeler-webpack-plugin can also be used to ensure compatibility with the modeler's plugin system.
"camunda-modeler-plugin-helpers": "^5.1.0",
"camunda-modeler-webpack-plugin": "^0.2.0",
"copy-webpack-plugin": "^13.0.1",| website/yarn-error.log* No newline at end of file | ||
| website/yarn-error.log* | ||
|
|
||
| /.idea No newline at end of file |
There was a problem hiding this comment.
Suggest adding "dist/" here if we go ahead with writing compiled versions of plugins to a separate directory
|
|
||
| module.exports = { | ||
| name: 'MCP Tool Plugin', | ||
| style: './client/styles.css', |
There was a problem hiding this comment.
Suggest registering the plugin using compiled version from the "dist/" folder
style: "./dist/styles.css",
script: "./dist/client.js",
|
@pieter-schutte any chance that you made your repo public? |
Please check your github notifications / messages. there should be an invite from about a week ago. |
|
@bryankenneally @HarishMalavade you suggested taking over the plugin component? I would be very happy for you to do that, @bryankenneally seems to know a log more about plugins than myself. |
Hey @pieter-schutte, is there any way of making an example available that I could view? I'm not in the maintainers group. |
It might be easier to test in isolation. just enable the mcp settings in an existing fluxnova application: 0d2e1c5#diff-0ffbcc3871158493227e1de4f1875a4d9a5de1b776d58da0a7c7e01ddc59f118R41-R67 Add the following dependencies to your <dependencies>
<!-- Spring AI MCP Server -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>
<!-- MCP Fluxnova Extension -->
<dependency>
<groupId>io.mcp.tools</groupId>
<artifactId>mcp-fluxnova-extension</artifactId>
</dependency>
</dependencies>Spring MCP PropertiesSpring AI needs to be configured. Below is an example, but please refer to Spring AI documentation. The MCP components should be directly testable via |
|
@pieter-schutte Sharing my thoughts on the plugin approach that we discussed in last week's maintainers call Advantages of enabling capabilities like AI integrations as plugin
So I recommend that this
|
Fully working example is now available here, for testing purposes only. finos/fluxnova-examples#21 |
Hi Harish. Can you please provide an example implementation of an existing plugin |
| <!-- Spring AI MCP Server --> | ||
| <dependency> | ||
| <groupId>org.springframework.ai</groupId> | ||
| <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId> |
There was a problem hiding this comment.
Is it necessary to provide this dependency (since it is declared in the extension's pom.xml)? I was able to get it running without it (with just h2 and fluxnova-bpm-spring-boot-starter-webapp) .
|
I was able to add the extension to an existing Fluxnova spring boot application (independent of the example you have provided, Pieter) without any issues. I think this works well as a plugin/extension so would also be interested if we could get an example implementation of a plugin. |
|
Having thought a little more about security for MCP functionality (an aspect we are also considering for our upcoming contribution at Scott Logic), I wonder whether it would make sense to abstract the MCP server configuration into a separate parent plugin that would handle enabling MCP server functionality for Fluxnova and any associated authentication/security features. Then, extensions which add tools (like this one) could be added on top of this. For security itself, we have discussed following a similar approach to the authentication for the REST API but curious to hear your thoughts on this. |
|
This PR will soon be closed. A preview of the plugin based implementation available here: https://github.com/finos/fluxnova-bpm-platform/tree/FLUXNOVA-AI-ISSUE-10 Will raise a PR as soon as the new Plugins repo is online. @finos/fluxnova-maintainers @JamieWhitMac |
ISSUE-10 Initial implementation for MCP Start Events. Includes a plugin component that will render a new pallete option called MCP Start Event and a corresponding java components that will register MCP components for each MCP Start event, on Startup and process deployment.
NB:
fluxnova-bpm-platformbut I feel that will result in bad user experience as the Java dependency will not be included.camunda-modeler-plugin-helpers. Do we need to fork this module as well?