@edicarlos.lds/businessmap-mcp 4.0.0 β†’ 4.0.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/CONTRIBUTING.md CHANGED
@@ -53,14 +53,17 @@ Keep changes focused and include tests for behavior changes. Before opening a
53
53
  pull request, run the local checks listed above. CI runs the same checks on
54
54
  Node.js 22.
55
55
 
56
- Use conventional commits when practical:
56
+ Use conventional commits in pull request titles. Pull requests are squash
57
+ merged and releases are published automatically from `main` based on these
58
+ prefixes (see [docs/RELEASE_PROCESS.md](docs/RELEASE_PROCESS.md)):
57
59
 
58
60
  ```text
59
- feat: add a new capability
60
- fix: correct existing behavior
61
- docs: improve documentation
62
- refactor: restructure without changing behavior
63
- test: add or improve tests
61
+ feat: add a new capability (minor release)
62
+ fix: correct existing behavior (patch release)
63
+ feat!: change that breaks compatibility (major release)
64
+ docs: improve documentation (no release)
65
+ refactor: restructure without changing behavior (no release)
66
+ test: add or improve tests (no release)
64
67
  ```
65
68
 
66
69
  Changes to tool names, input schemas, response shapes, or default behavior must
@@ -1,146 +1,128 @@
1
1
  # Release Process
2
2
 
3
- This document describes the automated release process for the BusinessMap MCP Server.
3
+ Releases are fully automated by the [Release workflow](../.github/workflows/release.yml).
4
+ Merging to `main` is the only manual step.
4
5
 
5
- ## πŸš€ Automated Process
6
+ ## πŸš€ What Happens on Every Push to `main`
6
7
 
