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.
- python_alfresco_mcp_server-1.2.1/.gitignore +250 -0
- python_alfresco_mcp_server-1.2.1/CHANGELOG.md +173 -0
- python_alfresco_mcp_server-1.2.1/PKG-INFO +851 -0
- python_alfresco_mcp_server-1.2.1/README.md +794 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/__init__.py +1 -1
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/config.py +145 -103
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/fastmcp_server.py +48 -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
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/download_document.py +15 -9
- python_alfresco_mcp_server-1.2.1/alfresco_mcp_server/utils/connection.py +181 -0
- python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uvx-macos.json +17 -0
- python_alfresco_mcp_server-1.2.1/claude-desktop-configs/claude-desktop-config-uvx-windows.json +19 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/config.yaml +1 -1
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/README.md +1 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/api_reference.md +22 -20
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/claude_desktop_setup.md +4 -4
- python_alfresco_mcp_server-1.2.1/docs/install_with_pip_pipx.md +129 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/mcp_inspector_setup.md +7 -7
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/transport_examples.py +3 -3
- python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-http-pipx-config.json +13 -0
- python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-http-uvx-config.json +21 -0
- python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-stdio-pipx-config.json +13 -0
- python_alfresco_mcp_server-1.2.1/mcp-inspector-configs/mcp-inspector-stdio-uvx-config.json +17 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/pyproject.toml +197 -187
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/pytest.ini +1 -2
- python_alfresco_mcp_server-1.2.1/sample-dot-env.txt +64 -0
- python_alfresco_mcp_server-1.2.1/uv.lock +3182 -0
- python_alfresco_mcp_server-1.1.0/CHANGELOG.md +0 -76
- python_alfresco_mcp_server-1.1.0/MANIFEST.in +0 -52
- python_alfresco_mcp_server-1.1.0/PKG-INFO +0 -631
- python_alfresco_mcp_server-1.1.0/README.md +0 -580
- python_alfresco_mcp_server-1.1.0/alfresco_mcp_server/utils/connection.py +0 -114
- python_alfresco_mcp_server-1.1.0/claude-desktop-config-wheel-test.json +0 -17
- python_alfresco_mcp_server-1.1.0/claude_desktop_config.json +0 -19
- python_alfresco_mcp_server-1.1.0/python_alfresco_mcp_server.egg-info/SOURCES.txt +0 -65
- python_alfresco_mcp_server-1.1.0/sample-dot-env.txt +0 -27
- python_alfresco_mcp_server-1.1.0/setup.cfg +0 -4
- python_alfresco_mcp_server-1.1.0/uv.lock +0 -1721
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/LICENSE +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/prompts/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/prompts/search_and_analyze.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/resources/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/resources/repository_resources.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/browse_repository.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/cancel_checkout.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/checkin_document.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/create_folder.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/delete_node.py +0 -0
- {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
- {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
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/core/upload_document.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/advanced_search.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/cmis_search.py +0 -0
- {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
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/tools/search/search_content.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/__init__.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/file_type_analysis.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/alfresco_mcp_server/utils/json_utils.py +0 -0
- /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
- /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
- /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
- /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
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/client_configurations.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/configuration_guide.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/quick_start_guide.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/testing_guide.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/docs/troubleshooting.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/README.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/batch_operations.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/document_lifecycle.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/error_handling.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/examples_summary.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/examples/quick_start.py +0 -0
- /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
- /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
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/prompts-for-claude.md +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/run_server.py +0 -0
- {python_alfresco_mcp_server-1.1.0 → python_alfresco_mcp_server-1.2.1}/scripts/run_tests.py +0 -0
- {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
|