couchbase-mcp-server 0.5.2__tar.gz → 0.5.2rc2__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.
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/docker.yml +3 -26
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/update-mcp-registry.yml +4 -10
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/PKG-INFO +1 -2
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/README.md +0 -1
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/pyproject.toml +1 -1
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/server.json +3 -3
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/tools/query.py +1 -9
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/uv.lock +1 -1
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/alert-on-pr.yml +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/release.yml +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/test_release.yml +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.gitignore +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.pre-commit-config.yaml +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/CONTRIBUTING.md +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/DOCKER.md +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/Dockerfile +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/LICENSE +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/RELEASE.md +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/build.sh +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/glama.json +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/scripts/lint.sh +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/scripts/lint_fix.sh +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/scripts/update_version.sh +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/smithery.yaml +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/certs/__init__.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/certs/capella_root_ca.pem +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/mcp_server.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/tools/__init__.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/tools/index.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/tools/kv.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/tools/server.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/__init__.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/config.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/connection.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/constants.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/context.py +0 -0
- {couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/src/utils/index_utils.py +0 -0
|
@@ -32,39 +32,16 @@ jobs:
|
|
|
32
32
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
33
33
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
34
34
|
|
|
35
|
-
- name: Check if stable release
|
|
36
|
-
id: check-stable
|
|
37
|
-
if: startsWith(github.ref, 'refs/tags/')
|
|
38
|
-
run: |
|
|
39
|
-
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
40
|
-
echo "Checking tag: $TAG_NAME"
|
|
41
|
-
|
|
42
|
-
# Only match vX.Y.Z format (no suffixes like rc, alpha, beta)
|
|
43
|
-
if [[ "$TAG_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
44
|
-
echo "is_stable=true" >> $GITHUB_OUTPUT
|
|
45
|
-
echo "This is a STABLE release: $TAG_NAME"
|
|
46
|
-
else
|
|
47
|
-
echo "is_stable=false" >> $GITHUB_OUTPUT
|
|
48
|
-
echo "This is a PRE-RELEASE: $TAG_NAME (will not update 'latest' or major.minor tags)"
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
35
|
- name: Extract metadata
|
|
52
36
|
id: meta
|
|
53
37
|
uses: docker/metadata-action@v5
|
|
54
38
|
with:
|
|
55
39
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
56
|
-
flavor: |
|
|
57
|
-
# Disable automatic 'latest' tag to have explicit control
|
|
58
|
-
latest=false
|
|
59
40
|
tags: |
|
|
60
|
-
# For PRs: tag as pr-<number>
|
|
61
41
|
type=ref,event=pr
|
|
62
|
-
|
|
63
|
-
type=
|
|
64
|
-
|
|
65
|
-
type=match,pattern=v(\d+\.\d+),group=1,enable=${{ steps.check-stable.outputs.is_stable == 'true' }}
|
|
66
|
-
# For stable releases only: tag as 'latest'
|
|
67
|
-
type=raw,value=latest,enable=${{ steps.check-stable.outputs.is_stable == 'true' }}
|
|
42
|
+
type=semver,pattern={{version}}
|
|
43
|
+
type=semver,pattern={{major}}.{{minor}}
|
|
44
|
+
type=raw,value=latest
|
|
68
45
|
|
|
69
46
|
- name: Set build timestamp
|
|
70
47
|
id: timestamp
|
|
@@ -43,17 +43,13 @@ jobs:
|
|
|
43
43
|
|
|
44
44
|
- name: Validate version consistency
|
|
45
45
|
id: version
|
|
46
|
-
env:
|
|
47
|
-
HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
|
|
48
46
|
run: |
|
|
49
47
|
# Read versions from files
|
|
50
48
|
ROOT_VERSION=$(jq -r '.version' server.json)
|
|
51
49
|
# Only get versions from packages that have a version field (exclude null/empty)
|
|
52
50
|
PACKAGE_VERSIONS=$(jq -r '.packages[] | select(.version != null) | .version' server.json | sort -u)
|
|
53
51
|
PYPROJECT_VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
|
|
54
|
-
#
|
|
55
|
-
# Use environment variable to prevent code injection
|
|
56
|
-
TAG_VERSION=${HEAD_BRANCH#v}
|
|
52
|
+
TAG_VERSION=${GITHUB_REF_NAME#v}
|
|
57
53
|
|
|
58
54
|
echo "Version Check:"
|
|
59
55
|
echo " server.json root: $ROOT_VERSION"
|
|
@@ -141,9 +137,7 @@ jobs:
|
|
|
141
137
|
|
|
142
138
|
- name: Notify completion
|
|
143
139
|
if: success()
|
|
144
|
-
env:
|
|
145
|
-
VERSION: ${{ steps.version.outputs.version }}
|
|
146
140
|
run: |
|
|
147
|
-
echo "MCP Registry updated successfully for version $
|
|
148
|
-
echo "Docker image: docker.io/couchbaseecosystem/mcp-server-couchbase:$
|
|
149
|
-
echo "PyPI package: couchbase-mcp-server==$
|
|
141
|
+
echo "MCP Registry updated successfully for version ${{ steps.version.outputs.version }}"
|
|
142
|
+
echo "Docker image: docker.io/couchbaseecosystem/mcp-server-couchbase:${{ steps.version.outputs.version }}"
|
|
143
|
+
echo "PyPI package: couchbase-mcp-server==${{ steps.version.outputs.version }}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: couchbase-mcp-server
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2rc2
|
|
4
4
|
Summary: Couchbase MCP Server - The Developer Data Platform for Critical Applications in Our AI World
|
|
5
5
|
Project-URL: Homepage, https://github.com/Couchbase-Ecosystem/mcp-server-couchbase
|
|
6
6
|
Project-URL: Documentation, https://github.com/Couchbase-Ecosystem/mcp-server-couchbase#readme
|
|
@@ -45,7 +45,6 @@ An [MCP](https://modelcontextprotocol.io/) server implementation of Couchbase th
|
|
|
45
45
|
- Upsert a document by ID to a specified scope and collection
|
|
46
46
|
- Delete a document by ID from a specified scope and collection
|
|
47
47
|
- Run a [SQL++ query](https://www.couchbase.com/sqlplusplus/) on a specified scope
|
|
48
|
-
- Queries are automatically scoped to the specified bucket and scope, so use collection names directly (e.g., use `SELECT * FROM users` instead of `SELECT * FROM bucket.scope.users`)
|
|
49
48
|
- There is an option in the MCP server, `CB_MCP_READ_ONLY_QUERY_MODE` that is set to true by default to disable running SQL++ queries that change the data or the underlying collection structure. Note that the documents can still be updated by ID.
|
|
50
49
|
- Get the status of the MCP server
|
|
51
50
|
- Check the cluster credentials by connecting to the cluster
|
|
@@ -21,7 +21,6 @@ An [MCP](https://modelcontextprotocol.io/) server implementation of Couchbase th
|
|
|
21
21
|
- Upsert a document by ID to a specified scope and collection
|
|
22
22
|
- Delete a document by ID from a specified scope and collection
|
|
23
23
|
- Run a [SQL++ query](https://www.couchbase.com/sqlplusplus/) on a specified scope
|
|
24
|
-
- Queries are automatically scoped to the specified bucket and scope, so use collection names directly (e.g., use `SELECT * FROM users` instead of `SELECT * FROM bucket.scope.users`)
|
|
25
24
|
- There is an option in the MCP server, `CB_MCP_READ_ONLY_QUERY_MODE` that is set to true by default to disable running SQL++ queries that change the data or the underlying collection structure. Note that the documents can still be updated by ID.
|
|
26
25
|
- Get the status of the MCP server
|
|
27
26
|
- Check the cluster credentials by connecting to the cluster
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/Couchbase-Ecosystem/mcp-server-couchbase",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.5.
|
|
9
|
+
"version": "0.5.2rc2",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "pypi",
|
|
13
13
|
"identifier": "couchbase-mcp-server",
|
|
14
|
-
"version": "0.5.
|
|
14
|
+
"version": "0.5.2rc2",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"registryType": "oci",
|
|
175
|
-
"identifier": "docker.io/couchbaseecosystem/mcp-server-couchbase:0.5.
|
|
175
|
+
"identifier": "docker.io/couchbaseecosystem/mcp-server-couchbase:0.5.2rc2",
|
|
176
176
|
"transport": {
|
|
177
177
|
"type": "stdio"
|
|
178
178
|
},
|
|
@@ -39,15 +39,7 @@ def get_schema_for_collection(
|
|
|
39
39
|
def run_sql_plus_plus_query(
|
|
40
40
|
ctx: Context, bucket_name: str, scope_name: str, query: str
|
|
41
41
|
) -> list[dict[str, Any]]:
|
|
42
|
-
"""Run a SQL++ query on a scope and return the results as a list of JSON objects.
|
|
43
|
-
|
|
44
|
-
The query will be run on the specified scope in the specified bucket.
|
|
45
|
-
The query should use collection names directly without bucket/scope prefixes, as the scope context is automatically set.
|
|
46
|
-
|
|
47
|
-
Example:
|
|
48
|
-
query = "SELECT * FROM users WHERE age > 18"
|
|
49
|
-
# Incorrect: "SELECT * FROM bucket.scope.users WHERE age > 18"
|
|
50
|
-
"""
|
|
42
|
+
"""Run a SQL++ query on a scope and return the results as a list of JSON objects."""
|
|
51
43
|
cluster = get_cluster_connection(ctx)
|
|
52
44
|
|
|
53
45
|
bucket = connect_to_bucket(cluster, bucket_name)
|
{couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/alert-on-pr.yml
RENAMED
|
File without changes
|
|
File without changes
|
{couchbase_mcp_server-0.5.2 → couchbase_mcp_server-0.5.2rc2}/.github/workflows/test_release.yml
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|