elasticsearch-mcp-server 0.1.3__tar.gz → 1.0.0__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.

Potentially problematic release.


This version of elasticsearch-mcp-server might be problematic. Click here for more details.

Files changed (19) hide show
  1. elasticsearch_mcp_server-1.0.0/.github/workflows/pypi-publish.yaml +41 -0
  2. elasticsearch_mcp_server-1.0.0/.github/workflows/release.yml +42 -0
  3. elasticsearch_mcp_server-1.0.0/Makefile +18 -0
  4. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/PKG-INFO +34 -8
  5. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/README.md +33 -7
  6. elasticsearch_mcp_server-1.0.0/cliff.toml +100 -0
  7. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/pyproject.toml +9 -5
  8. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.env +0 -0
  9. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.gitignore +1 -1
  10. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.python-version +0 -0
  11. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/LICENSE +0 -0
  12. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/docker-compose.yml +0 -0
  13. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/__init__.py +0 -0
  14. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/es_client.py +0 -0
  15. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/server.py +0 -0
  16. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/cluster.py +0 -0
  17. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/document.py +0 -0
  18. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/index.py +0 -0
  19. {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/uv.lock +0 -0
@@ -0,0 +1,41 @@
1
+ # This workflow will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: PyPI Publish
10
+
11
+ on:
12
+ workflow_run:
13
+ workflows: ["Release"]
14
+ types:
15
+ - completed
16
+
17
+ env:
18
+ UV_PUBLISH_TOKEN: '${{ secrets.PYPI_API_TOKEN }}'
19
+
20
+ jobs:
21
+ deploy:
22
+ runs-on: ubuntu-latest
23
+ if: ${{ github.event.workflow_run.conclusion == 'success' }}
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v2
29
+ with:
30
+ python-version: '3.10.x'
31
+
32
+ - name: Install dependencies
33
+ run: |
34
+ python -m pip install uv
35
+ uv sync
36
+
37
+ - name: Build package
38
+ run: uv build
39
+
40
+ - name: Publish package
41
+ run: uv publish
@@ -0,0 +1,42 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ release:
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: write
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v4
20
+ with:
21
+ python-version: '3.x'
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install git-cliff
27
+
28
+ - name: Get version from tag
29
+ id: get_version
30
+ run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
31
+
32
+ - name: Generate changelog
33
+ run: |
34
+ git-cliff --output CHANGELOG.md --latest
35
+
36
+ - name: Create Release
37
+ uses: softprops/action-gh-release@v1
38
+ with:
39
+ name: v${{ env.VERSION }}
40
+ body_path: CHANGELOG.md
41
+ draft: false
42
+ prerelease: false
@@ -0,0 +1,18 @@
1
+ .PHONY: release
2
+
3
+ release:
4
+ @if [ -z "$(version)" ]; then \
5
+ echo "Please specify version: e.g, make release version=v0.0.6"; \
6
+ exit 1; \
7
+ fi
8
+ @echo "Updating version to $(version:v%=%)"
9
+ @python -c 'import tomli; import tomli_w; \
10
+ data = tomli.load(open("pyproject.toml", "rb")); \
11
+ data["project"]["version"] = "$(version:v%=%)"; \
12
+ tomli_w.dump(data, open("pyproject.toml", "wb"))'
13
+ @git add pyproject.toml
14
+ @git commit -m "release: update version to $(version:v%=%)"
15
+ @git push origin main
16
+ @git tag $(version)
17
+ @git push origin $(version)
18
+ @echo "Version updated and tag pushed. GitHub Actions will handle the release."
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: elasticsearch-mcp-server
3
- Version: 0.1.3
3
+ Version: 1.0.0
4
4
  Summary: MCP Server for interacting with Elasticsearch
5
5
  License: Apache License
6
6
  Version 2.0, January 2004
@@ -255,7 +255,33 @@ You can access Kibana from http://localhost:5601.
255
255
 
256
256
  ## Usage with Claude Desktop
257
257
 
258
- 1. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`:
258
+ Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
259
+
260
+ ### Option 1: Using uvx (Recommended)
261
+
262
+ Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally
263
+
264
+ ```json
265
+ {
266
+ "mcpServers": {
267
+ "elasticsearch-mcp-server": {
268
+ "command": "uvx",
269
+ "args": [
270
+ "elasticsearch-mcp-server"
271
+ ],
272
+ "env": {
273
+ "ELASTIC_HOST": "https://localhost:9200",
274
+ "ELASTIC_USERNAME": "elastic",
275
+ "ELASTIC_PASSWORD": "test123"
276
+ }
277
+ }
278
+ }
279
+ }
280
+ ```
281
+
282
+ ### Option 2: Using uv with local development
283
+
284
+ Using `uv` requires cloning the repository locally and specifying the path to the source code.
259
285
 
260
286
  ```json
261
287
  {
@@ -264,14 +290,14 @@ You can access Kibana from http://localhost:5601.
264
290
  "command": "uv",
265
291
  "args": [
266
292
  "--directory",
267
- "path/to/elasticsearch_mcp_server/src",
293
+ "path/to/src/elasticsearch_mcp_server",
268
294
  "run",
269
- "server.py"
295
+ "elasticsearch-mcp-server"
270
296
  ],
271
297
  "env": {
272
- "ELASTIC_HOST": "<your_elastic_url>",
273
- "ELASTIC_USERNAME": "<your_elastic_username>",
274
- "ELASTIC_PASSWORD": "<your_elastic_password>>"
298
+ "ELASTIC_HOST": "https://localhost:9200",
299
+ "ELASTIC_USERNAME": "elastic",
300
+ "ELASTIC_PASSWORD": "test123"
275
301
  }
276
302
  }
277
303
  }
