opensearch-mcp-server 2.0.7__tar.gz → 2.0.9__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.7 → opensearch_mcp_server-2.0.9}/.github/workflows/pypi-publish.yaml +5 -0
  2. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/PKG-INFO +1 -1
  3. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/pyproject.toml +1 -1
  4. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/base.py +37 -5
  5. opensearch_mcp_server-2.0.9/src/version.py +1 -0
  6. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/uv.lock +1 -1
  7. opensearch_mcp_server-2.0.7/src/version.py +0 -1
  8. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/.env.example +0 -0
  9. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/.github/workflows/release.yml +0 -0
  10. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/.gitignore +0 -0
  11. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/.python-version +0 -0
  12. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/CONTRIBUTING.md +0 -0
  13. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/Dockerfile +0 -0
  14. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/LICENSE +0 -0
  15. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/Makefile +0 -0
  16. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/README.md +0 -0
  17. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/cliff.toml +0 -0
  18. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/docker-compose-elasticsearch.yml +0 -0
  19. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/docker-compose-opensearch.yml +0 -0
  20. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/python-sdk-anthropic/.gitignore +0 -0
  21. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/python-sdk-anthropic/__init__.py +0 -0
  22. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/python-sdk-anthropic/client.py +0 -0
  23. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/python-sdk-anthropic/config.py +0 -0
  24. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/README.md +0 -0
  25. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/build.gradle +0 -0
  26. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.jar +0 -0
  27. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.properties +0 -0
  28. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/gradle.properties +0 -0
  29. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/gradlew +0 -0
  30. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/gradlew.bat +0 -0
  31. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/settings.gradle +0 -0
  32. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/src/main/java/spring/ai/mcp/spring_ai_mcp/Application.java +0 -0
  33. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/src/main/resources/application.yml +0 -0
  34. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/src/main/resources/mcp-servers-config.json +0 -0
  35. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/mcp_client/spring-ai/src/test/java/spring/ai/mcp/spring_ai_mcp/SpringAiMcpApplicationTests.java +0 -0
  36. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/__init__.py +0 -0
  37. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/__init__.py +0 -0
  38. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/__init__.py +0 -0
  39. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/alias.py +0 -0
  40. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/client.py +0 -0
  41. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/cluster.py +0 -0
  42. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/document.py +0 -0
  43. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/general.py +0 -0
  44. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/common/index.py +0 -0
  45. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/clients/exceptions.py +0 -0
  46. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/server.py +0 -0
  47. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/__init__.py +0 -0
  48. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/alias.py +0 -0
  49. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/cluster.py +0 -0
  50. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/document.py +0 -0
  51. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/general.py +0 -0
  52. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/index.py +0 -0
  53. {opensearch_mcp_server-2.0.7 → opensearch_mcp_server-2.0.9}/src/tools/register.py +0 -0
@@ -47,6 +47,11 @@ jobs:
47
47
 
48
48
  # Update elasticsearch version
49
49
  sed -i 's/elasticsearch==.*/elasticsearch==${{ matrix.variant.elasticsearch_version }}",/' pyproject.toml
50
+
51
+ # Update script name to match package name (only for non-opensearch packages)
52
+ if [[ "${{ matrix.variant.name }}" != "opensearch-mcp-server" ]]; then
53
+ sed -i 's/^elasticsearch-mcp-server = /"${{ matrix.variant.name }}" = /' pyproject.toml
54
+ fi
50
55
 
51
56
  - name: Build ${{ matrix.variant.name }} package
52
57
  run: uv build
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensearch-mcp-server
3
- Version: 2.0.7
3
+ Version: 2.0.9
4
4
  Summary: MCP Server for interacting with Elasticsearch and OpenSearch
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "opensearch-mcp-server"
3
- version = "2.0.7"
3
+ version = "2.0.9"
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 = int(es_version.split('.')[0])
88
+
89
+ if major_version >= 8:
90
+ # ES 8+ uses basic_auth
91
+ return {"basic_auth": (username, password)}
92
+ else:
93
+ # ES 7 and below use http_auth
94
+ return {"http_auth": (username, password)}
95
+ except (ImportError, ValueError, AttributeError):
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.9"
@@ -287,7 +287,7 @@ wheels = [
287
287
 
288
288
  [[package]]
289
289
  name = "elasticsearch-mcp-server"
290
- version = "2.0.7"
290
+ version = "2.0.9"
291
291
  source = { editable = "." }
292
292
  dependencies = [
293
293
  { name = "anthropic" },
@@ -1 +0,0 @@
1
- __version__ = "2.0.7"