@dizzlkheinz/ynab-mcpb 0.12.1 → 0.13.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.
Files changed (63) hide show
  1. package/.github/workflows/ci-tests.yml +6 -2
  2. package/CHANGELOG.md +14 -1
  3. package/NUL +0 -1
  4. package/README.md +42 -16
  5. package/dist/bundle/index.cjs +30 -30
  6. package/dist/index.js +9 -20
  7. package/dist/server/YNABMCPServer.d.ts +2 -1
  8. package/dist/server/YNABMCPServer.js +61 -27
  9. package/dist/server/cacheKeys.d.ts +8 -0
  10. package/dist/server/cacheKeys.js +8 -0
  11. package/dist/server/config.d.ts +22 -3
  12. package/dist/server/config.js +16 -17
  13. package/dist/server/securityMiddleware.js +3 -6
  14. package/dist/server/toolRegistry.js +8 -10
  15. package/dist/tools/accountTools.js +4 -3
  16. package/dist/tools/categoryTools.js +8 -7
  17. package/dist/tools/monthTools.js +2 -1
  18. package/dist/tools/payeeTools.js +2 -1
  19. package/dist/tools/reconciliation/executor.js +85 -4
  20. package/dist/tools/transactionTools.d.ts +3 -17
  21. package/dist/tools/transactionTools.js +5 -17
  22. package/dist/utils/baseError.d.ts +3 -0
  23. package/dist/utils/baseError.js +7 -0
  24. package/dist/utils/errors.d.ts +13 -0
  25. package/dist/utils/errors.js +15 -0
  26. package/dist/utils/validationError.d.ts +3 -0
  27. package/dist/utils/validationError.js +3 -0
  28. package/docs/plans/2025-11-20-reloadable-config-token-validation.md +93 -0
  29. package/docs/plans/2025-11-21-fix-transaction-cached-property.md +362 -0
  30. package/docs/plans/2025-11-21-reconciliation-error-handling.md +90 -0
  31. package/package.json +3 -2
  32. package/scripts/run-throttled-integration-tests.js +9 -3
  33. package/src/__tests__/performance.test.ts +12 -5
  34. package/src/__tests__/testUtils.ts +62 -5
  35. package/src/__tests__/workflows.e2e.test.ts +33 -0
  36. package/src/index.ts +8 -31
  37. package/src/server/YNABMCPServer.ts +81 -42
  38. package/src/server/__tests__/YNABMCPServer.integration.test.ts +10 -12
  39. package/src/server/__tests__/YNABMCPServer.test.ts +27 -15
  40. package/src/server/__tests__/config.test.ts +76 -152
  41. package/src/server/__tests__/server-startup.integration.test.ts +42 -14
  42. package/src/server/__tests__/toolRegistry.test.ts +1 -1
  43. package/src/server/cacheKeys.ts +8 -0
  44. package/src/server/config.ts +20 -38
  45. package/src/server/securityMiddleware.ts +3 -7
  46. package/src/server/toolRegistry.ts +14 -10
  47. package/src/tools/__tests__/categoryTools.test.ts +37 -19
  48. package/src/tools/__tests__/transactionTools.test.ts +58 -2
  49. package/src/tools/accountTools.ts +8 -3
  50. package/src/tools/categoryTools.ts +12 -7
  51. package/src/tools/monthTools.ts +7 -1
  52. package/src/tools/payeeTools.ts +7 -1
  53. package/src/tools/reconciliation/__tests__/executor.integration.test.ts +25 -5
  54. package/src/tools/reconciliation/__tests__/executor.test.ts +46 -0
  55. package/src/tools/reconciliation/executor.ts +109 -6
  56. package/src/tools/schemas/outputs/utilityOutputs.ts +1 -1
  57. package/src/tools/transactionTools.ts +7 -18
  58. package/src/utils/baseError.ts +7 -0
  59. package/src/utils/errors.ts +21 -0
  60. package/src/utils/validationError.ts +3 -0
  61. package/temp-recon.ts +126 -0
  62. package/test_mcp_tools.mjs +75 -0
  63. package/ADOS-2-Module-1-Complete-Manual.md +0 -757
@@ -37,5 +37,9 @@ jobs:
37
37
  cache: npm
38
38
  - name: Install dependencies
39
39
  run: npm ci
40
- - name: Run core integration tests
41
- run: npm run test:integration:core
40
+ - name: Run core integration tests (throttled)
41
+ # Integration tests with real YNAB API may hit rate limits (200/hour)
42
+ # causing 60-minute waits. Tests provide visibility but don't block merges.
43
+ continue-on-error: true
44
+ run: npm run test:integration:full
45
+ timeout-minutes: 90
package/CHANGELOG.md CHANGED
@@ -7,12 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.13.1] - 2025-11-21
11
+
12
+ ### Fixed
13
+
14
+ - Fixed missing `cached` property in large transaction list responses (>90KB)
15
+ - Large response path now includes `cached` and `cache_info` properties
16
+ - Maintains consistency with normal response path
17
+ - Resolves integration test failures when accounts have many transactions
18
+ - Fixed TypeScript strict mode error in testUtils (TS4111)
19
+ - Properties from index signatures now use bracket notation
20
+
21
+ ## [0.13.0] - 2025-11-20
22
+
10
23
  ### Changed
11
24
 
12
25
  - **Default Build to Production** - All builds now use minified production bundle
13
26
  - `npm run build` now aliases `build:prod` (was dev build)
14
27
  - `prepare` hook uses production build for consistent npm distribution