@@ -281,7 +307,7 @@ You can access Kibana from http://localhost:5601.
281
307
  - On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
282
308
  - On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
283
309
 
284
- 3. Restart Claude Desktop to load the new MCP server.
310
+ Restart Claude Desktop to load the new MCP server.
285
311
 
286
312
  Now you can interact with your Elasticsearch cluster through Claude using natural language commands like:
287
313
  - "List all indices in the cluster"
@@ -42,7 +42,33 @@ You can access Kibana from http://localhost:5601.
42
42
 
43
43
  ## Usage with Claude Desktop
44
44
 
45
- 1. Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`:
45
+ Add the following configuration to Claude Desktop's config file `claude_desktop_config.json`.
46
+
47
+ ### Option 1: Using uvx (Recommended)
48
+
49
+ Using `uvx` will automatically install the package from PyPI, no need to clone the repository locally
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "elasticsearch-mcp-server": {
55
+ "command": "uvx",
56
+ "args": [
57
+ "elasticsearch-mcp-server"
58
+ ],
59
+ "env": {
60
+ "ELASTIC_HOST": "https://localhost:9200",
61
+ "ELASTIC_USERNAME": "elastic",
62
+ "ELASTIC_PASSWORD": "test123"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ ### Option 2: Using uv with local development
70
+
71
+ Using `uv` requires cloning the repository locally and specifying the path to the source code.
46
72
 
47
73
  ```json
48
74
  {
@@ -51,14 +77,14 @@ You can access Kibana from http://localhost:5601.
51
77
  "command": "uv",
52
78
  "args": [
53
79
  "--directory",
54
- "path/to/elasticsearch_mcp_server/src",
80
+ "path/to/src/elasticsearch_mcp_server",
55
81
  "run",
56
- "server.py"
82
+ "elasticsearch-mcp-server"
57
83
  ],
58
84
  "env": {
59
- "ELASTIC_HOST": "<your_elastic_url>",
60
- "ELASTIC_USERNAME": "<your_elastic_username>",
61
- "ELASTIC_PASSWORD": "<your_elastic_password>>"
85
+ "ELASTIC_HOST": "https://localhost:9200",
86
+ "ELASTIC_USERNAME": "elastic",
87
+ "ELASTIC_PASSWORD": "test123"
62
88
  }
63
89
  }
64
90
  }
@@ -68,7 +94,7 @@ You can access Kibana from http://localhost:5601.
68
94
  - On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
69
95
  - On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
70
96
 
71
- 3. Restart Claude Desktop to load the new MCP server.
97
+ Restart Claude Desktop to load the new MCP server.
72
98
 
73
99
  Now you can interact with your Elasticsearch cluster through Claude using natural language commands like:
74
100
  - "List all indices in the cluster"
