simplenote-mcp-server 1.16.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.
Files changed (69) hide show
  1. simplenote_mcp_server-1.16.0/CHANGELOG.md +510 -0
  2. simplenote_mcp_server-1.16.0/LICENSE +21 -0
  3. simplenote_mcp_server-1.16.0/MANIFEST.in +10 -0
  4. simplenote_mcp_server-1.16.0/PKG-INFO +739 -0
  5. simplenote_mcp_server-1.16.0/README.md +677 -0
  6. simplenote_mcp_server-1.16.0/VERSION +1 -0
  7. simplenote_mcp_server-1.16.0/pyproject.toml +85 -0
  8. simplenote_mcp_server-1.16.0/setup.cfg +37 -0
  9. simplenote_mcp_server-1.16.0/setup.py +30 -0
  10. simplenote_mcp_server-1.16.0/simplenote_mcp/__init__.py +5 -0
  11. simplenote_mcp_server-1.16.0/simplenote_mcp/__main__.py +21 -0
  12. simplenote_mcp_server-1.16.0/simplenote_mcp/py.typed +0 -0
  13. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/analyze_logs.py +436 -0
  14. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/check_server_pid.sh +60 -0
  15. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/cleanup_servers.sh +129 -0
  16. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/config.sh +37 -0
  17. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/diagnose_api.py +585 -0
  18. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/error_examples.py +365 -0
  19. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/generate_test_coverage.py +218 -0
  20. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/log_format_test.py +206 -0
  21. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/logging_examples.py +185 -0
  22. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/monitoring_dashboard.py +569 -0
  23. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/release.sh +91 -0
  24. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/restart_claude.sh +63 -0
  25. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/test_tool_visibility.sh +34 -0
  26. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/verify_tools.sh +57 -0
  27. simplenote_mcp_server-1.16.0/simplenote_mcp/scripts/watch_logs.sh +27 -0
  28. simplenote_mcp_server-1.16.0/simplenote_mcp/server/__init__.py +15 -0
  29. simplenote_mcp_server-1.16.0/simplenote_mcp/server/alerting.py +774 -0
  30. simplenote_mcp_server-1.16.0/simplenote_mcp/server/auth.py +431 -0
  31. simplenote_mcp_server-1.16.0/simplenote_mcp/server/cache.py +1551 -0
  32. simplenote_mcp_server-1.16.0/simplenote_mcp/server/cache_utils.py +364 -0
  33. simplenote_mcp_server-1.16.0/simplenote_mcp/server/compat/__init__.py +47 -0
  34. simplenote_mcp_server-1.16.0/simplenote_mcp/server/config.py +264 -0
  35. simplenote_mcp_server-1.16.0/simplenote_mcp/server/context.py +69 -0
  36. simplenote_mcp_server-1.16.0/simplenote_mcp/server/decorators.py +460 -0
  37. simplenote_mcp_server-1.16.0/simplenote_mcp/server/duplicates.py +154 -0
  38. simplenote_mcp_server-1.16.0/simplenote_mcp/server/error_codes.py +286 -0
  39. simplenote_mcp_server-1.16.0/simplenote_mcp/server/error_helpers.py +540 -0
  40. simplenote_mcp_server-1.16.0/simplenote_mcp/server/error_taxonomy.py +543 -0
  41. simplenote_mcp_server-1.16.0/simplenote_mcp/server/errors.py +599 -0
  42. simplenote_mcp_server-1.16.0/simplenote_mcp/server/export.py +145 -0
  43. simplenote_mcp_server-1.16.0/simplenote_mcp/server/http_endpoints.py +556 -0
  44. simplenote_mcp_server-1.16.0/simplenote_mcp/server/log_monitor.py +647 -0
  45. simplenote_mcp_server-1.16.0/simplenote_mcp/server/logger_factory.py +542 -0
  46. simplenote_mcp_server-1.16.0/simplenote_mcp/server/logging.py +538 -0
  47. simplenote_mcp_server-1.16.0/simplenote_mcp/server/mcp_types_compat.py +270 -0
  48. simplenote_mcp_server-1.16.0/simplenote_mcp/server/memory_monitor.py +534 -0
  49. simplenote_mcp_server-1.16.0/simplenote_mcp/server/middleware.py +714 -0
  50. simplenote_mcp_server-1.16.0/simplenote_mcp/server/monitoring/__init__.py +40 -0
  51. simplenote_mcp_server-1.16.0/simplenote_mcp/server/monitoring/metrics.py +796 -0
  52. simplenote_mcp_server-1.16.0/simplenote_mcp/server/monitoring/thresholds.py +706 -0
  53. simplenote_mcp_server-1.16.0/simplenote_mcp/server/search/__init__.py +15 -0
  54. simplenote_mcp_server-1.16.0/simplenote_mcp/server/search/date_parser.py +114 -0
  55. simplenote_mcp_server-1.16.0/simplenote_mcp/server/search/engine.py +596 -0
  56. simplenote_mcp_server-1.16.0/simplenote_mcp/server/search/fuzzy.py +142 -0
  57. simplenote_mcp_server-1.16.0/simplenote_mcp/server/search/parser.py +203 -0
  58. simplenote_mcp_server-1.16.0/simplenote_mcp/server/security.py +652 -0
  59. simplenote_mcp_server-1.16.0/simplenote_mcp/server/server.py +1883 -0
  60. simplenote_mcp_server-1.16.0/simplenote_mcp/server/tool_handlers.py +2616 -0
  61. simplenote_mcp_server-1.16.0/simplenote_mcp/server/utils/__init__.py +5 -0
  62. simplenote_mcp_server-1.16.0/simplenote_mcp/server/utils/common.py +76 -0
  63. simplenote_mcp_server-1.16.0/simplenote_mcp/server/utils/content_type.py +399 -0
  64. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/PKG-INFO +739 -0
  65. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/SOURCES.txt +114 -0
  66. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/dependency_links.txt +1 -0
  67. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/entry_points.txt +2 -0
  68. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/requires.txt +61 -0
  69. simplenote_mcp_server-1.16.0/simplenote_mcp_server.egg-info/top_level.txt +1 -0