7
- The release process has been fully automated and includes:
8
+ 1. **Validation**: lint, unit tests, build, knip and, when the smoke secrets are
9
+ configured, the `test:npx` package smoke test.
10
+ 2. **Version calculation** from [Conventional Commits](https://www.conventionalcommits.org)
11
+ since the last `vX.Y.Z` tag:
8
12
 
9
- 1. **Version bump** (patch, minor, major)
10
- 2. **Automatic release notes generation** based on commits
11
- 3. **Git tag creation**
12
- 4. **Push tag to GitHub**
13
- 5. **GitHub release creation** with release notes
14
- 6. **NPM publication**
13
+ | Commits since last tag | Release |
14
+ |---|---|
15
+ | `feat!:`, `fix(scope)!:` or a `BREAKING CHANGE:` footer | major |
16
+ | `feat:` | minor |
17
+ | `fix:`, `perf:` (including `fix(deps):` from Dependabot) | patch |
18
+ | only `chore:`, `docs:`, `test:`, `ci:`, `refactor:`, ... | no release |
15
19
 
16
- ## πŸ“ How to Make a Release
20
+ 3. **Release commit and tag**: `chore(release): X.Y.Z` plus tag `vX.Y.Z`, pushed to `main`.
21
+ 4. **npm publication** with provenance, through npm Trusted Publishing (no token stored in GitHub).
22
+ 5. **GitHub release** with the generated release notes.
17
23
 
18
- ### 1. Preparation
24
+ Runs are serialized, so pushes made while a release is running are released by
25
+ the next run.
19
26
 
20
- Before making a release, ensure that:
27
+ ## 🏷️ Commit Convention
21
28
 
22
- - [ ] All changes are committed
23
- - [ ] You are authenticated to NPM: `npm whoami` or make logging via `npm login`
24
- - [ ] You are authenticated to GitHub CLI: `gh auth status`
25
- - [ ] Working directory is clean
29
+ Pull requests are squash merged, so the **PR title** becomes the commit message
30
+ that drives the release. Use:
26
31
 
27
- ### 2. Release Notes Preview
32
+ ```text
33
+ feat: add a new capability -> minor
34
+ fix: correct existing behavior -> patch
35
+ perf: make something faster -> patch
36
+ feat!: remove deprecated tool -> major
37
+ docs: / refactor: / test: / chore: -> no release on their own
38
+ ```
28
39
 
29
- To see how the release notes will look before publishing:
40
+ For a breaking change without `!`, add a footer to the commit body:
30
41
 
31
- ```bash
32
- npm run preview:release
33
- # or for a specific version:
34
- npm run preview:release 1.2.3
42
+ ```text
43
+ BREAKING CHANGE: list_cards no longer accepts board_name
35
44
  ```
36
45
 
37
- ### 3. Publication
38
-
39
- Execute the publish npm command:
46
+ ## πŸ‘€ Previewing the Next Release
40
47
 
41
48
  ```bash
42
- npm run publish:npm
49
+ npm run preview:release # next version and notes, as the workflow would compute them
50
+ npm run preview:release 1.2.3 # notes for an explicit version
43
51
  ```
44
52
 
45
- The script will:
46
-
47
- 1. Verify authentications
48
- 2. Build and test
49
- 3. Show version options (patch/minor/major)
50
- 4. Generate release notes preview
51
- 5. Confirm publication
52
- 6. Execute the entire process automatically
53
-
54
- ## πŸ“‹ Release Notes Format
55
-
56
- Release notes are automatically generated based on commits since the last tag and organized by category:
57
-
58
- ### πŸš€ New Features
59
-
60
- - Commits starting with `feat:`, `feature:` or `FEAT:`
61
-
62
- ### πŸ› Bug Fixes
63
-
64
- - Commits starting with `fix:` or `FIX:`
65
-
66
- ### ♻️ Code Refactoring
67
-
68
- - Commits starting with `refactor:` or `REFACTOR:`
69
-
70
- ### πŸ“š Documentation
71
-
72
- - Commits starting with `docs:`, `doc:` or `DOCS:`
73
-
74
- ### πŸ”§ Other Changes
75
-
76
- - All other commits
53
+ The workflow can also be started manually from **Actions β†’ Release β†’ Run workflow**
54
+ with **dry_run** checked to see the version and notes without publishing anything.
77
55
 
78
- ## 🏷️ Commit Convention
79
-
80
- To maximize release notes quality, it's recommended to use the following prefixes:
81
-
82
- ```bash
83
- feat: add new functionality
84
- fix: fix bug
85
- docs: update documentation
86
- refactor: refactor code
87
- test: add or update tests
88
- chore: maintenance tasks
89
- ```
56
+ ## πŸŽ›οΈ Forcing a Specific Version
90
57
 
91
- ## πŸ”§ Available Scripts
58
+ Bump `version` in `package.json` (and `package-lock.json`) in a pull request,
59
+ for example with `npm version 5.0.0 --no-git-tag-version`. When it lands on
60
+ `main`, the workflow sees an unpublished version, tags that commit and releases
61
+ it as is instead of computing a bump.
92
62
 
93
- - `npm run publish:npm` - Publish to NPM only
94
- - `npm run publish:github` - Create GitHub release only
95
- - `npm run preview:release` - Preview release notes
96
- - `scripts/generate-release-notes.sh` - Generate release notes for specific version
63
+ ## πŸ“‹ Release Notes Format
97
64
 
98
- ## 🎯 Example of Generated Release Notes
65
+ Commits since the previous tag are grouped by type, each one credited to its
66
+ GitHub author:
99
67
 
100
68
  ```markdown
101
69
  ## What's Changed
102
70
 
71
+ ### ⚠️ Breaking Changes
103
72
  ### πŸš€ New Features
104
- - add user authentication support by @username
105
- - implement card filtering by @username
106
-
107
73
  ### πŸ› Bug Fixes
108
- - fix memory leak in client by @username
109
- - resolve API timeout issues by @username
110
-
74
+ ### ⚑ Performance
75
+ ### ♻️ Code Refactoring
111
76
  ### πŸ“š Documentation
112
- - update README with new examples by @username
77
+ ### πŸ“¦ Dependencies (scope `deps` / `deps-dev`)
78
+ ### πŸ”§ Other Changes
113
79
 
114
80
  **Full Changelog**: https://github.com/edicarloslds/businessmap-mcp/compare/v1.0.0...v1.1.0
115
81
  ```
116
82
 
117
- ## 🚨 Troubleshooting
118
-
119
- ### NPM Authentication Error
83
+ ## βš™οΈ One-time Setup
84
+
85
+ 1. **GitHub environment**: in *Settings β†’ Environments*, create `npm` and under
86
+ *Deployment branches and tags* select *Selected branches and tags* with only
87
+ `main`. Only the release job running on `main` can then request an npm
88
+ publish token.
89
+ 2. **npm Trusted Publishing**: on npmjs.com, open the package β†’ *Settings* β†’
90
+ *Trusted Publisher* β†’ *GitHub Actions* and set:
91
+ - Organization or user: `edicarloslds`
92
+ - Repository: `businessmap-mcp`
93
+ - Workflow filename: `release.yml`
94
+ - Environment name: `npm`
95
+ - Allowed actions: `npm publish` (besides the default `npm stage publish`),
96
+ since the workflow publishes directly without a manual approval step
97
+ 3. **Smoke test secrets** (optional): add environment secrets to `npm` or repository secrets
98
+ `BUSINESSMAP_SMOKE_API_URL` and `BUSINESSMAP_SMOKE_API_TOKEN`, ideally a
99
+ read-only token. Without them the smoke test step is skipped.
100
+ 4. **Squash merge only**: in *Settings β†’ General β†’ Pull Requests*, keep only
101
+ *Allow squash merging* with the default message set to the PR title.
102
+ 5. **Branch protection** (if enabled later): allow GitHub Actions to push the
103
+ release commit and tag to `main`, otherwise the release push is rejected.
104
+
105
+ ## πŸ”§ Scripts
106
+
107
+ - `scripts/release.sh` - non-interactive release used by the workflow (`DRY_RUN=true` to simulate)
108
+ - `scripts/next-version.sh` - bump type implied by the commits in a range
109
+ - `scripts/generate-release-notes.sh` - release notes for a version and commit range
110
+ - `scripts/preview-release-notes.sh` - local preview of the next release
120
111
 
121
- ```bash
122
- npm login
123
- ```
112
+ ## 🚨 Troubleshooting
124
113
 
125
- ### GitHub Authentication Error
114
+ ### A release failed halfway
126
115
 
127
- ```bash
128
- gh auth login
129
- ```
116
+ Re-run the failed workflow. `scripts/release.sh` is idempotent: when the version
117
+ in `package.json` is missing from npm or has no GitHub release yet, it finishes
118
+ that release instead of computing a new one.
130
119
 
131
- ### Working Directory not clean
120
+ ### Merged a fix but nothing was released
132
121
 
133
- ```bash
134
- git status
135
- git add .
136
- git commit -m "prepare for release"
137
- ```
138
-
139
- ### Tag already exists
122
+ Check that the squash commit on `main` starts with `fix:`/`feat:`/`perf:` and
123
+ run `npm run preview:release` locally to see what the workflow detects.
140
124
 
141
- If something goes wrong during the process, you can remove the created tag:
125
+ ### npm publish fails with 404 / ENEEDAUTH
142
126
 
143
- ```bash
144
- git tag -d v1.2.3
145
- git push origin :refs/tags/v1.2.3
146
- ```
127
+ The Trusted Publisher on npmjs.com must match the repository and the
128
+ `release.yml` filename exactly.
package/docs/TOOLS.md CHANGED
@@ -22,6 +22,15 @@ structure fetches, and explicit summary/full detail levels. These deterministic
22
22
  checks complement production trajectory evals, where tool-call count, latency,
23
23
  and token cost should also be monitored.
24
24
 
25
+ ## Architecture inspiration
26
+
27
+ The progressive-disclosure architecture used by this server was inspired by
28
+ [β€œMCPs need to be designed too”](https://www.raindrop.ai/blog/mcp-design/), by
29
+ Jackson Ferrigno at Raindrop. The article's tool-hierarchy approach informed
30
+ the separation between compact discovery, focused detail, and deeper forensic
31
+ operations in this project. Credit belongs to the author and the Raindrop team
32
+ for publishing the design and its evaluation results.
33
+
25
34
  ---
26
35
 
27
36
  ## Tools
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edicarlos.lds/businessmap-mcp",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Model Context Protocol server for BusinessMap (Kanbanize) integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -25,8 +25,6 @@
25
25
  "eval:hierarchy": "jest --runInBand src/server/tools/board-tools.test.ts src/server/tools/card-tools.test.ts src/server/resources/card-resources.test.ts",
26
26
  "test:coverage": "jest --coverage --runInBand",
27
27
  "test:npx": "bash scripts/test-npx.sh",
28
- "publish:npm": "bash scripts/publish-npm.sh",
29
- "publish:github": "bash scripts/publish-github.sh",
30
28
  "preview:release": "bash scripts/preview-release-notes.sh",
31
29
  "lint": "eslint src/**/*.ts",
32
30
  "lint:fix": "eslint src/**/*.ts --fix",
@@ -69,7 +67,7 @@
69
67
  "@modelcontextprotocol/sdk": "^1.27.1",
70
68
  "axios": "^1.12.0",
71
69
  "cors": "^2.8.5",
72
- "dotenv": "^17.4.2",
70
+ "dotenv": "^18.0.4",
73
71
  "express": "^5.1.0",
74
72
  "zod": "^4.4.3"
75
73
  },
@@ -93,9 +91,10 @@
93
91
  },
94
92
  "overrides": {
95
93
  "hono": ">=4.12.25",
94
+ "@hono/node-server": ">=2.0.5",
96
95
  "form-data": ">=4.0.6",
97
96
  "js-yaml": ">=5.2.2",
98
97
  "@babel/core": "^7.29.6",
99
- "brace-expansion": ">=5.0.8"
98
+ "brace-expansion": ">=5.0.9"
100
99
  }
101
100
  }