opensearch-mcp-server 2.0.8__tar.gz → 2.0.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/PKG-INFO +16 -1
  2. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/README.md +15 -0
  3. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/pyproject.toml +1 -1
  4. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/base.py +37 -5
  5. opensearch_mcp_server-2.0.10/src/version.py +1 -0
  6. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/uv.lock +1 -1
  7. opensearch_mcp_server-2.0.8/src/version.py +0 -1
  8. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/.env.example +0 -0
  9. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/.github/workflows/pypi-publish.yaml +0 -0
  10. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/.github/workflows/release.yml +0 -0
  11. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/.gitignore +0 -0
  12. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/.python-version +0 -0
  13. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/CONTRIBUTING.md +0 -0
  14. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/Dockerfile +0 -0
  15. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/LICENSE +0 -0
  16. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/Makefile +0 -0
  17. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/cliff.toml +0 -0
  18. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/docker-compose-elasticsearch.yml +0 -0
  19. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/docker-compose-opensearch.yml +0 -0
  20. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/python-sdk-anthropic/.gitignore +0 -0
  21. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/python-sdk-anthropic/__init__.py +0 -0
  22. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/python-sdk-anthropic/client.py +0 -0
  23. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/python-sdk-anthropic/config.py +0 -0
  24. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/README.md +0 -0
  25. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/build.gradle +0 -0
  26. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.jar +0 -0
  27. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.properties +0 -0
  28. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/gradle.properties +0 -0
  29. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/gradlew +0 -0
  30. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/gradlew.bat +0 -0
  31. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/settings.gradle +0 -0
  32. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/src/main/java/spring/ai/mcp/spring_ai_mcp/Application.java +0 -0
  33. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/src/main/resources/application.yml +0 -0
  34. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/src/main/resources/mcp-servers-config.json +0 -0
  35. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/mcp_client/spring-ai/src/test/java/spring/ai/mcp/spring_ai_mcp/SpringAiMcpApplicationTests.java +0 -0
  36. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/__init__.py +0 -0
  37. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/__init__.py +0 -0
  38. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/__init__.py +0 -0
  39. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/alias.py +0 -0
  40. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/client.py +0 -0
  41. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/cluster.py +0 -0
  42. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/document.py +0 -0
  43. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/general.py +0 -0
  44. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/common/index.py +0 -0
  45. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/clients/exceptions.py +0 -0
  46. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/server.py +0 -0
  47. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/__init__.py +0 -0
  48. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/alias.py +0 -0
  49. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/cluster.py +0 -0
  50. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/document.py +0 -0
  51. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/general.py +0 -0
  52. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/index.py +0 -0
  53. {opensearch_mcp_server-2.0.8 → opensearch_mcp_server-2.0.10}/src/tools/register.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensearch-mcp-server
3
- Version: 2.0.8
3
+ Version: 2.0.10
4
4
  Summary: MCP Server for interacting with Elasticsearch and OpenSearch
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -427,6 +427,21 @@ uv run src/server.py elasticsearch-mcp-server --transport streamable-http
427
427
  uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
428
428
  ```
429
429
 
430
+ ## Compatibility
431
+
432
+ The MCP server is compatible with Elasticsearch 7.x, 8.x, and 9.x. By default, it uses the Elasticsearch 8.x client (without a suffix). To use the Elasticsearch 7.x client, run the `elasticsearch-mcp-server-es7` variant. For Elasticsearch 9.x, use `elasticsearch-mcp-server-es9`. For example:
433
+
434
+ ```bash
435
+ uvx elasticsearch-mcp-server-es7
436
+ ```
437
+
438
+ | MCP Server | Elasticsearch |
439
+ | --- | --- |
440
+ | elasticsearch-mcp-server-es7 | Elasticsearch 7.x |
441
+ | elasticsearch-mcp-server | Elasticsearch 8.x |
442
+ | elasticsearch-mcp-server-es9 | Elasticsearch 9.x |
443
+ | opensearch-mcp-server | OpenSearch 1.x, 2.x, 3.x |
444
+
430
445
  ## License
431
446
 
432
447
  This project is licensed under the Apache License Version 2.0 - see the [LICENSE](LICENSE) file for details.
@@ -210,6 +210,21 @@ uv run src/server.py elasticsearch-mcp-server --transport streamable-http
210
210
  uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
211
211
  ```
212
212
 
