mcp-openapi-schema-explorer 1.1.0 → 1.2.1
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.
- package/.devcontainer/Dockerfile +3 -0
- package/.devcontainer/devcontainer.json +1 -1
- package/.github/workflows/ci.yml +21 -1
- package/.husky/pre-commit +0 -3
- package/.releaserc.json +8 -0
- package/CHANGELOG.md +17 -0
- package/Dockerfile +31 -2
- package/README.md +78 -2
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/memory-bank/activeContext.md +22 -6
- package/memory-bank/productContext.md +8 -6
- package/memory-bank/progress.md +10 -2
- package/memory-bank/systemPatterns.md +6 -3
- package/memory-bank/techContext.md +6 -3
- package/package.json +2 -1
- package/src/version.ts +1 -1
package/.github/workflows/ci.yml
CHANGED
|
@@ -96,6 +96,7 @@ jobs:
|
|
|
96
96
|
uses: actions/checkout@v4
|
|
97
97
|
with:
|
|
98
98
|
persist-credentials: false
|
|
99
|
+
|
|
99
100
|
- name: Setup Node.js
|
|
100
101
|
uses: actions/setup-node@v4
|
|
101
102
|
with:
|
|
@@ -105,8 +106,27 @@ jobs:
|
|
|
105
106
|
- name: Install all dependencies
|
|
106
107
|
run: npm ci --include=dev
|
|
107
108
|
|
|
109
|
+
# Docker setup steps (Still needed for the environment where the action runs)
|
|
110
|
+
- name: Set up QEMU
|
|
111
|
+
uses: docker/setup-qemu-action@v3
|
|
112
|
+
- name: Set up Docker Buildx
|
|
113
|
+
uses: docker/setup-buildx-action@v3
|
|
114
|
+
- name: Log in to Docker Hub
|
|
115
|
+
uses: docker/login-action@v3
|
|
116
|
+
with:
|
|
117
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
118
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
119
|
+
|
|
108
120
|
- name: Semantic Release
|
|
109
121
|
uses: cycjimmy/semantic-release-action@v4
|
|
122
|
+
with:
|
|
123
|
+
# Add the docker plugin to extra_plugins
|
|
124
|
+
extra_plugins: |
|
|
125
|
+
@semantic-release/changelog
|
|
126
|
+
@semantic-release/exec
|
|
127
|
+
@semantic-release/git
|
|
128
|
+
@codedependant/semantic-release-docker
|
|
110
129
|
env:
|
|
111
|
-
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
130
|
+
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} # Use dedicated release token if needed
|
|
112
131
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
132
|
+
# Docker login is handled by the login-action step above
|
package/.husky/pre-commit
CHANGED
package/.releaserc.json
CHANGED
|
@@ -18,6 +18,14 @@
|
|
|
18
18
|
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
19
19
|
}
|
|
20
20
|
],
|
|
21
|
+
[
|
|
22
|
+
"@codedependant/semantic-release-docker",
|
|
23
|
+
{
|
|
24
|
+
"dockerProject": "kadykov",
|
|
25
|
+
"dockerImage": "mcp-openapi-schema-explorer",
|
|
26
|
+
"dockerLogin": false
|
|
27
|
+
}
|
|
28
|
+
],
|
|
21
29
|
"@semantic-release/github"
|
|
22
30
|
]
|
|
23
31
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## [1.2.1](https://github.com/kadykov/mcp-openapi-schema-explorer/compare/v1.2.0...v1.2.1) (2025-04-13)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- update Node.js setup to match Dockerfile version and include dev dependencies ([8658705](https://github.com/kadykov/mcp-openapi-schema-explorer/commit/86587059268ad4c18d219729b39e4e4f990e05e9))
|
|
6
|
+
|
|
7
|
+
# [1.2.0](https://github.com/kadykov/mcp-openapi-schema-explorer/compare/v1.1.0...v1.2.0) (2025-04-13)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- remove husky.sh sourcing from pre-commit hook ([2cf9455](https://github.com/kadykov/mcp-openapi-schema-explorer/commit/2cf9455f1432cb0c6cbda71d61cad9f2f87031ab))
|
|
12
|
+
- update Docker Hub login to use secrets for credentials ([ab2136b](https://github.com/kadykov/mcp-openapi-schema-explorer/commit/ab2136bd8c052d7287ef1fd6d2768a9fd93148c8))
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- implement Docker support with multi-stage builds and CI integration ([910dc02](https://github.com/kadykov/mcp-openapi-schema-explorer/commit/910dc021b3e203574dee93198ce5896a9e8aa16d))
|
|
17
|
+
|
|
1
18
|
# [1.1.0](https://github.com/kadykov/mcp-openapi-schema-explorer/compare/v1.0.2...v1.1.0) (2025-04-13)
|
|
2
19
|
|
|
3
20
|
### Features
|
package/Dockerfile
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
# Stage 1: Builder
|
|
2
|
+
FROM node:22-alpine AS builder
|
|
2
3
|
|
|
3
|
-
WORKDIR /
|
|
4
|
+
WORKDIR /app
|
|
5
|
+
|
|
6
|
+
# Copy necessary files for installation and build
|
|
7
|
+
COPY package.json package-lock.json ./
|
|
8
|
+
COPY tsconfig.json ./
|
|
9
|
+
COPY src ./src
|
|
10
|
+
|
|
11
|
+
# Install all dependencies (including devDependencies needed for build)
|
|
12
|
+
RUN npm ci
|
|
13
|
+
|
|
14
|
+
# Build the project
|
|
15
|
+
RUN npm run build
|
|
16
|
+
|
|
17
|
+
# Stage 2: Release
|
|
18
|
+
FROM node:22-alpine AS release
|
|
19
|
+
|
|
20
|
+
WORKDIR /app
|
|
21
|
+
|
|
22
|
+
# Copy only necessary files from the builder stage
|
|
23
|
+
COPY --from=builder /app/package.json ./package.json
|
|
24
|
+
COPY --from=builder /app/package-lock.json ./package-lock.json
|
|
25
|
+
COPY --from=builder /app/dist ./dist
|
|
26
|
+
|
|
27
|
+
# Install only production dependencies
|
|
28
|
+
RUN npm ci --omit=dev --ignore-scripts
|
|
29
|
+
|
|
30
|
+
# Set the entrypoint to run the compiled server
|
|
31
|
+
# Corrected path based on tsconfig.json ("rootDir": ".", "outDir": "dist")
|
|
32
|
+
ENTRYPOINT ["node", "dist/src/index.js"]
|
package/README.md
CHANGED
|
@@ -62,7 +62,83 @@ This server is designed to be run by MCP clients. The recommended way to configu
|
|
|
62
62
|
|
|
63
63
|
- This server handles one specification per instance. To explore multiple specifications simultaneously, configure multiple entries under `mcpServers` in your client's configuration file, each pointing to a different spec file or URL and using a unique server name.
|
|
64
64
|
|
|
65
|
-
##
|
|
65
|
+
## Usage with Docker
|
|
66
|
+
|
|
67
|
+
As an alternative to `npx` or global installation, you can run the server using Docker. The official image is available on Docker Hub: `kadykov/mcp-openapi-schema-explorer`.
|
|
68
|
+
|
|
69
|
+
**Running the Container:**
|
|
70
|
+
|
|
71
|
+
The container expects the path or URL to the OpenAPI specification as a command-line argument, similar to the `npx` usage.
|
|
72
|
+
|
|
73
|
+
- **Remote URL:** Pass the URL directly to `docker run`.
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
docker run --rm -i kadykov/mcp-openapi-schema-explorer:latest https://petstore3.swagger.io/api/v3/openapi.json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
- **Local File:** Mount the local file into the container using the `-v` flag and provide the path _inside the container_ as the argument.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Example: Mount local file ./my-spec.yaml to /spec/api.yaml inside the container
|
|
83
|
+
docker run --rm -i -v "$(pwd)/my-spec.yaml:/spec/api.yaml" kadykov/mcp-openapi-schema-explorer:latest /spec/api.yaml
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
_(Note: Replace `$(pwd)/my-spec.yaml` with the actual path to your local file)_
|
|
87
|
+
|
|
88
|
+
- **Output Format:** You can still use the `--output-format` flag:
|
|
89
|
+
```bash
|
|
90
|
+
docker run --rm -i kadykov/mcp-openapi-schema-explorer:latest https://petstore3.swagger.io/api/v3/openapi.json --output-format yaml
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Example MCP Client Configuration (Docker):**
|
|
94
|
+
|
|
95
|
+
Here's how you might configure this in a client like Claude Desktop (`claude_desktop_config.json`):
|
|
96
|
+
|
|
97
|
+
- **Using a Remote URL:**
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"mcpServers": {
|
|
102
|
+
"My API Spec (Docker Remote)": {
|
|
103
|
+
"command": "docker",
|
|
104
|
+
"args": [
|
|
105
|
+
"run",
|
|
106
|
+
"--rm",
|
|
107
|
+
"-i",
|
|
108
|
+
"kadykov/mcp-openapi-schema-explorer:latest",
|
|
109
|
+
"https://petstore3.swagger.io/api/v3/openapi.json"
|
|
110
|
+
],
|
|
111
|
+
"env": {}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
- **Using a Local File:**
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"mcpServers": {
|
|
121
|
+
"My API Spec (Docker Local)": {
|
|
122
|
+
"command": "docker",
|
|
123
|
+
"args": [
|
|
124
|
+
"run",
|
|
125
|
+
"--rm",
|
|
126
|
+
"-i",
|
|
127
|
+
"-v",
|
|
128
|
+
"/full/path/to/your/local/openapi.yaml:/spec/api.yaml",
|
|
129
|
+
"kadykov/mcp-openapi-schema-explorer:latest",
|
|
130
|
+
"/spec/api.yaml",
|
|
131
|
+
"--output-format",
|
|
132
|
+
"yaml"
|
|
133
|
+
],
|
|
134
|
+
"env": {}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
_(Remember to replace `/full/path/to/your/local/openapi.yaml` with the correct absolute path on your host machine)_
|
|
140
|
+
|
|
141
|
+
## Alternative: Global Installation (Less Common)
|
|
66
142
|
|
|
67
143
|
If you prefer, you can install the server globally:
|
|
68
144
|
|
|
@@ -148,4 +224,4 @@ This project uses [`semantic-release`](https://github.com/semantic-release/seman
|
|
|
148
224
|
|
|
149
225
|
## Future Plans
|
|
150
226
|
|
|
151
|
-
|
|
227
|
+
(Future plans to be determined)
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "1.1
|
|
1
|
+
export declare const VERSION = "1.2.1";
|
package/dist/src/version.js
CHANGED
|
@@ -29,9 +29,24 @@ Completed setup of automated versioning and releases using `semantic-release` an
|
|
|
29
29
|
- Added `extractions/setup-just@v3` action to both jobs.
|
|
30
30
|
- Updated `test` job to run checks via `just all`.
|
|
31
31
|
- Updated `security` job to run checks via `just security` (keeping CodeQL separate).
|
|
32
|
-
- Added a new `release` job triggered on pushes to `main` (after `test` and `security` pass) that
|
|
32
|
+
- Added a new `release` job triggered on pushes to `main` (after `test` and `security` pass) that uses `cycjimmy/semantic-release-action@v4`. Configured necessary permissions and environment variables (`GITHUB_TOKEN`, `NPM_TOKEN`).
|
|
33
33
|
5. **Memory Bank Update (✓):** Updated `activeContext.md`, `progress.md`, `systemPatterns.md`, and `techContext.md`.
|
|
34
34
|
|
|
35
|
+
### Docker Support Implementation (✓)
|
|
36
|
+
|
|
37
|
+
1. **Dockerfile Strategy:**
|
|
38
|
+
- Moved existing devcontainer `Dockerfile` to `.devcontainer/Dockerfile`.
|
|
39
|
+
- Updated `.devcontainer/devcontainer.json` to reference the new path.
|
|
40
|
+
- Created a new multi-stage production `Dockerfile` at the project root (`./Dockerfile`).
|
|
41
|
+
2. **Docker Plugin:**
|
|
42
|
+
- Installed `@codedependant/semantic-release-docker` dev dependency.
|
|
43
|
+
- Configured the plugin in `.releaserc.json` to publish to `kadykov/mcp-openapi-schema-explorer` on Docker Hub, disabling the plugin's built-in login.
|
|
44
|
+
3. **CI Workflow Update (`.github/workflows/ci.yml`):**
|
|
45
|
+
- Added Docker setup steps (QEMU, Buildx, Login using `docker/login-action@v3` with `DOCKERHUB_USERNAME` var and `DOCKERHUB_TOKEN` secret) to the `release` job.
|
|
46
|
+
- Updated the `cycjimmy/semantic-release-action@v4` step to include `@codedependant/semantic-release-docker` in `extra_plugins`.
|
|
47
|
+
- Removed redundant Node.js setup and `npm ci` steps from the `release` job, as the action handles plugin installation.
|
|
48
|
+
4. **Documentation:** Updated `README.md` with a "Usage with Docker" section, including `docker run` examples and MCP client configuration examples for local and remote specs.
|
|
49
|
+
|
|
35
50
|
### Dynamic Server Name (✓)
|
|
36
51
|
|
|
37
52
|
1. **Spec Loading:** Modified `src/index.ts` to load the OpenAPI spec using `createSpecLoader` _before_ initializing `McpServer`.
|
|
@@ -113,7 +128,8 @@ Completed setup of automated versioning and releases using `semantic-release` an
|
|
|
113
128
|
- Added `json-minified` output format option.
|
|
114
129
|
- Server name is now dynamically set based on the loaded spec's `info.title`.
|
|
115
130
|
- **New:** Automated versioning and release process implemented using `semantic-release`.
|
|
116
|
-
- **New:** CI workflow adapted for Node 22, uses `just` for checks, and includes a release job
|
|
131
|
+
- **New:** CI workflow adapted for Node 22, uses `just` for checks, and includes a `release` job using `cycjimmy/semantic-release-action@v4`.
|
|
132
|
+
- **New:** Docker support added, including a production `Dockerfile`, integration with `semantic-release` via `@codedependant/semantic-release-docker`, and updated CI workflow for automated Docker Hub publishing.
|
|
117
133
|
- Dependencies correctly categorized (`swagger2openapi` in `dependencies`, types in `devDependencies`).
|
|
118
134
|
- Resource completion logic implemented.
|
|
119
135
|
- Dynamic server name implemented.
|
|
@@ -125,10 +141,10 @@ Completed setup of automated versioning and releases using `semantic-release` an
|
|
|
125
141
|
|
|
126
142
|
## Next Actions / Immediate Focus
|
|
127
143
|
|
|
128
|
-
1. **README Update
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
144
|
+
1. **README Update (Partially Done):**
|
|
145
|
+
- **Done:** Added Docker usage instructions.
|
|
146
|
+
- **TODO:** Add details about the automated release process (npm + Docker) and Conventional Commits requirement.
|
|
147
|
+
- **TODO:** Add instructions for setting up `NPM_TOKEN`, `DOCKERHUB_USERNAME`, and `DOCKERHUB_TOKEN` secrets/variables.
|
|
132
148
|
2. **Handler Unit Tests:** Implement comprehensive unit tests for each handler class (`TopLevelFieldHandler`, `PathItemHandler`, etc.), mocking `SpecLoaderService` and `IFormatter`.
|
|
133
149
|
3. **Refactor Helpers:** Consolidate duplicated helper functions (`formatResults`, `isOpenAPIV3`) fully into `handler-utils.ts` and remove from individual handlers.
|
|
134
150
|
4. **Code Cleanup:** Address remaining TODOs (e.g., checking warnings in `spec-loader.ts`) and minor ESLint warnings.
|
|
@@ -22,18 +22,20 @@ An MCP server that:
|
|
|
22
22
|
|
|
23
23
|
## User Experience Goals
|
|
24
24
|
|
|
25
|
-
1. Easy installation via npm.
|
|
25
|
+
1. Easy installation/usage via npm (`npx`) or Docker.
|
|
26
26
|
2. Simple configuration via a single command-line argument (path or URL).
|
|
27
27
|
3. Intuitive resource URIs for exploring API parts.
|
|
28
28
|
4. Clear and consistent response formats.
|
|
29
29
|
|
|
30
30
|
## Usage Workflow
|
|
31
31
|
|
|
32
|
-
1. User
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
1. User configures the server in their MCP client using either:
|
|
33
|
+
- `npx mcp-openapi-schema-explorer <path-or-url-to-spec> [options]` (Recommended for most users)
|
|
34
|
+
- `docker run kadykov/mcp-openapi-schema-explorer:latest <path-or-url-to-spec> [options]` (Requires Docker, local files need volume mounting)
|
|
35
|
+
- Global installation (`npm i -g ...` then `mcp-openapi-schema-explorer ...`) (Less common)
|
|
36
|
+
2. Server loads the spec (from file or URL), converts v2.0 to v3.0 if necessary, and transforms internal references to MCP URIs.
|
|
37
|
+
3. LLM explores API structure through exposed resources:
|
|
36
38
|
- List paths, components, methods.
|
|
37
39
|
- View details for info, operations, components, etc.
|
|
38
40
|
- Follow transformed reference URIs (`openapi://components/...`) to view component details without loading the whole spec initially.
|
|
39
|
-
|
|
41
|
+
4. Server restarts required if the source specification file/URL content changes.
|
package/memory-bank/progress.md
CHANGED
|
@@ -45,6 +45,13 @@
|
|
|
45
45
|
- Created new E2E test file (`spec-loading.test.ts`) to verify loading from local v2 and remote v3 sources.
|
|
46
46
|
- Added v2.0 test fixture (`sample-v2-api.json`).
|
|
47
47
|
|
|
48
|
+
### Docker Support (✓)
|
|
49
|
+
|
|
50
|
+
1. **Dockerfile:** Added a multi-stage production `Dockerfile` at the root. Moved the devcontainer Dockerfile to `.devcontainer/`.
|
|
51
|
+
2. **Release Integration:** Added `@codedependant/semantic-release-docker` plugin to `.releaserc.json` to automate Docker image building and publishing to Docker Hub (`kadykov/mcp-openapi-schema-explorer`).
|
|
52
|
+
3. **CI Workflow:** Updated the `release` job in `.github/workflows/ci.yml` to set up Docker environment (QEMU, Buildx, Login) and use `cycjimmy/semantic-release-action@v4` with the Docker plugin included in `extra_plugins`. Removed redundant Node setup/install steps from the release job.
|
|
53
|
+
4. **Documentation:** Updated `README.md` with instructions and examples for running the server via Docker.
|
|
54
|
+
|
|
48
55
|
## Technical Features (✓)
|
|
49
56
|
|
|
50
57
|
### Codebase Organization (Updated)
|
|
@@ -106,7 +113,7 @@
|
|
|
106
113
|
1. **Dependency Correction:** Correctly categorized runtime (`swagger2openapi`) vs. development (`@types/*`) dependencies in `package.json`. Removed unused types.
|
|
107
114
|
2. **Automated Releases:** Implemented `semantic-release` with conventional commit analysis, changelog generation, npm publishing, and GitHub releases.
|
|
108
115
|
3. **Dynamic Versioning:** Server version is now dynamically injected via `src/version.ts`, which is generated during the release process by `semantic-release` using `scripts/generate-version.js`. A default version file is tracked in Git for local builds.
|
|
109
|
-
4. **CI Workflow:** Updated `.github/workflows/ci.yml` to use Node 22,
|
|
116
|
+
4. **CI Workflow:** Updated `.github/workflows/ci.yml` to use Node 22, use `just` for running checks (`just all`, `just security`), and includes a `release` job using `cycjimmy/semantic-release-action@v4` to automate npm and Docker Hub publishing on pushes to `main`.
|
|
110
117
|
|
|
111
118
|
## Planned Features (⏳)
|
|
112
119
|
|
|
@@ -118,6 +125,7 @@
|
|
|
118
125
|
- **Enhanced Component Support:** Ensure all component types listed in `VALID_COMPONENT_TYPES` are fully handled if present in spec. (Reference transformation now supports all types).
|
|
119
126
|
- **Parameter Validation:** Add validation logic if needed. (Current Map-based approach handles key validation).
|
|
120
127
|
- **Further Token Optimizations:** Explore more ways to reduce token usage in list/detail views.
|
|
128
|
+
- **README Enhancements:** Add details on release process, secrets/vars setup. (Partially done).
|
|
121
129
|
|
|
122
130
|
## Technical Improvements (Ongoing)
|
|
123
131
|
|
|
@@ -133,7 +141,7 @@
|
|
|
133
141
|
- Unit tests updated for URI builder, reference transformer, and path item rendering.
|
|
134
142
|
- E2E tests updated for new structure and complex fixture. Added tests for resource completion.
|
|
135
143
|
- Unit tests for `SpecLoaderService` updated for `swagger2openapi`.
|
|
136
|
-
- CI workflow updated to use `just` and includes automated release job.
|
|
144
|
+
- CI workflow updated to use `just` and includes automated release job for npm and Docker.
|
|
137
145
|
|
|
138
146
|
3. API Design
|
|
139
147
|
- New URI structure implemented, aligned with OpenAPI spec.
|
|
@@ -128,8 +128,11 @@ graph TD
|
|
|
128
128
|
4. `@semantic-release/npm`: Updates `version` in `package.json`.
|
|
129
129
|
5. `@semantic-release/exec`: Runs `scripts/generate-version.js` to create/update `src/version.ts` with the new version.
|
|
130
130
|
6. `@semantic-release/git`: Commits `package.json`, `package-lock.json`, `CHANGELOG.md`, and `src/version.ts`. Creates Git tag.
|
|
131
|
-
7. `@semantic-release
|
|
132
|
-
-
|
|
131
|
+
7. `@codedependant/semantic-release-docker`: Builds the Docker image using `./Dockerfile` and pushes it to Docker Hub (`kadykov/mcp-openapi-schema-explorer`) with `latest` and version tags.
|
|
132
|
+
8. `@semantic-release/github`: Creates GitHub Release.
|
|
133
|
+
- **Trigger:** Executed by the `release` job in the GitHub Actions workflow (`.github/workflows/ci.yml`) on pushes to the `main` branch, using `cycjimmy/semantic-release-action@v4`.
|
|
134
|
+
- **CI Action:** The `cycjimmy/semantic-release-action` handles installing `semantic-release` and the plugins listed in its `extra_plugins` input (`@semantic-release/changelog`, `@semantic-release/exec`, `@semantic-release/git`, `@codedependant/semantic-release-docker`).
|
|
135
|
+
- **Docker Environment:** The CI job sets up Docker QEMU, Buildx, and logs into Docker Hub before running the semantic-release action.
|
|
133
136
|
- **Versioning:** The server version in `src/index.ts` is dynamically imported from the generated `src/version.ts`. A default `src/version.ts` (with `0.0.0-dev`) is kept in the repository for local builds.
|
|
134
137
|
|
|
135
138
|
## Resource Design Patterns
|
|
@@ -221,4 +224,4 @@ graph TD
|
|
|
221
224
|
4. **CI Integration (`.github/workflows/ci.yml`):**
|
|
222
225
|
- **`test` Job:** Runs on push/PR to `main`. Uses Node 22, installs `just`, runs `npm ci`, then `just all` (format, lint, build, test). Uploads coverage.
|
|
223
226
|
- **`security` Job:** Runs on push/PR to `main`. Uses Node 22, installs `just`, runs `npm ci`, then `just security` (audit, licenses). Runs CodeQL analysis separately.
|
|
224
|
-
- **`release` Job:** Runs _only_ on push to `main` after `test` and `security` pass. Checks out full history,
|
|
227
|
+
- **`release` Job:** Runs _only_ on push to `main` after `test` and `security` pass. Checks out full history, sets up Docker (QEMU, Buildx, Login), then runs `cycjimmy/semantic-release-action@v4` with necessary `extra_plugins` and environment variables (`GITHUB_TOKEN`, `NPM_TOKEN`, Docker Hub credentials handled by login action).
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- `jest`: Testing framework (devDependency)
|
|
20
20
|
- `eslint`: Code linting (devDependency)
|
|
21
21
|
- `prettier`: Code formatting (devDependency)
|
|
22
|
-
- `semantic-release` & plugins (`@semantic-release
|
|
22
|
+
- `semantic-release` & plugins (`@semantic-release/*`, `@codedependant/semantic-release-docker`): Automated releases (devDependencies)
|
|
23
23
|
- `just`: Task runner (Used locally, installed via action in CI)
|
|
24
24
|
|
|
25
25
|
## Technical Requirements
|
|
@@ -71,6 +71,7 @@
|
|
|
71
71
|
- CI Integration (`.github/workflows/ci.yml`):
|
|
72
72
|
- Runs checks (`just all`, `just security`, CodeQL) on pushes/PRs to `main`.
|
|
73
73
|
- Uses Node 22 environment.
|
|
74
|
+
- Includes automated release job using `cycjimmy/semantic-release-action@v4`.
|
|
74
75
|
|
|
75
76
|
## Response Formats
|
|
76
77
|
|
|
@@ -99,10 +100,12 @@
|
|
|
99
100
|
|
|
100
101
|
## Deployment / Release Process
|
|
101
102
|
|
|
102
|
-
- Automated publishing to npm via `semantic-release` triggered by pushes to `main` branch in GitHub Actions.
|
|
103
|
+
- Automated publishing to npm **and Docker Hub** (`kadykov/mcp-openapi-schema-explorer`) via `semantic-release` triggered by pushes to `main` branch in GitHub Actions.
|
|
104
|
+
- Uses `cycjimmy/semantic-release-action@v4` in the CI workflow.
|
|
103
105
|
- Relies on Conventional Commits to determine version bumps.
|
|
106
|
+
- Uses `@codedependant/semantic-release-docker` plugin for Docker build and push.
|
|
104
107
|
- Creates version tags (e.g., `v1.2.3`) and GitHub Releases automatically.
|
|
105
|
-
- Requires `NPM_TOKEN`
|
|
108
|
+
- Requires `NPM_TOKEN`, `DOCKERHUB_USERNAME`, and `DOCKERHUB_TOKEN` secrets/variables configured in GitHub repository.
|
|
106
109
|
- `CHANGELOG.md` is automatically generated and updated.
|
|
107
110
|
- Server version is dynamically set at runtime based on the release version.
|
|
108
111
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-openapi-schema-explorer",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "MCP OpenAPI schema explorer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"zod": "^3.24.2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
+
"@codedependant/semantic-release-docker": "^5.1.0",
|
|
46
47
|
"@eslint/js": "^9.24.0",
|
|
47
48
|
"@semantic-release/changelog": "^6.0.3",
|
|
48
49
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
package/src/version.ts
CHANGED