@@ -0,0 +1,100 @@
1
+ # git-cliff ~ configuration file
2
+ # https://git-cliff.org/docs/configuration
3
+
4
+ [changelog]
5
+ # template for the changelog header
6
+ header = """
7
+ # Changelog\n
8
+ """
9
+ # template for the changelog body
10
+ # https://keats.github.io/tera/docs/#introduction
11
+ body = """
12
+ {% if version %}\
13
+ {% if previous.version %}\
14
+ ## [{{ version | trim_start_matches(pat="v") }}]($REPO/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
15
+ {% else %}\
16
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
17
+ {% endif %}\
18
+ {% else %}\
19
+ ## [unreleased]
20
+ {% endif %}\
21
+ {% for group, commits in commits | group_by(attribute="group") %}
22
+ ### {{ group | striptags | trim | upper_first }}
23
+ {% for commit in commits
24
+ | filter(attribute="scope")
25
+ | sort(attribute="scope") %}
26
+ - **({{commit.scope}})**{% if commit.breaking %} [**breaking**]{% endif %} \
27
+ {{ commit.message }} - ([{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})) - @{{ commit.author.name }}
28
+ {%- endfor -%}
29
+ {% raw %}\n{% endraw %}\
30
+ {%- for commit in commits %}
31
+ {%- if commit.scope -%}
32
+ {% else -%}
33
+ - {% if commit.breaking %} [**breaking**]{% endif %}\
34
+ {{ commit.message }} - ([{{ commit.id | truncate(length=7, end="") }}]($REPO/commit/{{ commit.id }})) - @{{ commit.author.name }}
35
+ {% endif -%}
36
+ {% endfor -%}
37
+ {% endfor %}\n
38
+ """
39
+ # template for the changelog footer
40
+ footer = """
41
+ <!-- generated by git-cliff -->
42
+ """
43
+ # remove the leading and trailing whitespace from the templates
44
+ trim = true
45
+ # postprocessors
46
+ postprocessors = [
47
+ { pattern = '\$REPO', replace = "https://github.com/cr7258/elasticsearch-mcp-server" }, # replace repository URL
48
+ ]
49
+
50
+ [git]
51
+ # parse the commits based on https://www.conventionalcommits.org
52
+ conventional_commits = true
53
+ # filter out the commits that are not conventional
54
+ filter_unconventional = true
55
+ # process each line of a commit as an individual commit
56
+ split_commits = false
57
+ # regex for preprocessing the commit messages
58
+ commit_preprocessors = [
59
+ # { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/cr7258/elasticsearch-mcp-server/issues/${2}))"}, # replace issue numbers
60
+ ]
61
+ # regex for parsing and grouping commits
62
+ commit_parsers = [
63
+ { message = "^feat", group = "<!-- 0 -->⛰️ Features" },
64
+ { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
65
+ { message = "^doc", group = "<!-- 3 -->📚 Documentation" },
66
+ { message = "^perf", group = "<!-- 4 -->⚡ Performance" },
67
+ { message = "^refactor\\(clippy\\)", skip = true },
68
+ { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
69
+ { message = "^style", group = "<!-- 5 -->🎨 Styling" },
70
+ { message = "^test", group = "<!-- 6 -->🧪 Testing" },
71
+ { message = "^chore\\(release\\): prepare for", skip = true },
72
+ { message = "^chore\\(deps.*\\)", skip = true },
73
+ { message = "^chore\\(pr\\)", skip = true },
74
+ { message = "^chore\\(pull\\)", skip = true },
75
+ { message = "^chore\\(npm\\).*yarn\\.lock", skip = true },
76
+ { message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
77
+ { body = ".*security", group = "<!-- 8 -->🛡️ Security" },
78
+ { message = "^revert", group = "<!-- 9 -->◀️ Revert" },
79
+ ]
80
+
81
+ # filter out the commits that are not matched by commit parsers
82
+ filter_commits = false
83
+ # sort the tags topologically
84
+ topo_order = false
85
+ # sort the commits inside sections by oldest/newest order
86
+ sort_commits = "oldest"
87
+ # regex for matching git tags
88
+ tag_pattern = "^v[0-9]"
89
+ # regex for skipping tags
90
+ skip_tags = ""
91
+ # regex for ignoring tags
92
+ ignore_tags = ""
93
+ # use tag date instead of commit date
94
+ date_order = true
95
+ # path to git binary
96
+ git_path = "git"
97
+ # whether to use relaxed or strict semver parsing
98
+ relaxed_semver = true
99
+ # only show the changes for the current version
100
+ tag_range = true
@@ -1,8 +1,7 @@
1
1
  [project]
2
2
  name = "elasticsearch-mcp-server"
3
- version = "0.1.3"
3
+ version = "1.0.0"
4
4
  description = "MCP Server for interacting with Elasticsearch"
5
- license = { file = "LICENSE" }
6
5
  readme = "README.md"
7
6
  requires-python = ">=3.10"
8
7
  dependencies = [
@@ -12,9 +11,14 @@ dependencies = [
12
11
  "fastmcp>=0.4.0",
13
12
  ]
14
13
 
15
- [build-system]
16
- requires = ["hatchling"]
17
- build-backend = "hatchling.build"
14
+ [project.license]
15
+ file = "LICENSE"
18
16
 
19
17
  [project.scripts]
20
18
  elasticsearch-mcp-server = "elasticsearch_mcp_server:main"
19
+
20
+ [build-system]
21
+ requires = [
22
+ "hatchling",
23
+ ]
24
+ build-backend = "hatchling.build"
@@ -1,5 +1,5 @@
1
- .vscode
2
1
  .idea
2
+ .vscode
3
3
  .venv
4
4
  dist
5
5
  __pycache__