213
+ ## Compatibility
214
+
215
+ The MCP server is compatible with Elasticsearch 7.x, 8.x, and 9.x. By default, it uses the Elasticsearch 8.x client (without a suffix). To use the Elasticsearch 7.x client, run the `elasticsearch-mcp-server-es7` variant. For Elasticsearch 9.x, use `elasticsearch-mcp-server-es9`. For example:
216
+
217
+ ```bash
218
+ uvx elasticsearch-mcp-server-es7
219
+ ```
220
+
221
+ | MCP Server | Elasticsearch |
222
+ | --- | --- |
223
+ | elasticsearch-mcp-server-es7 | Elasticsearch 7.x |
224
+ | elasticsearch-mcp-server | Elasticsearch 8.x |
225
+ | elasticsearch-mcp-server-es9 | Elasticsearch 9.x |
226
+ | opensearch-mcp-server | OpenSearch 1.x, 2.x, 3.x |
227
+
213
228
  ## License
214
229
 
215
230
  This project is licensed under the Apache License Version 2.0 - see the [LICENSE](LICENSE) file for details.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "opensearch-mcp-server"
3
- version = "2.0.8"
3
+ version = "2.0.10"
4
4
  description = "MCP Server for interacting with Elasticsearch and OpenSearch"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,7 +1,7 @@
1
1
  from abc import ABC
2
2
  import logging
3
3
  import warnings
4
- from typing import Dict
4
+ from typing import Dict, Optional
5
5
 
6
6
  from elasticsearch import Elasticsearch
7
7
  import httpx
@@ -39,10 +39,13 @@ class SearchClientBase(ABC):
39
39
 
40
40
  # Initialize client based on engine type
41
41
  if engine_type == "elasticsearch":
42
+ # Get auth parameters based on elasticsearch package version
43
+ auth_params = self._get_elasticsearch_auth_params(username, password)
44
+
42
45
  self.client = Elasticsearch(
43
46
  hosts=hosts,
44
- basic_auth=(username, password) if username and password else None,
45
- verify_certs=verify_certs
47
+ verify_certs=verify_certs,
48
+ **auth_params
46
49
  )
47
50
  self.logger.info(f"Elasticsearch client initialized with hosts: {hosts}")
48
51
  elif engine_type == "opensearch":
@@ -64,9 +67,38 @@ class SearchClientBase(ABC):
64
67
  verify_certs=verify_certs,
65
68
  )
66
69
 
70
+ def _get_elasticsearch_auth_params(self, username: Optional[str], password: Optional[str]) -> Dict:
71
+ """
72
+ Get authentication parameters for Elasticsearch client based on package version.
73
+
74
+ Args:
75
+ username: Username for authentication
76
+ password: Password for authentication
77
+
78
+ Returns:
79
+ Dictionary with appropriate auth parameters for the ES version
80
+ """
81
+ if not username or not password:
82
+ return {}
83
+
84
+ # Check Elasticsearch package version to determine auth parameter name
85
+ try:
86
+ from elasticsearch import __version__ as es_version
87
+ major_version = es_version[0]
88
+ if major_version >= 8:
89
+ # ES 8+ uses basic_auth
90
+ return {"basic_auth": (username, password)}
91
+ else:
92
+ # ES 7 and below use http_auth
93
+ return {"http_auth": (username, password)}
94
+ except Exception as e:
95
+ self.logger.error(f"Failed to detect Elasticsearch version: {e}")
96
+ # If we can't detect version, try basic_auth first (ES 8+ default)
97
+ return {"basic_auth": (username, password)}
98
+
67
99
  class GeneralRestClient:
68
- def __init__(self, base_url: str, username: str, password: str, verify_certs: bool):
69
- self.base_url = base_url.rstrip("/")
100
+ def __init__(self, base_url: Optional[str], username: Optional[str], password: Optional[str], verify_certs: bool):
101
+ self.base_url = base_url.rstrip("/") if base_url else ""
70
102
  self.auth = (username, password) if username and password else None
71
103
  self.verify_certs = verify_certs
72
104
 
@@ -0,0 +1 @@
1
+ __version__ = "2.0.10"
@@ -287,7 +287,7 @@ wheels = [
287
287
 
288
288
  [[package]]
289
289
  name = "elasticsearch-mcp-server"
290
- version = "2.0.8"
290
+ version = "2.0.10"
291
291
  source = { editable = "." }
292
292
  dependencies = [
293
293
  { name = "anthropic" },
@@ -1 +0,0 @@
1
- __version__ = "2.0.8"