@@ -0,0 +1,510 @@
1
+ # Changelog
2
+
3
+ All notable changes to the Simplenote MCP Server project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.16.0] - 2026-04-28
11
+
12
+ ### Added
13
+ - `permanent_delete_note` tool: irreversibly destroy a single note; requires `confirm=true` to execute; returns a dry-run description when `confirm=false` (default) — operation cannot be undone
14
+ - `empty_trash` tool: permanently delete all trashed notes in one operation; defaults to `dry_run=true` (lists trashed notes without deleting); requires `dry_run=false` AND `confirm=true` to execute — operation cannot be undone
15
+
16
+ ### Fixed
17
+ - `list_tags` returning empty results after startup: `_populate_cache_direct` now calls `_build_tag_index` when loading tagged notes, fixing the issue where `_tag_index` stayed empty because `cache.initialize()` short-circuited on the eagerly-set `_initialized=True` flag (closes #507)
18
+ - `log_monitor` background thread exceptions now logged instead of silently swallowed
19
+ - Incomplete URL sanitization in `alerting.py` (CodeQL `py/incomplete-url-substring-sanitization`)
20
+ - All remaining CodeQL Python findings resolved (`py/empty-except`, `py/import-and-import-from`, wrong-number-of-arguments in integration tests)
21
+ - Stale config cache leaking `offline_mode=False` between test runs
22
+
23
+ ### Security
24
+ - `cryptography` bumped 46.0.7 → 47.0.0
25
+ - Container CVE scan hardened: `ignore-unfixed: true` added to Trivy action; `.trivyignore` added for five CVEs with no available Debian package fix (glibc CVE-2025-4802, linux-pam CVE-2025-6020, perl CVE-2023-31484, sqlite CVE-2025-6965, zlib CVE-2023-45853)
26
+ - pip-audit false positive CVE-2026-3219 suppressed (affects CI runner's `pip` tool, not a project dependency)
27
+
28
+ ## [1.15.0] - 2026-04-14
29
+
30
+ ### Added
31
+ - `publish_note` tool: publish a note to a public URL by setting the `published` system tag via `update_note`; returns `public_url`; idempotent if already published
32
+ - `unpublish_note` tool: remove a note from public access by clearing the `published` system tag; no-op if not published
33
+
34
+ ### Fixed
35
+ - Broken `DOCKER_README.md` symlink replaced with real file (symlink target was deleted in doc cleanup, breaking the Docker Hub description CI step)
36
+
37
+ ## [1.14.0] - 2026-04-13
38
+
39
+ ### Added
40
+ - `get_server_info` tool: returns server name, version, author, registered tool count, and a debug block (Python version, platform, cache status, sync interval, log level, offline mode)
41
+
42
+ ### Fixed
43
+ - `log_monitor._process_log_file`: eliminated unawaited coroutine RuntimeWarning on Python 3.13+ by replacing `run_coroutine_threadsafe` with `loop.run_until_complete()` in background thread context
44
+
45
+ ### Changed
46
+ - Python runtime upgraded to 3.13.13 (pyenv); CI `PYTHON_VERSION` updated to match
47
+ - Search relevance scoring model documented in `search/engine.py:_calculate_relevance()`
48
+
49
+ ### Removed
50
+ - 48 stale historical docs (planning drafts, completed-work summaries, evaluation reports from 2025) superseded by root ROADMAP.md and TODO.md
51
+
52
+ ## [1.13.0] - 2026-04-12
53
+
54
+ ### Added
55
+ - `add_text` tool: append a text block to an existing note without fetching the full note first
56
+ - `list_tags` tool: list all tags with note counts, sortable by name or count
57
+ - `get_note_versions` tool: retrieve version history for a note (up to 10 versions with previews)
58
+ - `restore_version` tool: restore a note to a specific historical version
59
+ - `rename_tag` tool: rename a tag across all notes atomically, with `dry_run` preview support
60
+ - `get_or_create_note` tool: find an existing note by title or create it atomically to avoid duplicates
61
+ - `append_to_daily_note` tool: append a timestamped entry to today's daily note, creating it if needed
62
+ - `replace_section` tool: replace the content of a named Markdown section without touching other sections
63
+ - `find_untagged_notes` tool: list notes with no tags for housekeeping, with configurable limit
64
+ - `bulk_tag` tool: add, remove, or set tags on multiple notes in a single operation
65
+ - `restore_note` tool: un-trash a deleted note (reverses `delete_note`)
66
+ - Tag sanitization: spaces in tags are replaced with hyphens at input time
67
+ - `search_notes` supports `pinned`, `created_after`, and `modified_after` filter parameters
68
+
69
+ ### Changed
70
+ - Default `SNIPPET_MAX_LENGTH` increased from 100 to 300 characters for richer search result context
71
+ - `ResourceNotFoundError` now includes `resource_id` in all tool handlers for better error tracing
72
+ - `_parse_tags()` moved to `ToolHandlerBase` so all handlers can use consistent tag parsing
73
+ - Tool descriptions updated across all tools with use-vs-alternatives guidance
74
+
75
+ ### Fixed
76
+ - `AddTagsHandler`, `RemoveTagsHandler`, `ReplaceTagsHandler` responses now include `tags_added`, `tags_removed`, `tags_now` fields for auditability
77
+
78
+ ## [1.12.1] - 2026-04-08
79
+
80
+ ### Fixed
81
+ - Replace deprecated `asyncio.get_event_loop()` with `asyncio.get_running_loop()` across
82
+ `cache.py`, `security.py`, `middleware.py`, `memory_monitor.py`, `log_monitor.py`, and
83
+ `server.py` — eliminates `DeprecationWarning` on Python 3.10+
84
+ - Fix memory leak in `SecurityValidator`: `failed_validation_attempts` buckets now capped
85
+ at 500 entries per event type, preventing unbounded growth in long-running servers
86
+ - Fix order-dependent test flake in `test_log_monitoring.py` via `reset_log_monitor()`
87
+ singleton reset in `setup_method`
88
+ - Fix 4 vacuous `assert True` assertions in `test_phase2_integration.py` with real checks
89
+ - Fix isolated test state for all `TestAuthorizationBoundaries` classes — global
90
+ `note_cache` and `simplenote_client` singletons now reset before each test
91
+ - Fix `TestConfigSingleton` isolation: add `setup_method` to reset `_config` before tests
92
+ - Fix mixed import style in `test_server_advanced.py` (code scanning alert)
93
+
94
+ ### Security
95
+ - Memory leak in `SecurityValidator.failed_validation_attempts` patched — unbounded
96
+ accumulation could be exploited to exhaust server memory under sustained load
97
+
98
+ ### Dependencies
99
+ - `mcp`: 1.26.0 → 1.27.0
100
+ - `aiohttp`: 3.13.4 → 3.13.5
101
+ - `requests`: 2.33.0 → 2.33.1
102
+ - `uvicorn`: 0.42.0 → 0.43.0
103
+ - `pydantic-core`: 2.44.0 → 2.45.0
104
+ - `more-itertools`: 10.8.0 → 11.0.1
105
+ - `marshmallow`: 4.2.3 → 4.3.0
106
+ - `mypy`: 1.19.1 → 1.20.0 (dev)
107
+ - `ruff`: 0.15.8 → 0.15.9 (dev)
108
+ - `pip-audit`: 2.9.0 → 2.10.0 (dev)
109
+ - `click`, `regex`, `charset-normalizer`, `pymdown-extensions`, `pydantic-core` updated
110
+
111
+ ### Internal
112
+ - Add `pytest-randomly` to test dependencies; CI uses `--randomly-seed=$GITHUB_RUN_ID`
113
+ for reproducible randomised test ordering
114
+ - Harden coverage threshold to 75% hard-fail (was 65% warn-only)
115
+ - Add `tests/test_server_handlers.py`: 26 focused tests covering `get_simplenote_client`,
116
+ PID file management, signal handlers, `handle_list_tools` exception fallback,
117
+ `handle_call_tool` unknown-tool and `ServerError` paths, `handle_list_prompts`,
118
+ `handle_get_prompt` (all 3 branches), and `handle_read_resource` invalid-URI /
119
+ cache-miss / not-found paths
120
+
121
+ ## [1.11.0] - 2026-02-25
122
+
123
+ ### 🚀 Minor Release: New Tools, Dependency Refresh, and CI/CD Improvements
124
+
125
+ This release adds powerful new note management tools, a comprehensive dependency refresh, and resolves CI/CD pipeline failures.
126
+
127
+ ### Added
128
+ - **🔍 Fuzzy search** — New `fuzzy_search_notes` tool using thefuzz for approximate string matching
129
+ - **📅 Natural language date parsing** — New `search_notes_by_date` tool with human-friendly date expressions (e.g. "last week", "yesterday")
130
+ - **📤 Note export** — New `export_notes` tool for bulk export in Markdown, plain text, or JSON formats
131
+ - **🔁 Duplicate detection** — New `find_duplicate_notes` tool to identify near-duplicate content across the note collection
132
+
133
+ ### Fixed
134
+ - Resolved CI/CD pipeline failures caused by VERSION file corruption
135
+ - Added missing `python-dateutil` production dependency to `pyproject.toml`
136
+ - Resolved 3 CodeQL code scanning alerts
137
+ - Resolved mypy duplicate module detection and untyped import errors
138
+ - Addressed additional security review findings
139
+
140
+ ### Dependencies
141
+ - 50+ dependency updates via Dependabot including:
142
+ - cryptography: 46.0.3 → 46.0.5 (security fix)
143
+ - nltk: 3.9.1 → 3.9.3 (security fix — GHSA-7p94-766c-hgjp)
144
+ - ruff: 0.14.14 → 0.15.1
145
+ - pydantic-core: 2.33.2 → 2.41.5
146
+ - uvicorn: 0.35.0 → 0.40.0
147
+ - typer: 0.19.1 → 0.23.1
148
+ - setuptools: 80.9.0 → 82.0.0
149
+ - cyclonedx-python-lib: 9.1.0 → 11.6.0
150
+ - psutil: 6.1.1 → 7.2.2
151
+ - pycparser: 2.22 → 3.0
152
+ - coverage: 7.13.1 → 7.13.4
153
+ - pre-commit: 4.2.0 → 4.5.1
154
+ - platformdirs: 4.4.0 → 4.9.1
155
+ - starlette, httpx-sse, packaging, pluggy, pyjwt and many more
156
+
157
+ ### CI/CD
158
+ - Removed deprecated `safety` tool from security scanning workflow; fully replaced by `pip-audit`
159
+ - Updated pinned ruff version to `0.15.1` in `security.yml` and `auto-fix.yml` workflows, matching `pyproject.toml`
160
+ - Performance test threshold adjusted from `0.2s` to `0.5s` for 500-item listings to prevent flaky failures on slower CI runners
161
+
162
+ ### Quality Assurance
163
+ - All 975 tests passing with 74% code coverage
164
+ - Zero linting errors (Ruff)
165
+ - Zero type checking errors (mypy)
166
+ - Zero open security alerts (CodeQL, Bandit, pip-audit)
167
+ - All CI/CD pipelines passing
168
+
169
+ ## [1.10.1] - 2026-01-26
170
+
171
+ ### 🔧 Patch Release: Security Fixes and Code Quality Improvements
172
+
173
+ This patch release resolves all CodeQL security alerts and improves code quality through cyclic import fixes.
174
+
175
+ ### Security
176
+ - **Resolved all CodeQL code scanning alerts** (0 open alerts)
177
+ - Fixed `py/cyclic-import` issues between error handling modules
178
+ - Fixed `py/repeated-import` patterns across test files
179
+ - Fixed `py/empty-except` patterns with proper documentation
180
+ - Fixed `py/unnecessary-pass` and `py/unused-local-variable` findings
181
+ - **Docker image security improvements**
182
+ - Added `apt-get upgrade` to apply security patches in base image
183
+ - Pinned setuptools>=78.1.1 for jaraco.context CVE fix
184
+ - **Dismissed infrastructure CVEs** (no upstream fixes available)
185
+ - glibc CVEs in Debian base image (CVE-2026-0861, CVE-2026-0915, CVE-2025-15281)
186
+ - Vendored wheel CVE in setuptools (CVE-2026-24049)
187
+
188
+ ### Fixed
189
+ - Resolved cyclic import between `errors.py` and `error_taxonomy.py` by moving `DEFAULT_RESOLUTION_STEPS` to `error_codes.py`
190
+ - Fixed CI/CD pipeline failures related to CodeQL and safety package compatibility
191
+ - Replaced `safety` with `pip-audit` for dependency vulnerability scanning
192
+
193
+ ### Dependencies
194
+ - 47+ dependency updates via Dependabot including:
195
+ - starlette: 0.50.0 → 0.52.1
196
+ - coverage: 7.11.0 → 7.13.1
197
+ - pytest: 8.4.2 → 9.0.2
198
+ - ruff: 0.14.10 → 0.14.14
199
+ - bandit: 1.8.6 → 1.9.3
200
+ - mcp: Updated to latest version
201
+ - cryptography: Updated to 46.0.3
202
+
203
+ ### Quality Assurance
204
+ - All 850 tests passing with 73% code coverage
205
+ - Zero linting errors (Ruff)
206
+ - Zero type checking errors (mypy)
207
+ - Zero open security alerts
208
+ - All CI/CD pipelines passing
209
+
210
+ ## [1.10.0] - 2026-01-08
211
+
212
+ ### 🔒 Security Release: Critical Vulnerability Fixes and Maintenance Updates
213
+
214
+ This release addresses a critical security vulnerability in urllib3 and includes comprehensive dependency updates from the past two months.
215
+
216
+ ### Security
217
+ - **🔒 Critical**: Fixed CVE-2026-21441 in urllib3 dependency
218
+ - Upgraded urllib3 from 2.6.2 to >=2.6.3
219
+ - Addresses decompression bomb vulnerability in streaming API
220
+ - Prevents excessive resource consumption from malicious servers
221
+ - No known vulnerabilities remaining in dependencies
222
+ - Maintained security posture with zero high/critical Bandit findings in production code
223
+ - All credentials properly managed via environment variables (no hardcoded secrets)
224
+
225
+ ### Dependencies
226
+ - Comprehensive dependency updates via Dependabot (20+ packages)
227
+ - certifi: 2025.11.12 → 2026.1.4
228
+ - filelock: 3.20.1 → 3.20.2
229
+ - sse-starlette: 3.0.4 → 3.1.2
230
+ - coverage: 7.13.0 → 7.13.1
231
+ - psutil: 7.1.3 → 7.2.1
232
+ - pyparsing: 3.2.5 → 3.3.1
233
+ - typer: 0.20.0 → 0.21.0
234
+ - uvicorn: 0.38.0 → 0.40.0
235
+ - python-multipart: 0.0.20 → 0.0.21
236
+ - pre-commit: 4.5.0 → 4.5.1
237
+ - mypy: 1.19.0 → 1.19.1
238
+ - ruff: 0.14.9 → 0.14.10
239
+ - nodeenv: 1.9.1 → 1.10.0
240
+ - mcp[cli]: Updated to latest version
241
+
242
+ ### Fixed
243
+ - CI/CD: Restored DOCKER_README.md symlink for Docker Hub description
244
+ - CI/CD: Improved handling of disabled auto-merge in Dependabot workflow
245
+ - Types: Added missing type hints to http_endpoints.py
246
+ - CI/CD: Resolved workflow issues and improved GitHub Actions configuration
247
+ - CI/CD: Updated GitHub Actions dependencies (upload-artifact v5→v6, download-artifact v3→v4, cache v4→v5)
248
+
249
+ ### Quality Assurance
250
+ - All 831 tests passing with 73% code coverage
251
+ - Zero linting errors (Ruff)
252
+ - Zero type checking errors (mypy)
253
+ - Zero high/critical security issues (Bandit, pip-audit)
254
+ - Comprehensive security review completed
255
+
256
+ ## [1.9.0] - 2025-10-28
257
+
258
+ ### 🎉 Major Release: Production-Ready with Critical Performance Fix
259
+
260
+ This release marks a significant milestone with **98% startup performance improvement** and comprehensive project health enhancements. The server is now **fully production-ready** for Claude Desktop integration.
261
+
262
+ ### Fixed
263
+ - **🚀 Critical**: Resolved Claude Desktop timeout by making cache initialization truly async
264
+ - Run blocking Simplenote API calls in thread pool executor to avoid blocking event loop
265
+ - **Reduced server startup time from 55+ seconds to < 1 second** (98% improvement)
266
+ - Fixed `anyio.BrokenResourceError` during shutdown
267
+ - Fixed unawaited coroutine warnings in log monitor
268
+ - Allow graceful operation with empty cache during background loading
269
+ - See `CLAUDE_DESKTOP_TIMEOUT_FIX.md` for detailed technical analysis
270
+
271
+ ### Added
272
+ - **📚 Complete documentation suite**
273
+ - Comprehensive CHANGELOG.md with full version history
274
+ - Production validation guide (`TESTING_CLAUDE_DESKTOP.md`)
275
+ - User feedback collection templates
276
+ - GitHub issue templates for bug reports and feature requests
277
+ - Discussion templates for community engagement
278
+ - Detailed project review and health metrics documentation
279
+ - **🔧 Code quality improvements**
280
+ - Phase 1 refactoring complete: Reduced high-complexity functions by 21%
281
+ - Cache module complexity reduced from CC 33 to < 10 (100% improvement)
282
+ - Maintainability Index improved from 12.7 to 16.2 (+28%)
283
+ - Extracted 23 helper methods for better code organization
284
+ - See `REFACTORING_PHASE1_COMPLETE.md` for details
285
+ - **📊 Enhanced monitoring and metrics**
286
+ - Automated complexity analysis script (`scripts/quality/check_complexity.py`)
287
+ - Performance benchmarking for startup time validation
288
+ - Comprehensive project review documentation
289
+
290
+ ### Changed
291
+ - **✨ Project health status**
292
+ - Zero open issues maintained
293
+ - Zero open pull requests maintained
294
+ - Zero diagnostic errors in codebase
295
+ - All 756 tests passing with 69.64% coverage
296
+ - CI/CD pipeline running at 100% success rate
297
+ - **📦 Documentation improvements**
298
+ - Updated README with v1.9.0 highlights
299
+ - Enhanced troubleshooting guides
300
+ - Added production deployment best practices
301
+ - Improved contributor guidelines
302
+
303
+ ### Performance
304
+ - **Startup time**: 55+ seconds → < 1 second (98% improvement)
305
+ - **Test coverage**: Maintained at 69.64% (670 tests)
306
+ - **Code complexity**: Functions CC ≥ 15 reduced from 28 to 22 (-21%)
307
+ - **Docker image size**: 346MB (optimized multi-stage build)
308
+
309
+ ### Security
310
+ - Zero high/critical vulnerabilities
311
+ - All security scans passing (Bandit, Safety, CodeQL, Trivy)
312
+ - Enhanced input validation and rate limiting
313
+ - Regular automated security updates via Dependabot
314
+
315
+ ### Documentation
316
+ - Complete version history in CHANGELOG.md
317
+ - Production validation guide
318
+ - User feedback collection process
319
+ - Issue and discussion templates
320
+ - Comprehensive project review (Grade A+)
321
+
322
+ ## [1.8.1] - 2025-10-26
323
+
324
+ ### Added
325
+ - Comprehensive quality automation and project improvements
326
+ - Added comprehensive cache coverage tests (14% → 83% coverage for cache module)
327
+ - Test performance script for startup validation
328
+ - Enhanced documentation for troubleshooting
329
+
330
+ ### Changed
331
+ - Updated TODO.md with 2025-10-20 maintenance actions
332
+ - Upgraded actions/setup-node from v5 to v6 in CI/CD workflows
333
+
334
+ ### Fixed
335
+ - Corrected Python 3.14 site-packages path in Docker builds
336
+
337
+ ### Dependencies
338
+ - Upgraded MCP library from 1.14.0 to 1.18.0
339
+ - Upgraded Ruff from 0.14.0 to 0.14.1
340
+ - Upgraded pytest from 8.4.1 to 8.4.2
341
+ - Upgraded pytest-asyncio from 1.1.0 to 1.2.0
342
+ - Upgraded pytest-cov from 6.2.1 to 7.0.0
343
+ - Upgraded mypy from 1.18.1 to 1.18.2
344
+ - Upgraded coverage from 7.8.2 to 7.11.0
345
+ - Multiple dependency updates via Dependabot (pydantic, uvicorn, idna, etc.)
346
+
347
+ ## [1.8.0] - 2025-10-19
348
+
349
+ ### Changed
350
+ - Major dependency refresh to latest stable versions
351
+ - Improved metrics collection and monitoring
352
+
353
+ ### Dependencies
354
+ - Updated multiple production and development dependencies to latest versions
355
+
356
+ ## [1.7.0] - 2025-10-14
357
+
358
+ ### Added
359
+ - CodeQL security analysis integration
360
+ - Enhanced CI/CD pipeline with security scanning
361
+ - Improved Docker multi-stage builds
362
+
363
+ ### Fixed
364
+ - Resolved CodeQL and Trivy scanner failures in CI
365
+ - Fixed integration test failures in CI offline mode
366
+ - Updated workflow badge references in README
367
+ - Installed build package for CI and local testing
368
+
369
+ ### Changed
370
+ - Upgraded Docker base image to Python 3.14-slim
371
+ - Upgraded GitHub Actions dependencies
372
+
373
+ ## [1.6.0] - 2025-09
374
+
375
+ ### Added
376
+ - MCP evaluations framework integration
377
+ - Comprehensive test suite with 700+ tests
378
+ - Performance monitoring and metrics collection
379
+ - Security hardening with multiple scanning tools
380
+ - HTTP endpoints for health and metrics
381
+ - Advanced search with boolean operators
382
+ - Tag filtering and pagination support
383
+
384
+ ### Changed
385
+ - Improved cache performance with background synchronization
386
+ - Enhanced error handling and taxonomy
387
+ - Better logging and diagnostics
388
+
389
+ ### Security
390
+ - Added Bandit security scanning
391
+ - Added pip-audit vulnerability scanning
392
+ - Added Trivy container scanning
393
+ - Implemented rate limiting and DoS protection
394
+ - Enhanced input validation and sanitization
395
+
396
+ ## [1.5.0] - 2025-08
397
+
398
+ ### Added
399
+ - Docker and Kubernetes deployment support
400
+ - Helm charts for production deployments
401
+ - Background cache synchronization
402
+ - Rate limiting middleware
403
+ - Security monitoring and alerting
404
+
405
+ ### Changed
406
+ - Refactored server architecture for better modularity
407
+ - Improved error handling with custom error taxonomy
408
+ - Enhanced documentation with deployment guides
409
+
410
+ ## [1.4.0] - 2025-07
411
+
412
+ ### Added
413
+ - MCP protocol 2024-11-05 support
414
+ - Prompts capability for note templates
415
+ - Resources capability for note listing
416
+ - Tools capability for note management
417
+ - Basic caching implementation
418
+
419
+ ### Changed
420
+ - Migrated to MCP Python SDK 1.0+
421
+ - Updated authentication to use environment variables
422
+ - Improved note search functionality
423
+
424
+ ## [1.3.0] - 2025-06
425
+
426
+ ### Added
427
+ - Tag management support
428
+ - Note filtering by tags
429
+ - Pagination for note lists
430
+
431
+ ### Changed
432
+ - Improved note content parsing
433
+ - Better error messages
434
+
435
+ ## [1.2.0] - 2025-05
436
+
437
+ ### Added
438
+ - Note update functionality
439
+ - Note deletion (trash) functionality
440
+ - Search query support
441
+
442
+ ### Changed
443
+ - Enhanced note listing with sorting
444
+ - Improved connection handling
445
+
446
+ ## [1.1.0] - 2025-04
447
+
448
+ ### Added
449
+ - Note creation capability
450
+ - Basic note listing
451
+ - Initial MCP integration
452
+
453
+ ### Changed
454
+ - Refactored to use Simplenote Python library
455
+ - Improved logging
456
+
457
+ ## [1.0.0] - 2025-03
458
+
459
+ ### Added
460
+ - Initial release
461
+ - Basic Simplenote authentication
462
+ - Read-only note access
463
+ - Simple MCP server implementation
464
+
465
+ ---
466
+
467
+ ## Version History Summary
468
+
469
+ - **1.11.0** (Current) - 🚀 New tools (fuzzy search, date search, export, duplicates), dependency refresh, CI/CD fixes
470
+ - **1.10.1** - 🔒 Security fixes, CodeQL alerts resolved, dependency updates
471
+ - **1.10.0** - 🔒 Critical urllib3 CVE fix, comprehensive dependency updates
472
+ - **1.9.0** - 🎉 Production-ready release with 98% startup performance improvement
473
+ - **1.8.1** - Quality improvements, dependency updates, Claude Desktop fix preparation
474
+ - **1.8.0** - Major dependency refresh
475
+ - **1.7.0** - Security enhancements, CI/CD improvements
476
+ - **1.6.0** - Comprehensive testing, monitoring, advanced features
477
+ - **1.5.0** - Docker/Kubernetes support, production features
478
+ - **1.4.0** - Full MCP protocol implementation
479
+ - **1.3.0** - Tag management
480
+ - **1.2.0** - Note editing capabilities
481
+ - **1.1.0** - Note creation
482
+ - **1.0.0** - Initial release
483
+
484
+ [Unreleased]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.15.0...HEAD
485
+ [1.15.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.14.0...v1.15.0
486
+ [1.14.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.13.0...v1.14.0
487
+ [1.13.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.12.1...v1.13.0
488
+ [1.12.1]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.12.0...v1.12.1
489
+ [1.12.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.11.0...v1.12.0
490
+ [1.11.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.10.1...v1.11.0
491
+ [1.10.1]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.10.0...v1.10.1
492
+ [1.10.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.9.0...v1.10.0
493
+ [1.9.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.8.1...v1.9.0
494
+ [1.12.1]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.12.0...v1.12.1
495
+ [1.12.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.10.1...v1.12.0
496
+ [1.10.1]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.10.0...v1.10.1
497
+ [1.10.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.9.0...v1.10.0
498
+ [1.9.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.8.1...v1.9.0
499
+ [Unreleased]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.16.0...HEAD
500
+ [1.16.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.15.0...v1.16.0
501
+ [1.8.1]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.8.0...v1.8.1
502
+ [1.8.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.7.0...v1.8.0
503
+ [1.7.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.6.0...v1.7.0
504
+ [1.6.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.5.0...v1.6.0
505
+ [1.5.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.4.0...v1.5.0
506
+ [1.4.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.3.0...v1.4.0
507
+ [1.3.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.2.0...v1.3.0
508
+ [1.2.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.1.0...v1.2.0
509
+ [1.1.0]: https://github.com/docdyhr/simplenote-mcp-server/compare/v1.0.0...v1.1.0
510
+ [1.0.0]: https://github.com/docdyhr/simplenote-mcp-server/releases/tag/v1.0.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Thomas Juul Dyhr
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,10 @@
1
+ include LICENSE
2
+ include README.md
3
+ include CHANGELOG.md
4
+ include VERSION
5
+ include pyproject.toml
6
+ recursive-include simplenote_mcp/scripts *.sh
7
+ global-exclude tests/*
8
+ global-exclude simplenote_mcp/tests/*
9
+ prune tests
10
+ prune simplenote_mcp/tests