initial commit for MCP server in OpenSearch#3781
initial commit for MCP server in OpenSearch#3781ylwu-amzn merged 10 commits intoopensearch-project:mainfrom
Conversation
Signed-off-by: zane-neo <zaniu@amazon.com>
Signed-off-by: zane-neo <zaniu@amazon.com>
Signed-off-by: zane-neo <zaniu@amazon.com>
Signed-off-by: zane-neo <zaniu@amazon.com>
7a33e9c to
3e7065b
Compare
Signed-off-by: zane-neo <zaniu@amazon.com>
Signed-off-by: zane-neo <zaniu@amazon.com>
|
The backport to To backport manually, run these commands in your terminal: # Fetch latest updates from GitHub
git fetch
# Create a new working tree
git worktree add .worktrees/backport-3.0 3.0
# Navigate to the new working tree
cd .worktrees/backport-3.0
# Create a new branch
git switch --create backport/backport-3781-to-3.0
# Cherry-pick the merged commit of this pull request and resolve the conflicts
git cherry-pick -x --mainline 1 9b0294d905ad2fb7f1526194241f3591c8a057a3
# Push it to GitHub
git push --set-upstream origin backport/backport-3781-to-3.0
# Go back to the original working tree
cd ../..
# Delete the working tree
git worktree remove .worktrees/backport-3.0Then, create a pull request where the |
|
If this is targeting 3.0 please add backport 3.0 label @zane-neo |
* initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> (cherry picked from commit 9b0294d)
|
One more high level question. |
* initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> (cherry picked from commit 9b0294d)
|
Add cluster setting to enable/disable this feature |
@jngz-es, if there are any blocking operations either in rest handler or in transport handler, it'll block the |
|
Use |
* initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> (cherry picked from commit 9b0294d)
* initial commit for MCP server in OpenSearch * Make change to support register or remove tools across cluster * format code * fix UT failure caused by code change * format code * format code * add license header * fix notifications initialized not respond issue * fix minor issues and add UTs * Add more UTs --------- (cherry picked from commit 9b0294d) Signed-off-by: zane-neo <zaniu@amazon.com> Co-authored-by: zane-neo <zaniu@amazon.com>
Signed-off-by: zane-neo <zaniu@amazon.com>
* support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in #3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com>
* support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in #3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> (cherry picked from commit 7c05295)
I took a look on java client and python client and there are discrepancy between them: So in java client you specifies a baseUri, e.g. python client connect: https://github.com/modelcontextprotocol/python-sdk/blob/main/src/mcp/client/sse.py#L47 So in python client the url is a SSE url, e.g. So the common pattern is: |
Signed-off-by: zane-neo <zaniu@amazon.com>
* [BUG] Agent Framework: Handle model response when toolUse is not accompanied by text (#3755) * fix: handle model response when toolUse is not accompanied by text Signed-off-by: Pavan Yekbote <pybot@amazon.com> * feat: add test case for parseLLMOutput Signed-off-by: Pavan Yekbote <pybot@amazon.com> --------- Signed-off-by: Pavan Yekbote <pybot@amazon.com> * [BUG] Allow user to control react agent max_interations value to prevent empty response (#3756) * fix: expose max_iteration for react Signed-off-by: Pavan Yekbote <pybot@amazon.com> * fix: defaults for agent execution and differentiate between step and step result Signed-off-by: Pavan Yekbote <pybot@amazon.com> * fix: return react agent id in agent response to expose more details Signed-off-by: Pavan Yekbote <pybot@amazon.com> * spotless Signed-off-by: Pavan Yekbote <pybot@amazon.com> * fix: remove test prompt from react system prompt Signed-off-by: Pavan Yekbote <pybot@amazon.com> * refactor: rename parameters exposed to user to executor Signed-off-by: Pavan Yekbote <pybot@amazon.com> * fix: give user complete control over planner system prompt Signed-off-by: Pavan Yekbote <pybot@amazon.com> --------- Signed-off-by: Pavan Yekbote <pybot@amazon.com> * Clean up JSM from MCP (#3773) Signed-off-by: rithin-pullela-aws <rithinp@amazon.com> * [Bug] ListTools call does not return tool attributes (#3785) * initial commit for MCP server in OpenSearch (#3781) * initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * Remove beta1 qualifier (#3794) (#3795) (cherry picked from commit 3f503f1) Signed-off-by: Peter Zhu <zhujiaxi@amazon.com> Co-authored-by: Peter Zhu <zhujiaxi@amazon.com> * [AUTO] Increment version to 3.1.0-SNAPSHOT (#3789) * Increment version to 3.1.0-SNAPSHOT Signed-off-by: opensearch-ci-bot <opensearch-infra@amazon.com> * Update build.gradle Signed-off-by: Peter Zhu <zhujiaxi@amazon.com> --------- Signed-off-by: opensearch-ci-bot <opensearch-infra@amazon.com> Signed-off-by: Peter Zhu <zhujiaxi@amazon.com> Co-authored-by: opensearch-ci-bot <opensearch-infra@amazon.com> Co-authored-by: Peter Zhu <zhujiaxi@amazon.com> * add release note for 3.0 (#3792) Signed-off-by: Mingshi Liu <mingshl@amazon.com> * support MCP session management (#3803) * support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in #3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * upgrade http client to version align with core (#3809) * upgrade http client to versoin align with core Signed-off-by: zane-neo <zaniu@amazon.com> * upgrade httpclient-h2 to correct versiono Signed-off-by: zane-neo <zaniu@amazon.com> * use placeholder approach Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * support customized message endpoint and addressing comments (#3810) * support customized message endpoint and addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failures Signed-off-by: zane-neo <zaniu@amazon.com> * add files to jacoco exception Signed-off-by: zane-neo <zaniu@amazon.com> * fix tool name issue and optimize register tool api Signed-off-by: zane-neo <zaniu@amazon.com> * fix schema not parsed correctly issue and NPE when parameters is null Signed-off-by: zane-neo <zaniu@amazon.com> * fix failure UT Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * excluding circuit breaker for Agent (#3814) Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> * change release note (#3811) * change release note Signed-off-by: zane-neo <zaniu@amazon.com> * Update opensearch-ml-common.release-notes-3.0.0.0.md * Update opensearch-ml-common.release-notes-3.0.0.0.md * Update opensearch-ml-common.release-notes-3.0.0.0.md --------- Signed-off-by: zane-neo <zaniu@amazon.com> Co-authored-by: Peter Zhu <zhujiaxi@amazon.com> * Downgrade MCP version to 0.9 (#3821) Signed-off-by: rithin-pullela-aws <rithinp@amazon.com> * remove libs folder (#3824) Signed-off-by: Yaliang Wu <ylwu@amazon.com> * add more logging to deploy/undeploy flows for better debugging (#3825) * add more logging to deploy/undeploy flows for better debugging Signed-off-by: Bhavana Goud Ramaram <rbhavna@amazon.com> * Fix python client not able to connect to MCP server issue (#3822) Signed-off-by: zane-neo <zaniu@amazon.com> Co-authored-by: Dhrubo Saha <dhrubo@amazon.com> * exclude trusted connector check for hidden model (#3838) Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> * adding tenantId to the connector executor when this is inline connector (#3837) * adding tenantId to the connector executor when this is inline connector Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> * added more unit tests Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> --------- Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> --------- Signed-off-by: Pavan Yekbote <pybot@amazon.com> Signed-off-by: rithin-pullela-aws <rithinp@amazon.com> Signed-off-by: zane-neo <zaniu@amazon.com> Signed-off-by: Peter Zhu <zhujiaxi@amazon.com> Signed-off-by: opensearch-ci-bot <opensearch-infra@amazon.com> Signed-off-by: Mingshi Liu <mingshl@amazon.com> Signed-off-by: Dhrubo Saha <dhrubo@amazon.com> Signed-off-by: Yaliang Wu <ylwu@amazon.com> Signed-off-by: Bhavana Goud Ramaram <rbhavna@amazon.com> Co-authored-by: Pavan Yekbote <pybot@amazon.com> Co-authored-by: Rithin Pullela <rithinp@amazon.com> Co-authored-by: zane-neo <zaniu@amazon.com> Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com> Co-authored-by: Peter Zhu <zhujiaxi@amazon.com> Co-authored-by: opensearch-ci-bot <opensearch-infra@amazon.com> Co-authored-by: Mingshi Liu <mingshl@amazon.com> Co-authored-by: Yaliang Wu <ylwu@amazon.com> Co-authored-by: Bhavana Goud Ramaram <rbhavna@amazon.com>
* initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com>
* support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in opensearch-project#3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com>
* initial commit for MCP server in OpenSearch (#3781) * initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * support MCP session management (#3803) * support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in #3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> * Create prompt API & System Index for prompt Signed-off-by: seungwon cho <rycho@amazon.com> * spotless is applied & disabled wildcard import Signed-off-by: seungwon cho <rycho@amazon.com> * javadoc added & header added & minor code errors fixed Signed-off-by: seungwon cho <rycho@amazon.com> * Apply spotless Signed-off-by: seungwon cho <rycho@amazon.com> * apply spotless Signed-off-by: seungwon cho <rycho@amazon.com> * addressed comments Signed-off-by: seungwon cho <rycho@amazon.com> * apply spotless Signed-off-by: seungwon cho <rycho@amazon.com> * addresses comments Signed-off-by: seungwon cho <rycho@amazon.com> * apply spotless Signed-off-by: seungwon cho <rycho@amazon.com> * addressed comments Signed-off-by: seungwon cho <rycho@amazon.com> * solve gradle build issue Signed-off-by: seungwon cho <rycho@amazon.com> * add test cases for create-api Signed-off-by: seungwon cho <rycho@amazon.com> * fix javadoc test case failure Signed-off-by: seungwon cho <rycho@amazon.com> * fix javadoc error Signed-off-by: seungwon cho <rycho@amazon.com> * fix guava noclass issue Signed-off-by: seungwon cho <rycho@amazon.com> * fix jacocoTestCoverageVerification fail Signed-off-by: seungwon cho <rycho@amazon.com> * improve test coverages Signed-off-by: seungwon cho <rycho@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> Signed-off-by: seungwon cho <rycho@amazon.com> Co-authored-by: zane-neo <zaniu@amazon.com>
* initial commit for MCP server in OpenSearch Signed-off-by: zane-neo <zaniu@amazon.com> * Make change to support register or remove tools across cluster Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * fix UT failure caused by code change Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * format code Signed-off-by: zane-neo <zaniu@amazon.com> * add license header Signed-off-by: zane-neo <zaniu@amazon.com> * fix notifications initialized not respond issue Signed-off-by: zane-neo <zaniu@amazon.com> * fix minor issues and add UTs Signed-off-by: zane-neo <zaniu@amazon.com> * Add more UTs Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> Signed-off-by: Abdul Muneer Kolarkunnu <muneer.kolarkunnu@netapp.com>
* support MCP session management Signed-off-by: zane-neo <zaniu@amazon.com> * Addressing comments Signed-off-by: zane-neo <zaniu@amazon.com> * add feature flag for mcp server and renaming mcp connector feature flag Signed-off-by: zane-neo <zaniu@amazon.com> * Address critical comments in opensearch-project#3781 Signed-off-by: zane-neo <zaniu@amazon.com> --------- Signed-off-by: zane-neo <zaniu@amazon.com> Signed-off-by: Abdul Muneer Kolarkunnu <muneer.kolarkunnu@netapp.com>
Description
This PR is to support MCP server within OpenSearch, the feature is experimental and you'll need to enable transport-reactor-netty4 to test, for more details can refer this: https://docs.opensearch.org/docs/latest/install-and-configure/configuring-opensearch/network-settings/#selecting-the-transport
There are several experimental APIs are introduced:
The later twos are standard MCP's sse and message APIs. An example of using these API is like below:
Sample response:
Sample response:
Sample response:
Sample response:
Sample response:
A example project that uses MCP client to connect to MCP server in OpenSearch can be found here: https://github.com/zane-neo/opensearch-mcpserver-test-example
Related Issues
opensearch-project/OpenSearch#17577
Check List
--signoff.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.