python-alfresco-mcp-server 1.1.0__tar.gz → 1.2.1__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 (82) hide show
  1. python_alfresco_mcp_server-1.2.1/.gitignore +250 -0
  2. python_alfresco_mcp_server-1.2.1/CHANGELOG.md +173 -0
  3. python_alfresco_mcp_server-1.2.1/PKG-INFO +851 -0
  4. python_alfresco_mcp_server-1.2.1/README.md +794 -0
  5. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/__init__.py +1 -1
  6. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/config.py +145 -103
  7. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/fastmcp_server.py +48 -8
  8. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/checkout_document.py +7 -2
  9. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/download_document.py +15 -9
  10. python_alfresco_mcp_server-1.2.1/alfresco_mcp_server/utils/connection.py +181 -0
  11. python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uvx-macos.json +17 -0
  12. python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uvx-windows.json +19 -0
  13. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/config.yaml +1 -1
  14. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/README.md +1 -0
  15. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/api_reference.md +22 -20
  16. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/claude_desktop_setup.md +4 -4
  17. python_alfresco_mcp_server-1.2.1/docs/install_with_pip_pipx.md +129 -0
  18. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/mcp_inspector_setup.md +7 -7
  19. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/transport_examples.py +3 -3
  20. python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-http-pipx-config.json +13 -0
  21. python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-http-uvx-config.json +21 -0
  22. python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-stdio-pipx-config.json +13 -0
  23. python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-stdio-uvx-config.json +17 -0
  24. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/pyproject.toml +197 -187
  25. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/pytest.ini +1 -2
  26. python_alfresco_mcp_server-1.2.1/sample-dot-env.txt +64 -0
  27. python_alfresco_mcp_server-1.2.1/uv.lock +3182 -0
  28. python_alfresco_mcp_server-1.1.0/CHANGELOG.md +0 -76
  29. python_alfresco_mcp_server-1.1.0/MANIFEST.in +0 -52
  30. python_alfresco_mcp_server-1.1.0/PKG-INFO +0 -631
  31. python_alfresco_mcp_server-1.1.0/README.md +0 -580
  32. python_alfresco_mcp_server-1.1.0/alfresco_mcp_server/utils/connection.py +0 -114
  33. python_alfresco_mcp_server-1.1.0/claude-desktop-config-wheel-test.json +0 -17
  34. python_alfresco_mcp_server-1.1.0/claude_desktop_config.json +0 -19
  35. python_alfresco_mcp_server-1.1.0/python_alfresco_mcp_server.egg-info/SOURCES.txt +0 -65
  36. python_alfresco_mcp_server-1.1.0/sample-dot-env.txt +0 -27
  37. python_alfresco_mcp_server-1.1.0/setup.cfg +0 -4
  38. python_alfresco_mcp_server-1.1.0/uv.lock +0 -1721
  39. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/LICENSE +0 -0
  40. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/prompts/__init__.py +0 -0
  41. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/prompts/search_and_analyze.py +0 -0
  42. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/resources/__init__.py +0 -0
  43. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/resources/repository_resources.py +0 -0
  44. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/__init__.py +0 -0
  45. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/__init__.py +0 -0
  46. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/browse_repository.py +0 -0
  47. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/cancel_checkout.py +0 -0
  48. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/checkin_document.py +0 -0
  49. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/create_folder.py +0 -0
  50. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/delete_node.py +0 -0
  51. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/get_node_properties.py +0 -0
  52. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/update_node_properties.py +0 -0
  53. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/upload_document.py +0 -0
  54. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/__init__.py +0 -0
  55. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/advanced_search.py +0 -0
  56. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/cmis_search.py +0 -0
  57. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/search_by_metadata.py +0 -0
  58. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/search_content.py +0 -0
  59. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/__init__.py +0 -0
  60. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/file_type_analysis.py +0 -0
  61. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/json_utils.py +0 -0
  62. /python_alfresco_mcp_server-1.1.0/claude-desktop-config-user-macos.json → /python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-pipx-macos.json +0 -0
  63. /python_alfresco_mcp_server-1.1.0/claude-desktop-config-user-windows.json → /python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-pipx-windows.json +0 -0
  64. /python_alfresco_mcp_server-1.1.0/claude-desktop-config-developer-macos.json → /python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uv-macos.json +0 -0
  65. /python_alfresco_mcp_server-1.1.0/claude-desktop-config-developer-windows.json → /python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uv-windows.json +0 -0
  66. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/client_configurations.md +0 -0
  67. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/configuration_guide.md +0 -0
  68. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/quick_start_guide.md +0 -0
  69. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/testing_guide.md +0 -0
  70. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/troubleshooting.md +0 -0
  71. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/README.md +0 -0
  72. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/batch_operations.py +0 -0
  73. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/document_lifecycle.py +0 -0
  74. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/error_handling.py +0 -0
  75. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/examples_summary.md +0 -0
  76. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/quick_start.py +0 -0
  77. /python_alfresco_mcp_server-1.1.0/mcp-inspector-http-config.json → /python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-http-uv-config.json +0 -0
  78. /python_alfresco_mcp_server-1.1.0/mcp-inspector-stdio-config.json → /python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-stdio-uv-config.json +0 -0
  79. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/prompts-for-claude.md +0 -0
  80. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/run_server.py +0 -0
  81. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/scripts/run_tests.py +0 -0
  82. {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/scripts/test.bat +0 -0
@@ -0,0 +1,250 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Additional testing framework artifacts
55
+ .pytest_cache/
56
+ pytest.ini.bak
57
+ test-results/
58
+ test-reports/
59
+ .testmondata
60
+ junit.xml
61
+ report.xml
62
+
63
+ # Translations
64
+ *.mo
65
+ *.pot
66
+
67
+ # Django stuff:
68
+ *.log
69
+ local_settings.py
70
+ db.sqlite3
71
+ db.sqlite3-journal
72
+
73
+ # Flask stuff:
74
+ instance/
75
+ .webassets-cache
76
+
77
+ # Scrapy stuff:
78
+ .scrapy
79
+
80
+ # Sphinx documentation
81
+ docs/_build/
82
+
83
+ # PyBuilder
84
+ .pybuilder/
85
+ target/
86
+
87
+ # Jupyter Notebook
88
+ .ipynb_checkpoints
89
+
90
+ # IPython
91
+ profile_default/
92
+ ipython_config.py
93
+
94
+ # pyenv
95
+ # For a library or package, you might want to ignore these files since the code is
96
+ # intended to run in multiple environments; otherwise, check them in:
97
+ # .python-version
98
+
99
+ # pipenv
100
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
101
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
102
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
103
+ # install all needed dependencies.
104
+ #Pipfile.lock
105
+
106
+ # UV
107
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
108
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
109
+ # commonly ignored for libraries.
110
+ #uv.lock
111
+
112
+ # poetry
113
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
114
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
115
+ # commonly ignored for libraries.
116
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
117
+ #poetry.lock
118
+
119
+ # pdm
120
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
121
+ #pdm.lock
122
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
123
+ # in version control.
124
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
125
+ .pdm.toml
126
+ .pdm-python
127
+ .pdm-build/
128
+
129
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
130
+ __pypackages__/
131
+
132
+ # Celery stuff
133
+ celerybeat-schedule
134
+ celerybeat.pid
135
+
136
+ # SageMath parsed files
137
+ *.sage.py
138
+
139
+ # Environments
140
+ .env
141
+ .venv
142
+ env/
143
+ venv/
144
+ ENV/
145
+ env.bak/
146
+ venv.bak/
147
+
148
+ # Spyder project settings
149
+ .spyderproject
150
+ .spyproject
151
+
152
+ # Rope project settings
153
+ .ropeproject
154
+
155
+ # mkdocs documentation
156
+ /site
157
+
158
+ # mypy
159
+ .mypy_cache/
160
+ .dmypy.json
161
+ dmypy.json
162
+
163
+ # Pyre type checker
164
+ .pyre/
165
+
166
+ # pytype static type analyzer
167
+ .pytype/
168
+
169
+ # Cython debug symbols
170
+ cython_debug/
171
+
172
+ # PyCharm
173
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
174
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
175
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
176
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
177
+ #.idea/
178
+
179
+ # VS Code
180
+ .vscode/settings.json
181
+ .vscode/launch.json
182
+ .vscode/extensions.json
183
+ .vscode/tasks.json
184
+ .vscode/.ropeproject
185
+ # Keep workspace settings but ignore personal settings
186
+ !.vscode/settings.json.template
187
+ !.vscode/mcp.json
188
+
189
+ # Ruff stuff:
190
+ .ruff_cache/
191
+
192
+ # PyPI configuration file
193
+ .pypirc
194
+
195
+ # Cursor
196
+ # Cursor is an AI-powered code editor.`.cursorignore` specifies files/directories to
197
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
198
+ # refer to https://docs.cursor.com/context/ignore-files
199
+ .cursorignore
200
+ .cursorindexingignore
201
+ *.cursormemory
202
+ .cursormemory
203
+ memory-bank/
204
+
205
+ # FastMCP 2.0 and MCP Development
206
+ # MCP client/server communication logs
207
+ *.mcp.log
208
+ mcp_*.log
209
+ fastmcp_*.log
210
+
211
+ # MCP development artifacts
212
+ .mcp_cache/
213
+ mcp_debug/
214
+ .fastmcp/
215
+
216
+ # Alfresco MCP Server specific
217
+ alfresco_mcp_server.log*
218
+ alfresco_*.log
219
+ connection_test.py
220
+ debug_*.py
221
+
222
+ # Development and testing artifacts
223
+ .benchmarks/
224
+ performance_results/
225
+ integration_test_results/
226
+ mock_data/
227
+ test_uploads/
228
+ test_downloads/
229
+
230
+ # Configuration files with secrets (keep templates)
231
+ config.local.yaml
232
+ config.dev.yaml
233
+ config.prod.yaml
234
+ .env.local
235
+ .env.dev
236
+ .env.prod
237
+ # Keep sample config files
238
+ !sample-*.txt
239
+ !config.sample.*
240
+ !.env.sample
241
+
242
+ # Experimental/scratch files
243
+ o.txt
244
+ *.tmp
245
+ test_*.py
246
+ *_test.py
247
+ scratch*
248
+ temp*
249
+ debug_output.txt
250
+ output.txt
@@ -0,0 +1,173 @@
1
+ # Changelog
2
+
3
+ All notable changes to this 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.2.1] - 2026-09-29
11
+
12
+ ### Added
13
+ - **`ALFRESCO_TICKET`**: with `ALFRESCO_AUTH_METHOD=ticket`, a login ticket you already hold is used as-is instead of being fetched from a username and password — so the server can run with no Alfresco password configured at all. Leave it unset and ticket auth behaves as before (acquired from `ALFRESCO_USERNAME` / `ALFRESCO_PASSWORD`). A supplied ticket is never renewed, so it stops working when it expires.
14
+
15
+ ### Changed
16
+ - Requires **python-alfresco-api >= 1.2.2** for the ticket pass-through above.
17
+
18
+ ### Fixed
19
+ - **Integration test `test_search_shared_folder`**: now passes `node_type="cm:folder"`. `search_content` searches documents (`cm:content`) by default, so the search never matched the Shared folder and the test failed.
20
+
21
+ ## [1.2.0] - 2026-08-05
22
+
23
+ ### Added
24
+ - **Alfresco auth methods** (`ALFRESCO_AUTH_METHOD` = `basic` | `ticket` | `oauth2`): the server can now authenticate to Alfresco via HTTP Basic, a login ticket, or an OAuth2/OIDC bearer token (Alfresco `identity-service`), via `python-alfresco-api` 1.2.1+ `OAuth2AuthUtil`, configured with `ALFRESCO_OAUTH2_*` env vars. Documents the setup in the README **Authentication** section (addresses #2). Live-tested basic/ticket/oauth2 end-to-end.
25
+ - **Optional MCP transport authentication** (`MCP_TRANSPORT_AUTH=true`): secures the MCP server itself — HTTP/SSE callers must present an OAuth2 bearer token, validated against an OIDC IdP's JWKS (FastMCP JWT verifier). Off by default; stdio unaffected. Env: `MCP_AUTH_JWKS_URI` / `MCP_AUTH_ISSUER` / `MCP_AUTH_AUDIENCE`.
26
+ - **`download_document` `destination_dir`**: optional custom download folder (default `~/Downloads`). Thanks [@jeremie-lesage](https://github.com/jeremie-lesage) ([#1](https://github.com/stevereiner/python-alfresco-mcp-server/pull/1)).
27
+
28
+ ### Changed
29
+ - **Version 1.2.0** of this package; requires **python-alfresco-api >= 1.2.1** (OAuth2/OIDC auth, `VersionsClient` fix, and OAuth2 service-account `displayName` handling — see below).
30
+ - **Config layout**: moved Claude Desktop sample configs into [`claude-desktop-configs/`](./claude-desktop-configs/) and MCP Inspector samples into [`mcp-inspector-configs/`](./mcp-inspector-configs/); docs and README updated accordingly.
31
+ - **FastMCP 3 upgrade**: bumped dependency from FastMCP 2.x to `fastmcp>=3.4.5,<4`. Server code is compatible with FastMCP 3's API (`list_tools()` / `list_resources()` / `list_prompts()`); JWT transport auth now uses `JWTVerifier` directly. See [FastMCP 2 → 3 upgrade guide](https://gofastmcp.com/getting-started/upgrading/from-fastmcp-2).
32
+ - **Packaging**: switched build backend from setuptools to hatchling (same as python-alfresco-api) for quieter `uv build` output.
33
+
34
+ ### Fixed
35
+ - **checkout_document**: local download filename puts the node ID before the extension (`name_<nodeId>.txt`) instead of after it (`name.txt_<nodeId>`), so editors keep the correct file type.
36
+ - **OAuth2 service-account nodes** (via **python-alfresco-api 1.2.1**): Keycloak client-credentials authenticates as a JIT Alfresco user with no display name, so Alfresco returns `createdByUser` / `modifiedByUser` / `owner` without `displayName` and the generated `UserInfo.from_dict` raised `KeyError('displayName')` (breaking `download_document` and other `nodes.get` tools). Fixed upstream with a runtime shim (`python_alfresco_api/_compat.py`, applied at package import) that defaults missing `displayName` to `id` for core and search `UserInfo` — outside `raw_clients/` so it survives client re-generation. Basic/ticket and user-based OAuth2 tokens were unaffected.
37
+
38
+ ## [1.1.0] - 2025-01-25
39
+
40
+ ### Alfresco_MCP_Server dir code changes for v1.1
41
+ - **Code Split**: Refactored from monolithic single file to modular structure with separate files
42
+ - **Directory Structure**: Reorganized from flat to hierarchical structure
43
+ - `tools/search/` - 4 search-related tools
44
+ - `tools/core/` - 11 core management tools
45
+ - `resources/` - Repository information
46
+ - `prompts/` - AI templates
47
+ - `utils/` - Shared utilities
48
+ - fix: implement Windows UTF-8 encoding support (emoji character encoding)
49
+ - get to work with python-alfresco-api 1.1.x
50
+ - add imports and __all__ to get files included in packaging
51
+
52
+ ### UV Package Management Support
53
+ - **Rust-based Performance**: UV provides faster dependency resolution and package management
54
+ - **Automatic Environment Management**: UV handles virtual environment creation and activation
55
+ - **Simplified Installation**: One-command setup replaces multi-step manual process
56
+ - **Cross-platform Compatibility**: Consistent behavior across Windows, macOS, and Linux
57
+
58
+ ### PyPI Distribution
59
+ - **Direct Installation**: Available via `pip install python-alfresco-mcp-server`
60
+ - **UV Integration**: Compatible with `uv pip install python-alfresco-mcp-server`
61
+ - **Immediate Usage**: Run server directly after installation without source code
62
+
63
+ ### Update Tests for v1.1
64
+ - `test: transform test suite from 76+ failures to 143/143 passing`
65
+ - `test: add comprehensive live integration testing with 21 Alfresco tests`
66
+ - `test: implement cross-platform emoji handling for Windows compatibility`
67
+ - `test: enhance coverage reporting with HTML output`
68
+ - `test: add automated testing for all manual scenarios`
69
+ - `test: implement strip_emojis() function for Windows compatibility`
70
+ - `test: add comprehensive unit test coverage (122 tests)`
71
+ - `test: fix test import paths for modular architecture`
72
+
73
+ ### MCP Clients: config files added for v1.1
74
+ - Added Claude Desktop and MCP Inspector config files
75
+ - `config: added claude-desktop-config-developer-windows.json with UV support`
76
+ - `config: added claude-desktop-config-developer-macos.json with UV support`
77
+ - `config: added claude-desktop-config-user-windows.json`
78
+ - `config: added claude-desktop-config-user-macos.json`
79
+ - `config: added Windows UTF-8 encoding variables to windows configs`
80
+ - `config: added mcp-inspector-http-config.json for HTTP transport using uv`
81
+ - `config: added mcp-inspector-stdio-config.json for STDIO transport using uv`
82
+ - 'examples: prompts-for-claude.md has example prompt text to test tools
83
+
84
+ ### Update docs for v1.1
85
+ - `docs: create comprehensive CHANGELOG.md for v1.0.0 and v1.1.0`
86
+ - `docs: update quick start guide for UV approach`
87
+ - 'docs: api_reference.md added details for all tools, etc
88
+ - `docs: added claude_desktop_setup.md, mcp_inspector_setup.md, and client_configurations.md
89
+
90
+ ### Documentation Updates for v1.1
91
+ - **Installation Instructions**: Added PyPI installation methods
92
+ - **Configuration Examples**: Updated for UV approach
93
+ - **Testing Procedures**: Comprehensive test execution guidance
94
+ - **Troubleshooting**: Enhanced problem resolution guidance
95
+
96
+ ### Update Readme for v1.1
97
+ - added install from PyPI
98
+ - added how to install UV package manager
99
+ - added claude desktop and mcp inspector setup sections
100
+ - reword technical sections for accuracy
101
+ - add v1.1 list of changes, depend on python-alfresco 1.1.1, python 3.10+
102
+ - added how to install Alfresco Community from github
103
+
104
+ ### Update project files and misc root dir files for v1.1
105
+ - gitignore now ignores cursor memory and memory-bank dir, keep .vscode/mcp.json
106
+ - config.yaml has changed alfresco_url to have base_url, added timeout, added
107
+ mcp server name and version confg
108
+ - MANIFEST.in added for proper package distrubution config
109
+ - pyproject.toml change to have v1.1.0 release, pypi distrib settings, remove
110
+ fastMCP version restriction, update to require python 3.10 or greater, add
111
+ pypi keyword and topic, settings, project urls for pypi, configure setuptools
112
+ for includes, excludes
113
+ - run_server.py script added
114
+ - .vscode/mcp.json uses run_server.py for debugging mcp server
115
+ - uv.lock add now that use uv, and uv lock --upgrade updated v0.12.5 from v0.12.4 of ruff
116
+
117
+ ### Fixes for pyproject.toml for v1.1
118
+ - require python-alfresco-api >= 1.1.1 not 1.0.0 in dependencies
119
+ - have python 3.10 instead of 3.8 for tool.mypy, and py310 not py38 for tool.ruff and tool.black
120
+
121
+ ### Example Code Updates for v1.1
122
+ - `examples: update transport examples for UV approach`
123
+ - `examples: enhance document lifecycle example`
124
+ - `examples: add UV-specific installation examples`
125
+ - `examples: update batch operations for improved performance`
126
+ - `examples: refactor error handling patterns`
127
+
128
+ ### Requirements
129
+ - **Python Versions**: 3.10+ (unchanged)
130
+ - **python-alfresco-api**: >= 1.1.1 (updated requirement)
131
+ - **FastMCP**: Tested with v2.10.6
132
+
133
+ ### Tested
134
+ - **Alfresco Versions**: Community 25.1 (tested), Enterprise (not tested in v1.1)
135
+ - **Operating Systems**:
136
+ - Windows (tested)
137
+ - macOS (needs testing)
138
+ - Linux (needs testing, note: no Claude Desktop support on Linux)
139
+ - **MCP Clients**:
140
+ - Claude Desktop (tested and validated)
141
+ - MCP Inspector (tested and validated)
142
+ - Cursor (configuration provided, not tested in v1.1)
143
+ - Claude Code (configuration provided, not tested in v1.1)
144
+
145
+ ## [1.0.0] - 2024-06-24
146
+
147
+ ### Added
148
+ - Initial FastMCP 2.0 server implementation
149
+ - 15 content management tools across search and core operations
150
+ - Full text search with wildcard support
151
+ - Advanced search using AFTS query language
152
+ - Metadata search with property-based queries
153
+ - CMIS SQL search capabilities
154
+ - Complete document lifecycle management (upload, download, checkout, checkin)
155
+ - Version management with major/minor version support
156
+ - Folder operations and repository browsing
157
+ - Property management for documents and folders
158
+ - Multiple transport protocols (STDIO, HTTP, SSE)
159
+ - Configuration via environment variables and .env files
160
+ - Claude Desktop integration with Windows and macOS configs
161
+ - MCP Inspector support for development testing
162
+ - Comprehensive documentation and examples
163
+ - Testing framework with unit and integration tests
164
+ - Error handling and recovery patterns
165
+ - Repository discovery and status reporting
166
+
167
+ ### Technical Implementation
168
+ - python-alfresco-api integration for content services access
169
+ - Pydantic v2 models for type safety
170
+ - Async support for concurrent operations
171
+ - Connection pooling and authentication management
172
+ - Progress reporting and context logging
173
+ - Configuration validation and environment setup