opensearch-mcp-server 2.0.4__tar.gz → 2.0.6__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.
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/Dockerfile +1 -1
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/PKG-INFO +24 -25
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/README.md +21 -22
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/python-sdk-anthropic/config.py +1 -1
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/pyproject.toml +3 -3
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/smithery.yaml +3 -3
- opensearch_mcp_server-2.0.6/src/server.py +158 -0
- opensearch_mcp_server-2.0.6/src/version.py +1 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/uv.lock +161 -12
- opensearch_mcp_server-2.0.4/src/server.py +0 -74
- opensearch_mcp_server-2.0.4/src/version.py +0 -1
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.env.example +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.github/workflows/pypi-publish.yaml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.github/workflows/release.yml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.gitignore +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.python-version +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/CONTRIBUTING.md +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/LICENSE +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/Makefile +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/cliff.toml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/docker-compose-elasticsearch.yml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/docker-compose-opensearch.yml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/python-sdk-anthropic/.gitignore +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/python-sdk-anthropic/__init__.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/python-sdk-anthropic/client.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/README.md +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/build.gradle +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.jar +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradle/wrapper/gradle-wrapper.properties +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradle.properties +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradlew +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradlew.bat +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/settings.gradle +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/src/main/java/spring/ai/mcp/spring_ai_mcp/Application.java +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/src/main/resources/application.yml +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/src/main/resources/mcp-servers-config.json +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/src/test/java/spring/ai/mcp/spring_ai_mcp/SpringAiMcpApplicationTests.java +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/__init__.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/__init__.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/base.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/__init__.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/alias.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/client.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/cluster.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/document.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/general.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/common/index.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/clients/exceptions.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/__init__.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/alias.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/cluster.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/document.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/general.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/index.py +0 -0
- {opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/src/tools/register.py +0 -0
@@ -19,7 +19,7 @@ RUN hatch build && pip install dist/*.whl
|
|
19
19
|
|
20
20
|
# Set environment variables required for the MCP server
|
21
21
|
# These can be overridden at runtime with docker run --env
|
22
|
-
ENV
|
22
|
+
ENV ELASTICSEARCH_HOSTS="https://localhost:9200"
|
23
23
|
ENV ELASTICSEARCH_USERNAME="elastic"
|
24
24
|
ENV ELASTICSEARCH_PASSWORD="test123"
|
25
25
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: opensearch-mcp-server
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.6
|
4
4
|
Summary: MCP Server for interacting with Elasticsearch and OpenSearch
|
5
5
|
License: Apache License
|
6
6
|
Version 2.0, January 2004
|
@@ -207,18 +207,21 @@ License-File: LICENSE
|
|
207
207
|
Requires-Python: >=3.10
|
208
208
|
Requires-Dist: anthropic==0.49.0
|
209
209
|
Requires-Dist: elasticsearch==8.17.2
|
210
|
-
Requires-Dist: fastmcp==
|
211
|
-
Requires-Dist: mcp==1.
|
210
|
+
Requires-Dist: fastmcp==2.8.0
|
211
|
+
Requires-Dist: mcp==1.9.2
|
212
212
|
Requires-Dist: opensearch-py==2.8.0
|
213
213
|
Requires-Dist: python-dotenv==1.1.0
|
214
214
|
Requires-Dist: tomli-w==1.2.0
|
215
215
|
Requires-Dist: tomli==2.2.1
|
216
216
|
Description-Content-Type: text/markdown
|
217
217
|
|
218
|
+
|
218
219
|
# Elasticsearch/OpenSearch MCP Server
|
219
220
|
|
220
221
|
[](https://smithery.ai/server/elasticsearch-mcp-server)
|
221
222
|
|
223
|
+
[](https://mseep.ai/app/cr7258-elasticsearch-mcp-server)
|
224
|
+
|
222
225
|
## Overview
|
223
226
|
|
224
227
|
A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction. This server enables searching documents, analyzing indices, and managing cluster through a set of tools.
|
@@ -282,19 +285,11 @@ The default Elasticsearch username is `elastic` and password is `test123`. The d
|
|
282
285
|
|
283
286
|
You can access Kibana/OpenSearch Dashboards from http://localhost:5601.
|
284
287
|
|
285
|
-
##
|
286
|
-
|
287
|
-
### Option 1: Installing via Smithery
|
288
|
+
## Stdio
|
288
289
|
|
289
|
-
|
290
|
-
|
291
|
-
```bash
|
292
|
-
npx -y @smithery/cli install elasticsearch-mcp-server --client claude
|
293
|
-
```
|
290
|
+
### Option 1: Using uvx
|
294
291
|
|
295
|
-
|
296
|
-
|
297
|
-
Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
|
292
|
+
Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to 's config file `claude_desktop_config.json`.
|
298
293
|
|
299
294
|
```json
|
300
295
|
// For Elasticsearch
|
@@ -332,7 +327,7 @@ Using `uvx` will automatically install the package from PyPI, no need to clone t
|
|
332
327
|
}
|
333
328
|
```
|
334
329
|
|
335
|
-
### Option
|
330
|
+
### Option 2: Using uv with local development
|
336
331
|
|
337
332
|
Using `uv` requires cloning the repository locally and specifying the path to the source code. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
|
338
333
|
|
@@ -378,20 +373,24 @@ Using `uv` requires cloning the repository locally and specifying the path to th
|
|
378
373
|
}
|
379
374
|
```
|
380
375
|
|
381
|
-
|
382
|
-
- On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
|
376
|
+
## SSE
|
383
377
|
|
384
|
-
|
378
|
+
```bash
|
379
|
+
# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
|
380
|
+
uv run src/server.py elasticsearch-mcp-server --transport sse
|
385
381
|
|
386
|
-
|
387
|
-
-
|
388
|
-
|
389
|
-
- "Show me the cluster health status"
|
382
|
+
# The host, port, and path can be specified using the --host, --port, and --path options
|
383
|
+
uv run src/server.py elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
|
384
|
+
```
|
390
385
|
|
391
|
-
##
|
386
|
+
## Streamable HTTP
|
387
|
+
|
388
|
+
```bash
|
389
|
+
# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
|
390
|
+
uv run src/server.py elasticsearch-mcp-server --transport streamable-http
|
392
391
|
|
393
|
-
|
394
|
-
uv run
|
392
|
+
# The host, port, and path can be specified using the --host, --port, and --path options
|
393
|
+
uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
|
395
394
|
```
|
396
395
|
|
397
396
|
## License
|
@@ -1,7 +1,10 @@
|
|
1
|
+
|
1
2
|
# Elasticsearch/OpenSearch MCP Server
|
2
3
|
|
3
4
|
[](https://smithery.ai/server/elasticsearch-mcp-server)
|
4
5
|
|
6
|
+
[](https://mseep.ai/app/cr7258-elasticsearch-mcp-server)
|
7
|
+
|
5
8
|
## Overview
|
6
9
|
|
7
10
|
A Model Context Protocol (MCP) server implementation that provides Elasticsearch and OpenSearch interaction. This server enables searching documents, analyzing indices, and managing cluster through a set of tools.
|
@@ -65,19 +68,11 @@ The default Elasticsearch username is `elastic` and password is `test123`. The d
|
|
65
68
|
|
66
69
|
You can access Kibana/OpenSearch Dashboards from http://localhost:5601.
|
67
70
|
|
68
|
-
##
|
69
|
-
|
70
|
-
### Option 1: Installing via Smithery
|
71
|
+
## Stdio
|
71
72
|
|
72
|
-
|
73
|
-
|
74
|
-
```bash
|
75
|
-
npx -y @smithery/cli install elasticsearch-mcp-server --client claude
|
76
|
-
```
|
73
|
+
### Option 1: Using uvx
|
77
74
|
|
78
|
-
|
79
|
-
|
80
|
-
Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
|
75
|
+
Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally. Add the following configuration to 's config file `claude_desktop_config.json`.
|
81
76
|
|
82
77
|
```json
|
83
78
|
// For Elasticsearch
|
@@ -115,7 +110,7 @@ Using `uvx` will automatically install the package from PyPI, no need to clone t
|
|
115
110
|
}
|
116
111
|
```
|
117
112
|
|
118
|
-
### Option
|
113
|
+
### Option 2: Using uv with local development
|
119
114
|
|
120
115
|
Using `uv` requires cloning the repository locally and specifying the path to the source code. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
|
121
116
|
|
@@ -161,20 +156,24 @@ Using `uv` requires cloning the repository locally and specifying the path to th
|
|
161
156
|
}
|
162
157
|
```
|
163
158
|
|
164
|
-
|
165
|
-
- On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
|
159
|
+
## SSE
|
166
160
|
|
167
|
-
|
161
|
+
```bash
|
162
|
+
# By default, the SSE MCP server will serve on http://127.0.0.1:8000/sse
|
163
|
+
uv run src/server.py elasticsearch-mcp-server --transport sse
|
168
164
|
|
169
|
-
|
170
|
-
-
|
171
|
-
|
172
|
-
- "Show me the cluster health status"
|
165
|
+
# The host, port, and path can be specified using the --host, --port, and --path options
|
166
|
+
uv run src/server.py elasticsearch-mcp-server --transport sse --host 0.0.0.0 --port 8000 --path /sse
|
167
|
+
```
|
173
168
|
|
174
|
-
##
|
169
|
+
## Streamable HTTP
|
170
|
+
|
171
|
+
```bash
|
172
|
+
# By default, the Streamable HTTP MCP server will serve on http://127.0.0.1:8000/mcp
|
173
|
+
uv run src/server.py elasticsearch-mcp-server --transport streamable-http
|
175
174
|
|
176
|
-
|
177
|
-
uv run
|
175
|
+
# The host, port, and path can be specified using the --host, --port, and --path options
|
176
|
+
uv run src/server.py elasticsearch-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcp
|
178
177
|
```
|
179
178
|
|
180
179
|
## License
|
@@ -15,7 +15,7 @@ class LoggerConfig(py_set.BaseSettings):
|
|
15
15
|
|
16
16
|
|
17
17
|
class ElasticsearchConfig(py_set.BaseSettings):
|
18
|
-
host: str = getenv("
|
18
|
+
host: str = getenv("ELASTICSEARCH_HOSTS", "")
|
19
19
|
port: int = int(getenv("ELASTICSEARCH_PORT", "30930"))
|
20
20
|
scroll_size: int = 10_000
|
21
21
|
scroll: str = "1m"
|
@@ -1,15 +1,15 @@
|
|
1
1
|
[project]
|
2
2
|
name = "opensearch-mcp-server"
|
3
|
-
version = "2.0.
|
3
|
+
version = "2.0.6"
|
4
4
|
description = "MCP Server for interacting with Elasticsearch and OpenSearch"
|
5
5
|
readme = "README.md"
|
6
6
|
requires-python = ">=3.10"
|
7
7
|
dependencies = [
|
8
8
|
"elasticsearch==8.17.2",
|
9
9
|
"opensearch-py==2.8.0",
|
10
|
-
"mcp==1.
|
10
|
+
"mcp==1.9.2",
|
11
11
|
"python-dotenv==1.1.0",
|
12
|
-
"fastmcp==
|
12
|
+
"fastmcp==2.8.0",
|
13
13
|
"anthropic==0.49.0",
|
14
14
|
"tomli==2.2.1",
|
15
15
|
"tomli-w==1.2.0",
|
@@ -6,11 +6,11 @@ startCommand:
|
|
6
6
|
# JSON Schema defining the configuration options for the MCP.
|
7
7
|
type: object
|
8
8
|
required:
|
9
|
-
-
|
9
|
+
- elasticsearchHosts
|
10
10
|
- elasticsearchUsername
|
11
11
|
- elasticsearchPassword
|
12
12
|
properties:
|
13
|
-
|
13
|
+
elasticsearchHosts:
|
14
14
|
type: string
|
15
15
|
description: The host URL of the Elasticsearch cluster.
|
16
16
|
elasticsearchUsername:
|
@@ -22,4 +22,4 @@ startCommand:
|
|
22
22
|
commandFunction:
|
23
23
|
# A function that produces the CLI command to start the MCP on stdio.
|
24
24
|
|-
|
25
|
-
(config) => ({ command: 'elasticsearch-mcp-server', env: {
|
25
|
+
(config) => ({ command: 'elasticsearch-mcp-server', env: { ELASTICSEARCH_HOSTS: config.elasticsearchHosts, ELASTICSEARCH_USERNAME: config.elasticsearchUsername, ELASTICSEARCH_PASSWORD: config.elasticsearchPassword } })
|
@@ -0,0 +1,158 @@
|
|
1
|
+
import logging
|
2
|
+
import sys
|
3
|
+
import argparse
|
4
|
+
|
5
|
+
from fastmcp import FastMCP
|
6
|
+
|
7
|
+
from src.clients import create_search_client
|
8
|
+
from src.tools.alias import AliasTools
|
9
|
+
from src.tools.cluster import ClusterTools
|
10
|
+
from src.tools.document import DocumentTools
|
11
|
+
from src.tools.general import GeneralTools
|
12
|
+
from src.tools.index import IndexTools
|
13
|
+
from src.tools.register import ToolsRegister
|
14
|
+
from src.version import __version__ as VERSION
|
15
|
+
|
16
|
+
class SearchMCPServer:
|
17
|
+
def __init__(self, engine_type):
|
18
|
+
# Set engine type
|
19
|
+
self.engine_type = engine_type
|
20
|
+
self.name = f"{self.engine_type}-mcp-server"
|
21
|
+
self.mcp = FastMCP(self.name)
|
22
|
+
self.logger = logging.getLogger()
|
23
|
+
self.logger.info(f"Initializing {self.name}, Version: {VERSION}")
|
24
|
+
|
25
|
+
# Create the corresponding search client
|
26
|
+
self.search_client = create_search_client(self.engine_type)
|
27
|
+
|
28
|
+
# Initialize tools
|
29
|
+
self._register_tools()
|
30
|
+
|
31
|
+
def _register_tools(self):
|
32
|
+
"""Register all MCP tools."""
|
33
|
+
# Create a tools register
|
34
|
+
register = ToolsRegister(self.logger, self.search_client, self.mcp)
|
35
|
+
|
36
|
+
# Define all tool classes to register
|
37
|
+
tool_classes = [
|
38
|
+
IndexTools,
|
39
|
+
DocumentTools,
|
40
|
+
ClusterTools,
|
41
|
+
AliasTools,
|
42
|
+
GeneralTools,
|
43
|
+
]
|
44
|
+
# Register all tools
|
45
|
+
register.register_all_tools(tool_classes)
|
46
|
+
|
47
|
+
|
48
|
+
def run_search_server(engine_type, transport, host, port, path):
|
49
|
+
"""Run search server with specified engine type and transport options.
|
50
|
+
|
51
|
+
Args:
|
52
|
+
engine_type: Type of search engine to use ("elasticsearch" or "opensearch")
|
53
|
+
transport: Transport protocol to use ("stdio", "streamable-http", or "sse")
|
54
|
+
host: Host to bind to when using HTTP transports
|
55
|
+
port: Port to bind to when using HTTP transports
|
56
|
+
path: URL path prefix for HTTP transports
|
57
|
+
"""
|
58
|
+
|
59
|
+
server = SearchMCPServer(engine_type=engine_type)
|
60
|
+
|
61
|
+
if transport in ["streamable-http", "sse"]:
|
62
|
+
server.logger.info(f"Starting {server.name} with {transport} transport on {host}:{port}{path}")
|
63
|
+
server.mcp.run(transport=transport, host=host, port=port, path=path)
|
64
|
+
else:
|
65
|
+
server.logger.info(f"Starting {server.name} with {transport} transport")
|
66
|
+
server.mcp.run(transport=transport)
|
67
|
+
|
68
|
+
def parse_server_args():
|
69
|
+
"""Parse command line arguments for the MCP server.
|
70
|
+
|
71
|
+
Returns:
|
72
|
+
Parsed arguments
|
73
|
+
"""
|
74
|
+
parser = argparse.ArgumentParser()
|
75
|
+
parser.add_argument(
|
76
|
+
"--transport", "-t",
|
77
|
+
default="stdio",
|
78
|
+
choices=["stdio", "streamable-http", "sse"],
|
79
|
+
help="Transport protocol to use (default: stdio)"
|
80
|
+
)
|
81
|
+
parser.add_argument(
|
82
|
+
"--host", "-H",
|
83
|
+
default="127.0.0.1",
|
84
|
+
help="Host to bind to when using HTTP transports (default: 127.0.0.1)"
|
85
|
+
)
|
86
|
+
parser.add_argument(
|
87
|
+
"--port", "-p",
|
88
|
+
type=int,
|
89
|
+
default=8000,
|
90
|
+
help="Port to bind to when using HTTP transports (default: 8000)"
|
91
|
+
)
|
92
|
+
parser.add_argument(
|
93
|
+
"--path", "-P",
|
94
|
+
help="URL path prefix for HTTP transports (default: /mcp for streamable-http, /sse for sse)"
|
95
|
+
)
|
96
|
+
|
97
|
+
args = parser.parse_args()
|
98
|
+
|
99
|
+
# Set default path based on transport type if not specified
|
100
|
+
if args.path is None:
|
101
|
+
if args.transport == "sse":
|
102
|
+
args.path = "/sse"
|
103
|
+
else:
|
104
|
+
args.path = "/mcp"
|
105
|
+
|
106
|
+
return args
|
107
|
+
|
108
|
+
def elasticsearch_mcp_server():
|
109
|
+
"""Entry point for Elasticsearch MCP server."""
|
110
|
+
args = parse_server_args()
|
111
|
+
|
112
|
+
# Run the server with the specified options
|
113
|
+
run_search_server(
|
114
|
+
engine_type="elasticsearch",
|
115
|
+
transport=args.transport,
|
116
|
+
host=args.host,
|
117
|
+
port=args.port,
|
118
|
+
path=args.path
|
119
|
+
)
|
120
|
+
|
121
|
+
def opensearch_mcp_server():
|
122
|
+
"""Entry point for OpenSearch MCP server."""
|
123
|
+
args = parse_server_args()
|
124
|
+
|
125
|
+
# Run the server with the specified options
|
126
|
+
run_search_server(
|
127
|
+
engine_type="opensearch",
|
128
|
+
transport=args.transport,
|
129
|
+
host=args.host,
|
130
|
+
port=args.port,
|
131
|
+
path=args.path
|
132
|
+
)
|
133
|
+
|
134
|
+
if __name__ == "__main__":
|
135
|
+
# Require elasticsearch-mcp-server or opensearch-mcp-server as the first argument
|
136
|
+
if len(sys.argv) <= 1 or sys.argv[1] not in ["elasticsearch-mcp-server", "opensearch-mcp-server"]:
|
137
|
+
print("Error: First argument must be 'elasticsearch-mcp-server' or 'opensearch-mcp-server'")
|
138
|
+
sys.exit(1)
|
139
|
+
|
140
|
+
# Determine engine type based on the first argument
|
141
|
+
engine_type = "elasticsearch" # Default
|
142
|
+
if sys.argv[1] == "opensearch-mcp-server":
|
143
|
+
engine_type = "opensearch"
|
144
|
+
|
145
|
+
# Remove the first argument so it doesn't interfere with argparse
|
146
|
+
sys.argv.pop(1)
|
147
|
+
|
148
|
+
# Parse command line arguments
|
149
|
+
args = parse_server_args()
|
150
|
+
|
151
|
+
# Run the server with the specified options
|
152
|
+
run_search_server(
|
153
|
+
engine_type=engine_type,
|
154
|
+
transport=args.transport,
|
155
|
+
host=args.host,
|
156
|
+
port=args.port,
|
157
|
+
path=args.path
|
158
|
+
)
|
@@ -0,0 +1 @@
|
|
1
|
+
__version__ = "2.0.6"
|
@@ -44,6 +44,18 @@ wheels = [
|
|
44
44
|
{ url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 },
|
45
45
|
]
|
46
46
|
|
47
|
+
[[package]]
|
48
|
+
name = "authlib"
|
49
|
+
version = "1.6.0"
|
50
|
+
source = { registry = "https://pypi.org/simple" }
|
51
|
+
dependencies = [
|
52
|
+
{ name = "cryptography" },
|
53
|
+
]
|
54
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a2/9d/b1e08d36899c12c8b894a44a5583ee157789f26fc4b176f8e4b6217b56e1/authlib-1.6.0.tar.gz", hash = "sha256:4367d32031b7af175ad3a323d571dc7257b7099d55978087ceae4a0d88cd3210", size = 158371 }
|
55
|
+
wheels = [
|
56
|
+
{ url = "https://files.pythonhosted.org/packages/84/29/587c189bbab1ccc8c86a03a5d0e13873df916380ef1be461ebe6acebf48d/authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d", size = 239981 },
|
57
|
+
]
|
58
|
+
|
47
59
|
[[package]]
|
48
60
|
name = "certifi"
|
49
61
|
version = "2025.1.31"
|
@@ -53,6 +65,63 @@ wheels = [
|
|
53
65
|
{ url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 },
|
54
66
|
]
|
55
67
|
|
68
|
+
[[package]]
|
69
|
+
name = "cffi"
|
70
|
+
version = "1.17.1"
|
71
|
+
source = { registry = "https://pypi.org/simple" }
|
72
|
+
dependencies = [
|
73
|
+
{ name = "pycparser" },
|
74
|
+
]
|
75
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 }
|
76
|
+
wheels = [
|
77
|
+
{ url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 },
|
78
|
+
{ url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 },
|
79
|
+
{ url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 },
|
80
|
+
{ url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 },
|
81
|
+
{ url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 },
|
82
|
+
{ url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 },
|
83
|
+
{ url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 },
|
84
|
+
{ url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 },
|
85
|
+
{ url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 },
|
86
|
+
{ url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 },
|
87
|
+
{ url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 },
|
88
|
+
{ url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 },
|
89
|
+
{ url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 },
|
90
|
+
{ url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 },
|
91
|
+
{ url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 },
|
92
|
+
{ url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 },
|
93
|
+
{ url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 },
|
94
|
+
{ url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 },
|
95
|
+
{ url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 },
|
96
|
+
{ url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 },
|
97
|
+
{ url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 },
|
98
|
+
{ url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 },
|
99
|
+
{ url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 },
|
100
|
+
{ url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 },
|
101
|
+
{ url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 },
|
102
|
+
{ url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 },
|
103
|
+
{ url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 },
|
104
|
+
{ url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 },
|
105
|
+
{ url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 },
|
106
|
+
{ url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 },
|
107
|
+
{ url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 },
|
108
|
+
{ url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 },
|
109
|
+
{ url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 },
|
110
|
+
{ url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 },
|
111
|
+
{ url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 },
|
112
|
+
{ url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 },
|
113
|
+
{ url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 },
|
114
|
+
{ url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 },
|
115
|
+
{ url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 },
|
116
|
+
{ url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 },
|
117
|
+
{ url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 },
|
118
|
+
{ url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 },
|
119
|
+
{ url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 },
|
120
|
+
{ url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 },
|
121
|
+
{ url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 },
|
122
|
+
{ url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 },
|
123
|
+
]
|
124
|
+
|
56
125
|
[[package]]
|
57
126
|
name = "charset-normalizer"
|
58
127
|
version = "3.4.1"
|
@@ -135,6 +204,53 @@ wheels = [
|
|
135
204
|
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 },
|
136
205
|
]
|
137
206
|
|
207
|
+
[[package]]
|
208
|
+
name = "cryptography"
|
209
|
+
version = "45.0.4"
|
210
|
+
source = { registry = "https://pypi.org/simple" }
|
211
|
+
dependencies = [
|
212
|
+
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
|
213
|
+
]
|
214
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fe/c8/a2a376a8711c1e11708b9c9972e0c3223f5fc682552c82d8db844393d6ce/cryptography-45.0.4.tar.gz", hash = "sha256:7405ade85c83c37682c8fe65554759800a4a8c54b2d96e0f8ad114d31b808d57", size = 744890 }
|
215
|
+
wheels = [
|
216
|
+
{ url = "https://files.pythonhosted.org/packages/cc/1c/92637793de053832523b410dbe016d3f5c11b41d0cf6eef8787aabb51d41/cryptography-45.0.4-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:425a9a6ac2823ee6e46a76a21a4e8342d8fa5c01e08b823c1f19a8b74f096069", size = 7055712 },
|
217
|
+
{ url = "https://files.pythonhosted.org/packages/ba/14/93b69f2af9ba832ad6618a03f8a034a5851dc9a3314336a3d71c252467e1/cryptography-45.0.4-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:680806cf63baa0039b920f4976f5f31b10e772de42f16310a6839d9f21a26b0d", size = 4205335 },
|
218
|
+
{ url = "https://files.pythonhosted.org/packages/67/30/fae1000228634bf0b647fca80403db5ca9e3933b91dd060570689f0bd0f7/cryptography-45.0.4-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4ca0f52170e821bc8da6fc0cc565b7bb8ff8d90d36b5e9fdd68e8a86bdf72036", size = 4431487 },
|
219
|
+
{ url = "https://files.pythonhosted.org/packages/6d/5a/7dffcf8cdf0cb3c2430de7404b327e3db64735747d641fc492539978caeb/cryptography-45.0.4-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f3fe7a5ae34d5a414957cc7f457e2b92076e72938423ac64d215722f6cf49a9e", size = 4208922 },
|
220
|
+
{ url = "https://files.pythonhosted.org/packages/c6/f3/528729726eb6c3060fa3637253430547fbaaea95ab0535ea41baa4a6fbd8/cryptography-45.0.4-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:25eb4d4d3e54595dc8adebc6bbd5623588991d86591a78c2548ffb64797341e2", size = 3900433 },
|
221
|
+
{ url = "https://files.pythonhosted.org/packages/d9/4a/67ba2e40f619e04d83c32f7e1d484c1538c0800a17c56a22ff07d092ccc1/cryptography-45.0.4-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ce1678a2ccbe696cf3af15a75bb72ee008d7ff183c9228592ede9db467e64f1b", size = 4464163 },
|
222
|
+
{ url = "https://files.pythonhosted.org/packages/7e/9a/b4d5aa83661483ac372464809c4b49b5022dbfe36b12fe9e323ca8512420/cryptography-45.0.4-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:49fe9155ab32721b9122975e168a6760d8ce4cffe423bcd7ca269ba41b5dfac1", size = 4208687 },
|
223
|
+
{ url = "https://files.pythonhosted.org/packages/db/b7/a84bdcd19d9c02ec5807f2ec2d1456fd8451592c5ee353816c09250e3561/cryptography-45.0.4-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2882338b2a6e0bd337052e8b9007ced85c637da19ef9ecaf437744495c8c2999", size = 4463623 },
|
224
|
+
{ url = "https://files.pythonhosted.org/packages/d8/84/69707d502d4d905021cac3fb59a316344e9f078b1da7fb43ecde5e10840a/cryptography-45.0.4-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:23b9c3ea30c3ed4db59e7b9619272e94891f8a3a5591d0b656a7582631ccf750", size = 4332447 },
|
225
|
+
{ url = "https://files.pythonhosted.org/packages/f3/ee/d4f2ab688e057e90ded24384e34838086a9b09963389a5ba6854b5876598/cryptography-45.0.4-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b0a97c927497e3bc36b33987abb99bf17a9a175a19af38a892dc4bbb844d7ee2", size = 4572830 },
|
226
|
+
{ url = "https://files.pythonhosted.org/packages/70/d4/994773a261d7ff98034f72c0e8251fe2755eac45e2265db4c866c1c6829c/cryptography-45.0.4-cp311-abi3-win32.whl", hash = "sha256:e00a6c10a5c53979d6242f123c0a97cff9f3abed7f064fc412c36dc521b5f257", size = 2932769 },
|
227
|
+
{ url = "https://files.pythonhosted.org/packages/5a/42/c80bd0b67e9b769b364963b5252b17778a397cefdd36fa9aa4a5f34c599a/cryptography-45.0.4-cp311-abi3-win_amd64.whl", hash = "sha256:817ee05c6c9f7a69a16200f0c90ab26d23a87701e2a284bd15156783e46dbcc8", size = 3410441 },
|
228
|
+
{ url = "https://files.pythonhosted.org/packages/ce/0b/2488c89f3a30bc821c9d96eeacfcab6ff3accc08a9601ba03339c0fd05e5/cryptography-45.0.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:964bcc28d867e0f5491a564b7debb3ffdd8717928d315d12e0d7defa9e43b723", size = 7031836 },
|
229
|
+
{ url = "https://files.pythonhosted.org/packages/fe/51/8c584ed426093aac257462ae62d26ad61ef1cbf5b58d8b67e6e13c39960e/cryptography-45.0.4-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6a5bf57554e80f75a7db3d4b1dacaa2764611ae166ab42ea9a72bcdb5d577637", size = 4195746 },
|
230
|
+
{ url = "https://files.pythonhosted.org/packages/5c/7d/4b0ca4d7af95a704eef2f8f80a8199ed236aaf185d55385ae1d1610c03c2/cryptography-45.0.4-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:46cf7088bf91bdc9b26f9c55636492c1cce3e7aaf8041bbf0243f5e5325cfb2d", size = 4424456 },
|
231
|
+
{ url = "https://files.pythonhosted.org/packages/1d/45/5fabacbc6e76ff056f84d9f60eeac18819badf0cefc1b6612ee03d4ab678/cryptography-45.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7bedbe4cc930fa4b100fc845ea1ea5788fcd7ae9562e669989c11618ae8d76ee", size = 4198495 },
|
232
|
+
{ url = "https://files.pythonhosted.org/packages/55/b7/ffc9945b290eb0a5d4dab9b7636706e3b5b92f14ee5d9d4449409d010d54/cryptography-45.0.4-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:eaa3e28ea2235b33220b949c5a0d6cf79baa80eab2eb5607ca8ab7525331b9ff", size = 3885540 },
|
233
|
+
{ url = "https://files.pythonhosted.org/packages/7f/e3/57b010282346980475e77d414080acdcb3dab9a0be63071efc2041a2c6bd/cryptography-45.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:7ef2dde4fa9408475038fc9aadfc1fb2676b174e68356359632e980c661ec8f6", size = 4452052 },
|
234
|
+
{ url = "https://files.pythonhosted.org/packages/37/e6/ddc4ac2558bf2ef517a358df26f45bc774a99bf4653e7ee34b5e749c03e3/cryptography-45.0.4-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:6a3511ae33f09094185d111160fd192c67aa0a2a8d19b54d36e4c78f651dc5ad", size = 4198024 },
|
235
|
+
{ url = "https://files.pythonhosted.org/packages/3a/c0/85fa358ddb063ec588aed4a6ea1df57dc3e3bc1712d87c8fa162d02a65fc/cryptography-45.0.4-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:06509dc70dd71fa56eaa138336244e2fbaf2ac164fc9b5e66828fccfd2b680d6", size = 4451442 },
|
236
|
+
{ url = "https://files.pythonhosted.org/packages/33/67/362d6ec1492596e73da24e669a7fbbaeb1c428d6bf49a29f7a12acffd5dc/cryptography-45.0.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:5f31e6b0a5a253f6aa49be67279be4a7e5a4ef259a9f33c69f7d1b1191939872", size = 4325038 },
|
237
|
+
{ url = "https://files.pythonhosted.org/packages/53/75/82a14bf047a96a1b13ebb47fb9811c4f73096cfa2e2b17c86879687f9027/cryptography-45.0.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:944e9ccf67a9594137f942d5b52c8d238b1b4e46c7a0c2891b7ae6e01e7c80a4", size = 4560964 },
|
238
|
+
{ url = "https://files.pythonhosted.org/packages/cd/37/1a3cba4c5a468ebf9b95523a5ef5651244693dc712001e276682c278fc00/cryptography-45.0.4-cp37-abi3-win32.whl", hash = "sha256:c22fe01e53dc65edd1945a2e6f0015e887f84ced233acecb64b4daadb32f5c97", size = 2924557 },
|
239
|
+
{ url = "https://files.pythonhosted.org/packages/2a/4b/3256759723b7e66380397d958ca07c59cfc3fb5c794fb5516758afd05d41/cryptography-45.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:627ba1bc94f6adf0b0a2e35d87020285ead22d9f648c7e75bb64f367375f3b22", size = 3395508 },
|
240
|
+
{ url = "https://files.pythonhosted.org/packages/16/33/b38e9d372afde56906a23839302c19abdac1c505bfb4776c1e4b07c3e145/cryptography-45.0.4-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a77c6fb8d76e9c9f99f2f3437c1a4ac287b34eaf40997cfab1e9bd2be175ac39", size = 3580103 },
|
241
|
+
{ url = "https://files.pythonhosted.org/packages/c4/b9/357f18064ec09d4807800d05a48f92f3b369056a12f995ff79549fbb31f1/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7aad98a25ed8ac917fdd8a9c1e706e5a0956e06c498be1f713b61734333a4507", size = 4143732 },
|
242
|
+
{ url = "https://files.pythonhosted.org/packages/c4/9c/7f7263b03d5db329093617648b9bd55c953de0b245e64e866e560f9aac07/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3530382a43a0e524bc931f187fc69ef4c42828cf7d7f592f7f249f602b5a4ab0", size = 4385424 },
|
243
|
+
{ url = "https://files.pythonhosted.org/packages/a6/5a/6aa9d8d5073d5acc0e04e95b2860ef2684b2bd2899d8795fc443013e263b/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:6b613164cb8425e2f8db5849ffb84892e523bf6d26deb8f9bb76ae86181fa12b", size = 4142438 },
|
244
|
+
{ url = "https://files.pythonhosted.org/packages/42/1c/71c638420f2cdd96d9c2b287fec515faf48679b33a2b583d0f1eda3a3375/cryptography-45.0.4-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:96d4819e25bf3b685199b304a0029ce4a3caf98947ce8a066c9137cc78ad2c58", size = 4384622 },
|
245
|
+
{ url = "https://files.pythonhosted.org/packages/ef/ab/e3a055c34e97deadbf0d846e189237d3385dca99e1a7e27384c3b2292041/cryptography-45.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b97737a3ffbea79eebb062eb0d67d72307195035332501722a9ca86bab9e3ab2", size = 3328911 },
|
246
|
+
{ url = "https://files.pythonhosted.org/packages/ea/ba/cf442ae99ef363855ed84b39e0fb3c106ac66b7a7703f3c9c9cfe05412cb/cryptography-45.0.4-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4828190fb6c4bcb6ebc6331f01fe66ae838bb3bd58e753b59d4b22eb444b996c", size = 3590512 },
|
247
|
+
{ url = "https://files.pythonhosted.org/packages/28/9a/a7d5bb87d149eb99a5abdc69a41e4e47b8001d767e5f403f78bfaafc7aa7/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:03dbff8411206713185b8cebe31bc5c0eb544799a50c09035733716b386e61a4", size = 4146899 },
|
248
|
+
{ url = "https://files.pythonhosted.org/packages/17/11/9361c2c71c42cc5c465cf294c8030e72fb0c87752bacbd7a3675245e3db3/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51dfbd4d26172d31150d84c19bbe06c68ea4b7f11bbc7b3a5e146b367c311349", size = 4388900 },
|
249
|
+
{ url = "https://files.pythonhosted.org/packages/c0/76/f95b83359012ee0e670da3e41c164a0c256aeedd81886f878911581d852f/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:0339a692de47084969500ee455e42c58e449461e0ec845a34a6a9b9bf7df7fb8", size = 4146422 },
|
250
|
+
{ url = "https://files.pythonhosted.org/packages/09/ad/5429fcc4def93e577a5407988f89cf15305e64920203d4ac14601a9dc876/cryptography-45.0.4-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:0cf13c77d710131d33e63626bd55ae7c0efb701ebdc2b3a7952b9b23a0412862", size = 4388475 },
|
251
|
+
{ url = "https://files.pythonhosted.org/packages/99/49/0ab9774f64555a1b50102757811508f5ace451cf5dc0a2d074a4b9deca6a/cryptography-45.0.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:bbc505d1dc469ac12a0a064214879eac6294038d6b24ae9f71faae1448a9608d", size = 3337594 },
|
252
|
+
]
|
253
|
+
|
138
254
|
[[package]]
|
139
255
|
name = "distro"
|
140
256
|
version = "1.9.0"
|
@@ -171,7 +287,7 @@ wheels = [
|
|
171
287
|
|
172
288
|
[[package]]
|
173
289
|
name = "elasticsearch-mcp-server"
|
174
|
-
version = "2.0.
|
290
|
+
version = "2.0.6"
|
175
291
|
source = { editable = "." }
|
176
292
|
dependencies = [
|
177
293
|
{ name = "anthropic" },
|
@@ -188,8 +304,8 @@ dependencies = [
|
|
188
304
|
requires-dist = [
|
189
305
|
{ name = "anthropic", specifier = "==0.49.0" },
|
190
306
|
{ name = "elasticsearch", specifier = "==8.17.2" },
|
191
|
-
{ name = "fastmcp", specifier = "==
|
192
|
-
{ name = "mcp", specifier = "==1.
|
307
|
+
{ name = "fastmcp", specifier = "==2.8.0" },
|
308
|
+
{ name = "mcp", specifier = "==1.9.2" },
|
193
309
|
{ name = "opensearch-py", specifier = "==2.8.0" },
|
194
310
|
{ name = "python-dotenv", specifier = "==1.1.0" },
|
195
311
|
{ name = "tomli", specifier = "==2.2.1" },
|
@@ -215,19 +331,21 @@ wheels = [
|
|
215
331
|
|
216
332
|
[[package]]
|
217
333
|
name = "fastmcp"
|
218
|
-
version = "
|
334
|
+
version = "2.8.0"
|
219
335
|
source = { registry = "https://pypi.org/simple" }
|
220
336
|
dependencies = [
|
337
|
+
{ name = "authlib" },
|
338
|
+
{ name = "exceptiongroup" },
|
221
339
|
{ name = "httpx" },
|
222
340
|
{ name = "mcp" },
|
223
|
-
{ name = "pydantic" },
|
224
|
-
{ name = "pydantic-settings" },
|
341
|
+
{ name = "openapi-pydantic" },
|
225
342
|
{ name = "python-dotenv" },
|
343
|
+
{ name = "rich" },
|
226
344
|
{ name = "typer" },
|
227
345
|
]
|
228
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
346
|
+
sdist = { url = "https://files.pythonhosted.org/packages/8d/a3/d5b2c47b25d13cca8108e077bf4a72b255b113fb525f4c22ce9ca5af9b08/fastmcp-2.8.0.tar.gz", hash = "sha256:8a6427ece23d0a324d4be2043598c8b89a91b2b5688873d8ae1e7aeaa7960513", size = 2554559 }
|
229
347
|
wheels = [
|
230
|
-
{ url = "https://files.pythonhosted.org/packages/
|
348
|
+
{ url = "https://files.pythonhosted.org/packages/2c/05/b9b0ee091578ff37da8ef0bee8fff80bed95daff61834982a6064e3e327f/fastmcp-2.8.0-py3-none-any.whl", hash = "sha256:772468e98dacd55ab3381f49dd2583341c41b0e5ef0d9c7620fd43833d949c0c", size = 137492 },
|
231
349
|
]
|
232
350
|
|
233
351
|
[[package]]
|
@@ -358,7 +476,7 @@ wheels = [
|
|
358
476
|
|
359
477
|
[[package]]
|
360
478
|
name = "mcp"
|
361
|
-
version = "1.
|
479
|
+
version = "1.9.2"
|
362
480
|
source = { registry = "https://pypi.org/simple" }
|
363
481
|
dependencies = [
|
364
482
|
{ name = "anyio" },
|
@@ -366,13 +484,14 @@ dependencies = [
|
|
366
484
|
{ name = "httpx-sse" },
|
367
485
|
{ name = "pydantic" },
|
368
486
|
{ name = "pydantic-settings" },
|
487
|
+
{ name = "python-multipart" },
|
369
488
|
{ name = "sse-starlette" },
|
370
489
|
{ name = "starlette" },
|
371
|
-
{ name = "uvicorn" },
|
490
|
+
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
|
372
491
|
]
|
373
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
492
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ea/03/77c49cce3ace96e6787af624611b627b2828f0dca0f8df6f330a10eea51e/mcp-1.9.2.tar.gz", hash = "sha256:3c7651c053d635fd235990a12e84509fe32780cd359a5bbef352e20d4d963c05", size = 333066 }
|
374
493
|
wheels = [
|
375
|
-
{ url = "https://files.pythonhosted.org/packages/
|
494
|
+
{ url = "https://files.pythonhosted.org/packages/5d/a6/8f5ee9da9f67c0fd8933f63d6105f02eabdac8a8c0926728368ffbb6744d/mcp-1.9.2-py3-none-any.whl", hash = "sha256:bc29f7fd67d157fef378f89a4210384f5fecf1168d0feb12d22929818723f978", size = 131083 },
|
376
495
|
]
|
377
496
|
|
378
497
|
[[package]]
|
@@ -384,6 +503,18 @@ wheels = [
|
|
384
503
|
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 },
|
385
504
|
]
|
386
505
|
|
506
|
+
[[package]]
|
507
|
+
name = "openapi-pydantic"
|
508
|
+
version = "0.5.1"
|
509
|
+
source = { registry = "https://pypi.org/simple" }
|
510
|
+
dependencies = [
|
511
|
+
{ name = "pydantic" },
|
512
|
+
]
|
513
|
+
sdist = { url = "https://files.pythonhosted.org/packages/02/2e/58d83848dd1a79cb92ed8e63f6ba901ca282c5f09d04af9423ec26c56fd7/openapi_pydantic-0.5.1.tar.gz", hash = "sha256:ff6835af6bde7a459fb93eb93bb92b8749b754fc6e51b2f1590a19dc3005ee0d", size = 60892 }
|
514
|
+
wheels = [
|
515
|
+
{ url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381 },
|
516
|
+
]
|
517
|
+
|
387
518
|
[[package]]
|
388
519
|
name = "opensearch-py"
|
389
520
|
version = "2.8.0"
|
@@ -400,6 +531,15 @@ wheels = [
|
|
400
531
|
{ url = "https://files.pythonhosted.org/packages/23/35/a957c6fb88ff6874996be688448b889475cf0ea978446cd5a30e764e0561/opensearch_py-2.8.0-py3-none-any.whl", hash = "sha256:52c60fdb5d4dcf6cce3ee746c13b194529b0161e0f41268b98ab8f1624abe2fa", size = 353492 },
|
401
532
|
]
|
402
533
|
|
534
|
+
[[package]]
|
535
|
+
name = "pycparser"
|
536
|
+
version = "2.22"
|
537
|
+
source = { registry = "https://pypi.org/simple" }
|
538
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 }
|
539
|
+
wheels = [
|
540
|
+
{ url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 },
|
541
|
+
]
|
542
|
+
|
403
543
|
[[package]]
|
404
544
|
name = "pydantic"
|
405
545
|
version = "2.11.1"
|
@@ -545,6 +685,15 @@ wheels = [
|
|
545
685
|
{ url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 },
|
546
686
|
]
|
547
687
|
|
688
|
+
[[package]]
|
689
|
+
name = "python-multipart"
|
690
|
+
version = "0.0.20"
|
691
|
+
source = { registry = "https://pypi.org/simple" }
|
692
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 }
|
693
|
+
wheels = [
|
694
|
+
{ url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 },
|
695
|
+
]
|
696
|
+
|
548
697
|
[[package]]
|
549
698
|
name = "requests"
|
550
699
|
version = "2.32.3"
|
@@ -1,74 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
import sys
|
3
|
-
|
4
|
-
from fastmcp import FastMCP
|
5
|
-
|
6
|
-
from src.clients import create_search_client
|
7
|
-
from src.tools.alias import AliasTools
|
8
|
-
from src.tools.cluster import ClusterTools
|
9
|
-
from src.tools.document import DocumentTools
|
10
|
-
from src.tools.general import GeneralTools
|
11
|
-
from src.tools.index import IndexTools
|
12
|
-
from src.tools.register import ToolsRegister
|
13
|
-
from src.version import __version__ as VERSION
|
14
|
-
|
15
|
-
class SearchMCPServer:
|
16
|
-
def __init__(self, engine_type):
|
17
|
-
# Set engine type
|
18
|
-
self.engine_type = engine_type
|
19
|
-
self.name = f"{self.engine_type}_mcp_server"
|
20
|
-
self.mcp = FastMCP(self.name)
|
21
|
-
self.logger = logging.getLogger()
|
22
|
-
self.logger.info(f"Initializing {self.name}, Version: {VERSION}")
|
23
|
-
|
24
|
-
# Create the corresponding search client
|
25
|
-
self.search_client = create_search_client(self.engine_type)
|
26
|
-
|
27
|
-
# Initialize tools
|
28
|
-
self._register_tools()
|
29
|
-
|
30
|
-
def _register_tools(self):
|
31
|
-
"""Register all MCP tools."""
|
32
|
-
# Create a tools register
|
33
|
-
register = ToolsRegister(self.logger, self.search_client, self.mcp)
|
34
|
-
|
35
|
-
# Define all tool classes to register
|
36
|
-
tool_classes = [
|
37
|
-
IndexTools,
|
38
|
-
DocumentTools,
|
39
|
-
ClusterTools,
|
40
|
-
AliasTools,
|
41
|
-
GeneralTools,
|
42
|
-
]
|
43
|
-
# Register all tools
|
44
|
-
register.register_all_tools(tool_classes)
|
45
|
-
|
46
|
-
def run(self):
|
47
|
-
"""Run the MCP server."""
|
48
|
-
self.mcp.run()
|
49
|
-
|
50
|
-
def run_search_server(engine_type):
|
51
|
-
"""Run search server with specified engine type."""
|
52
|
-
server = SearchMCPServer(engine_type=engine_type)
|
53
|
-
server.run()
|
54
|
-
|
55
|
-
def elasticsearch_mcp_server():
|
56
|
-
"""Entry point for Elasticsearch MCP server."""
|
57
|
-
run_search_server(engine_type="elasticsearch")
|
58
|
-
|
59
|
-
def opensearch_mcp_server():
|
60
|
-
"""Entry point for OpenSearch MCP server."""
|
61
|
-
run_search_server(engine_type="opensearch")
|
62
|
-
|
63
|
-
if __name__ == "__main__":
|
64
|
-
# Default to Elasticsearch
|
65
|
-
engine_type = "elasticsearch"
|
66
|
-
|
67
|
-
# If command line arguments are provided, use the first argument as the engine type
|
68
|
-
if len(sys.argv) > 1:
|
69
|
-
engine_type = sys.argv[1].lower()
|
70
|
-
|
71
|
-
if engine_type == "opensearch":
|
72
|
-
opensearch_mcp_server()
|
73
|
-
else:
|
74
|
-
elasticsearch_mcp_server()
|
@@ -1 +0,0 @@
|
|
1
|
-
__version__ = "2.0.4"
|
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/.github/workflows/pypi-publish.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/docker-compose-elasticsearch.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/build.gradle
RENAMED
File without changes
|
File without changes
|
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradle.properties
RENAMED
File without changes
|
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/gradlew.bat
RENAMED
File without changes
|
{opensearch_mcp_server-2.0.4 → opensearch_mcp_server-2.0.6}/mcp_client/spring-ai/settings.gradle
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|