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.
- elasticsearch_mcp_server-1.0.0/.github/workflows/pypi-publish.yaml +41 -0
- elasticsearch_mcp_server-1.0.0/.github/workflows/release.yml +42 -0
- elasticsearch_mcp_server-1.0.0/Makefile +18 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/PKG-INFO +34 -8
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/README.md +33 -7
- elasticsearch_mcp_server-1.0.0/cliff.toml +100 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/pyproject.toml +9 -5
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.env +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.gitignore +1 -1
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/.python-version +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/LICENSE +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/docker-compose.yml +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/__init__.py +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/es_client.py +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/server.py +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/cluster.py +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/document.py +0 -0
- {elasticsearch_mcp_server-0.1.3 → elasticsearch_mcp_server-1.0.0}/src/elasticsearch_mcp_server/tools/index.py +0 -0
- {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.
|
|
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
|
-
|
|
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
|
|
293
|
+
"path/to/src/elasticsearch_mcp_server",
|
|
268
294
|
"run",
|
|
269
|
-
"server
|
|
295
|
+
"elasticsearch-mcp-server"
|
|
270
296
|
],
|
|
271
297
|
"env": {
|
|
272
|
-
"ELASTIC_HOST": "
|
|
273
|
-
"ELASTIC_USERNAME": "
|
|
274
|
-
"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
|
-
|
|
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
|
-
|
|
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
|
|
80
|
+
"path/to/src/elasticsearch_mcp_server",
|
|
55
81
|
"run",
|
|
56
|
-
"server
|
|
82
|
+
"elasticsearch-mcp-server"
|
|
57
83
|
],
|
|
58
84
|
"env": {
|
|
59
|
-
"ELASTIC_HOST": "
|
|
60
|
-
"ELASTIC_USERNAME": "
|
|
61
|
-
"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
|
-
|
|
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.
|
|
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
|
-
[
|
|
16
|
-
|
|
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"
|
|
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
|