15
- - Bundle size reduced from 2.35 MB 1.28 MB (~45% smaller)
28
+ - Bundle size reduced from 2.35 MB to 1.28 MB (~45% smaller)
16
29
  - Use `npm run build:dev` if you need sourcemaps for debugging
17
30
  - **Integrated Linting and Formatting** - Code quality checks now run automatically
18
31
  - `npm run lint` now runs both ESLint and Prettier checks
package/NUL CHANGED
@@ -1 +0,0 @@
1
- ls: cannot access 'dist/*.dxt': No such file or directory
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # YNAB MCP Server
2
2
 
3
3
  [![Download latest MCPB](https://img.shields.io/badge/Download-latest%20MCPB-blue?logo=github)](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)
4
- [![npm version](https://img.shields.io/npm/v/@dizzlkheinz/ynab-mcp-server.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcp-server)
5
- [![npm downloads](https://img.shields.io/npm/dm/@dizzlkheinz/ynab-mcp-server.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcp-server)
4
+ [![npm version](https://img.shields.io/npm/v/@dizzlkheinz/ynab-mcpb.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcpb)
5
+ [![npm downloads](https://img.shields.io/npm/dm/@dizzlkheinz/ynab-mcpb.svg)](https://www.npmjs.com/package/@dizzlkheinz/ynab-mcpb)
6
6
 
7
7
  [![Release](https://img.shields.io/github/v/release/dizzlkheinz/ynab-mcpb?sort=semver)](https://github.com/dizzlkheinz/ynab-mcpb/releases/latest)
8
8
  [![Release MCPB](https://github.com/dizzlkheinz/ynab-mcpb/actions/workflows/release.yml/badge.svg)](https://github.com/dizzlkheinz/ynab-mcpb/actions/workflows/release.yml)
@@ -60,7 +60,7 @@ Add this to your Claude Desktop MCP settings file:
60
60
  "mcpServers": {
61
61
  "ynab": {
62
62
  "command": "npx",
63
- "args": ["-y", "@dizzlkheinz/ynab-mcp-server"],
63
+ "args": ["-y", "@dizzlkheinz/ynab-mcpb"],
64
64
  "env": {
65
65
  "YNAB_ACCESS_TOKEN": "your-token-here"
66
66
  }
@@ -81,7 +81,7 @@ Add this to your Cline MCP settings:
81
81
  "mcpServers": {
82
82
  "ynab": {
83
83
  "command": "npx",
84
- "args": ["-y", "@dizzlkheinz/ynab-mcp-server"],
84
+ "args": ["-y", "@dizzlkheinz/ynab-mcpb"],
85
85
  "env": {
86
86
  "YNAB_ACCESS_TOKEN": "your-token-here"
87
87
  }
@@ -98,7 +98,7 @@ Add this to your Cline MCP settings:
98
98
  For any MCP-compatible client, configure the server with:
99
99
 
100
100
  **Command:** `npx`
101
- **Arguments:** `["-y", "@dizzlkheinz/ynab-mcp-server"]`
101
+ **Arguments:** `["-y", "@dizzlkheinz/ynab-mcpb"]`
102
102
  **Environment Variables:**
103
103
 
104
104
  - `YNAB_ACCESS_TOKEN`: Your YNAB Personal Access Token
@@ -133,7 +133,7 @@ Example:
133
133
  "mcpServers": {
134
134
  "ynab": {
135
135
  "command": "npx",
136
- "args": ["-y", "@dizzlkheinz/ynab-mcp-server"],
136
+ "args": ["-y", "@dizzlkheinz/ynab-mcpb"],
137
137
  "env": {
138
138
  "YNAB_ACCESS_TOKEN": "your-token-here",
139
139
  "YNAB_EXPORT_PATH": "C:\\Users\\YourName\\Documents"
@@ -180,20 +180,46 @@ For the complete list with technical details, see the [API Reference](docs/refer
180
180
 
181
181
  Want to contribute or build from source?
182
182
 
183
+ ### Development Setup
184
+
185
+ 1. **Clone the repository:**
186
+
187
+ ```bash
188
+ git clone https://github.com/dizzlkheinz/ynab-mcpb.git
189
+ cd ynab-mcpb
190
+ ```
191
+
192
+ 2. **Install dependencies:**
193
+
194
+ ```bash
195
+ npm install
196
+ ```
197
+
198
+ 3. **Create your environment file:**
199
+ Copy the example environment file to a new `.env` file:
200
+
201
+ ```bash
202
+ cp .env.example .env
203
+ ```
204
+
205
+ Open the `.env` file and add your YNAB Personal Access Token:
206
+
207
+ ```
208
+ YNAB_ACCESS_TOKEN="your-token-here"
209
+ ```
210
+
211
+ 4. **Build and test the project:**
212
+ ```bash
213
+ npm run build
214
+ npm test
215
+ ```
216
+
217
+ ### Additional Resources
218
+
183
219
  - **[Development Guide](docs/guides/DEVELOPMENT.md)** - Setup and best practices
184
220
  - **[Architecture Overview](docs/guides/ARCHITECTURE.md)** - How the code is organized
185
221
  - **[Testing Guide](docs/guides/TESTING.md)** - Running and writing tests
186
222
 
187
- Quick start for development:
188
-
189
- ```bash
190
- git clone <repository-url>
191
- cd ynab-mcp-server
192
- npm install
193
- npm run build
194
- npm test
195
- ```
196
-
197
223
  ## Security & Privacy
198
224
 
199
225
  Your YNAB access token is stored securely and never logged. All communication with YNAB's API uses HTTPS, and the server validates all inputs to prevent errors and security issues.