python-alfresco-mcp-server 1.1.0__py3-none-any.whl

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 (34) hide show
  1. alfresco_mcp_server/__init__.py +27 -0
  2. alfresco_mcp_server/config.py +104 -0
  3. alfresco_mcp_server/fastmcp_server.py +259 -0
  4. alfresco_mcp_server/prompts/__init__.py +7 -0
  5. alfresco_mcp_server/prompts/search_and_analyze.py +67 -0
  6. alfresco_mcp_server/resources/__init__.py +7 -0
  7. alfresco_mcp_server/resources/repository_resources.py +205 -0
  8. alfresco_mcp_server/tools/__init__.py +13 -0
  9. alfresco_mcp_server/tools/core/__init__.py +27 -0
  10. alfresco_mcp_server/tools/core/browse_repository.py +164 -0
  11. alfresco_mcp_server/tools/core/cancel_checkout.py +160 -0
  12. alfresco_mcp_server/tools/core/checkin_document.py +264 -0
  13. alfresco_mcp_server/tools/core/checkout_document.py +258 -0
  14. alfresco_mcp_server/tools/core/create_folder.py +105 -0
  15. alfresco_mcp_server/tools/core/delete_node.py +88 -0
  16. alfresco_mcp_server/tools/core/download_document.py +214 -0
  17. alfresco_mcp_server/tools/core/get_node_properties.py +195 -0
  18. alfresco_mcp_server/tools/core/update_node_properties.py +138 -0
  19. alfresco_mcp_server/tools/core/upload_document.py +244 -0
  20. alfresco_mcp_server/tools/search/__init__.py +15 -0
  21. alfresco_mcp_server/tools/search/advanced_search.py +204 -0
  22. alfresco_mcp_server/tools/search/cmis_search.py +180 -0
  23. alfresco_mcp_server/tools/search/search_by_metadata.py +183 -0
  24. alfresco_mcp_server/tools/search/search_content.py +186 -0
  25. alfresco_mcp_server/utils/__init__.py +34 -0
  26. alfresco_mcp_server/utils/connection.py +114 -0
  27. alfresco_mcp_server/utils/file_type_analysis.py +163 -0
  28. alfresco_mcp_server/utils/json_utils.py +135 -0
  29. python_alfresco_mcp_server-1.1.0.dist-info/METADATA +631 -0
  30. python_alfresco_mcp_server-1.1.0.dist-info/RECORD +34 -0
  31. python_alfresco_mcp_server-1.1.0.dist-info/WHEEL +5 -0
  32. python_alfresco_mcp_server-1.1.0.dist-info/entry_points.txt +2 -0
  33. python_alfresco_mcp_server-1.1.0.dist-info/licenses/LICENSE +201 -0
  34. python_alfresco_mcp_server-1.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,631 @@
1
+ Metadata-Version: 2.4
2
+ Name: python-alfresco-mcp-server
3
+ Version: 1.1.0
4
+ Summary: FastMCP 2.0 server for Alfresco Content Services integration
5
+ Author-email: Steve Reiner <example@example.com>
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/stevereiner/python-alfresco-mcp-server
8
+ Project-URL: Repository, https://github.com/stevereiner/python-alfresco-mcp-server
9
+ Project-URL: Issues, https://github.com/stevereiner/python-alfresco-mcp-server/issues
10
+ Project-URL: Documentation, https://github.com/stevereiner/python-alfresco-mcp-server#readme
11
+ Keywords: alfresco,mcp,content-management,fastmcp,ai
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
21
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
22
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
23
+ Classifier: Topic :: Database :: Database Engines/Servers
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Requires-Python: >=3.10
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: fastmcp>=2.9.0
29
+ Requires-Dist: python-alfresco-api>=1.1.1
30
+ Requires-Dist: pydantic>=2.0.0
31
+ Requires-Dist: pydantic-settings>=2.0.0
32
+ Requires-Dist: PyYAML>=6.0
33
+ Requires-Dist: httpx>=0.24.0
34
+ Requires-Dist: python-multipart>=0.0.6
35
+ Provides-Extra: dev
36
+ Requires-Dist: black>=23.0.0; extra == "dev"
37
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
38
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
39
+ Provides-Extra: test
40
+ Requires-Dist: pytest>=7.0.0; extra == "test"
41
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "test"
42
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
43
+ Requires-Dist: pytest-xdist>=3.0.0; extra == "test"
44
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
45
+ Requires-Dist: coverage[toml]>=7.0.0; extra == "test"
46
+ Requires-Dist: httpx>=0.24.0; extra == "test"
47
+ Provides-Extra: all
48
+ Requires-Dist: python-alfresco-mcp-server[dev]; extra == "all"
49
+ Requires-Dist: python-alfresco-mcp-server[test]; extra == "all"
50
+ Dynamic: license-file
51
+
52
+ # Python Alfresco MCP Server v1.1 ๐Ÿš€
53
+
54
+ **Model Context Protocol Server for Alfresco Content Services**
55
+
56
+ A full featured MCP server for Alfresco in search and content management areas. It provides the following tools: full text search (content and properties), advanced search, metadata search, CMIS SQL like search, upload, download,
57
+ checkin, checkout, cancel checkout, create folder, folder browse, delete node, and get/set properties. Also has a tool for getting repository status/config (also a resource). Has one prompt example.
58
+ Built with [FastMCP 2.0](https://github.com/paulinephelan/FastMCP).
59
+ Features complete documentation, examples, and
60
+ config for various MCP clients (Claude Desktop, MCP Inspector, references to configuring others).
61
+
62
+ ## ๐ŸŒŸ What's New in v1.1
63
+
64
+ ### **Modular Architecture & Enhanced Testing**
65
+ - **FastMCP**: v1.0 had FastMCP 2.0 implementation that had all tools implementations in the fastmcp_server.py file
66
+ - **Code Modularization in v1.1**: Split monolithic single file into organized modular structure with separate files
67
+ - **Directory Organization**: Organized into `tools/search/`, `tools/core/`, `resources/`, `prompts/`, `utils/` directories
68
+ - **Enhanced Testing**: Complete test suite transformation - 143 tests with 100% pass rate
69
+ - **Client Configuration Files**: Added dedicated Claude Desktop and MCP Inspector configuration files
70
+ - **Live Integration Testing**: 21 Alfresco server validation tests for real-world functionality
71
+ - **Python-Alfresco-API**: python-alfresco-mcp-server v1.1 requires the v1.1.1 python-alfresco-api package
72
+
73
+ ## ๐Ÿ“š Complete Documentation
74
+
75
+ ### **Documentation & Examples**
76
+ - **๐Ÿ“š Complete Documentation**: 9 guides covering setup to deployment
77
+ - **๐Ÿ’ก Examples**: 6 practical examples from quick start to implementation patterns
78
+ - **๐Ÿ”ง Configuration Management**: Environment variables, .env files, and command-line configuration
79
+ - **๐Ÿ—๏ธ Setup instruction for use with MCP client
80
+
81
+ ### **Learning Resources**
82
+ - **๐Ÿš€ [Quick Start Guide](./docs/quick_start_guide.md)**: 5-minute setup and first operations
83
+ - **๐Ÿค– [Claude Desktop Setup](./docs/claude_desktop_setup.md)**: Complete Claude Desktop configuration for users and developers
84
+ - **๐Ÿ”ง [Client Configurations](./docs/client_configurations.md)**: Setup guide for Cursor, Claude Code, and other MCP clients
85
+ - **๐Ÿ“– [Examples Library](./examples/README.md)**: Implementation patterns and examples
86
+
87
+ ### ๐Ÿ“– Guides covering setup, deployment, and usage:
88
+
89
+ - **[๐Ÿ“š Documentation Hub](./docs/README.md)** - Complete navigation and overview
90
+ - **[๐Ÿš€ Quick Start Guide](./docs/quick_start_guide.md)** - 5-minute setup and first operations
91
+ - **[๐Ÿค– Claude Desktop Setup](./docs/claude_desktop_setup.md)** - Complete Claude Desktop configuration for users and developers
92
+ - **[๐Ÿ”ง Client Configurations](./docs/client_configurations.md)** - Setup guide for Cursor, Claude Code, and other MCP clients
93
+ - **[๐Ÿ” MCP Inspector Setup](./docs/mcp_inspector_setup.md)** - Development and testing with MCP Inspector
94
+ - **[๐Ÿ” API Reference](./docs/api_reference.md)** - Complete tool and resource documentation
95
+ - **[โš™๏ธ Configuration Guide](./docs/configuration_guide.md)** - Development to deployment
96
+ - **[๐Ÿงช Testing Guide](./docs/testing_guide.md)** - Quality assurance and test development
97
+ - **[๐Ÿ› ๏ธ Troubleshooting Guide](./docs/troubleshooting.md)** - Problem diagnosis and resolution
98
+
99
+ ## ๐Ÿš€ Features
100
+
101
+ ### Content Management Tools
102
+ - **Search APIs**:
103
+ - **Full Text Search**: Basic content search with wildcard support
104
+ - **Advanced Search**: AFTS query language with date filters, sorting, and field targeting
105
+ - **Metadata Search**: Property-based queries with operators (equals, contains, date ranges)
106
+ - **CMIS Search**: SQL like queries for complex content discovery
107
+ - **Document Lifecycle**: Upload, download, checkin, checkout, cancel checkout
108
+ - **Version Management**: Create major/minor versions with comments
109
+ - **Folder Operations**: Create folders, delete folder nodes
110
+ - **Property Management**: Get and set document/folder properties and names
111
+ - **Node Operations**: Delete nodes (documents and folders) (trash or permanent)
112
+ - **Repository Info**: (Tool and Resource) Returns repository status, version and whether Community or Enterprise, and module configuration
113
+
114
+ ### Modern Architecture
115
+ - **FastMCP 2.0 Framework**: Modern, high-performance MCP server implementation
116
+ - **Multiple Transports**:
117
+ - **STDIO** (direct MCP protocol) - Default and fastest
118
+ - **HTTP** (RESTful API) - Web services and testing
119
+ - **SSE** (Server-Sent Events) - Real-time streaming updates
120
+ - **Enterprise Security**: OAuth 2.1, SSO, audit logging, and encrypted communications (optional)
121
+ - **Type Safety**: Full Pydantic v2 models and async support
122
+ - **In-Memory Testing**: Client testing with faster execution
123
+ - **Progress Reporting**: Real-time operation progress and context logging
124
+ - **Configuration**: Environment variables, .env files, and CLI support
125
+ - **Error Handling**: Graceful error handling with detailed messages and recovery patterns
126
+
127
+ ### AI Integration
128
+ - **MCP Tools**: 15 tools for content operations
129
+ - **MCP Resources**: Repository metadata and status information
130
+ - **MCP Prompts**: AI-friendly templates for common operations
131
+
132
+ ### Alfresco Integration
133
+ Works with Alfresco Community (tested) and Enterprise editions
134
+
135
+ ### FastMCP 2.0 Advantages
136
+ - **Boilerplate Reduction**: FastMCP reduces the amount of boilerplate code needed for implementing a MCP server
137
+ - **Modular Architecture**: Organized 15 tools across logical modules for maintainability
138
+ - **In-Memory Testing**: Client testing instead of FastAPI mocks
139
+ - **Enhanced Developer Experience**: Context logging, progress reporting, automatic schema generation
140
+ - **Future-Proof Architecture**: Ready for MCP 2.0 protocol evolution and AI platform integrations
141
+
142
+
143
+ ## ๐Ÿ“‹ Requirements
144
+
145
+ - Python 3.10+
146
+ - Alfresco Content Services (Community or Enterprise)
147
+ - python-alfresco-api >= 1.1.1
148
+
149
+ ## ๐Ÿ› ๏ธ Installation
150
+
151
+ ### Option A: Install from PyPI (Recommended for Users)
152
+
153
+ The fastest way to get started - install directly from PyPI:
154
+
155
+ ```bash
156
+ # Option 1: pipx (Recommended) - installs in isolated environment + makes globally available
157
+ pipx install python-alfresco-mcp-server
158
+
159
+ # Option 2: pip - traditional package manager
160
+ pip install python-alfresco-mcp-server
161
+
162
+ # Option 3: UV (fastest) - Rust-based package manager
163
+ uv pip install python-alfresco-mcp-server
164
+
165
+ # Run immediately
166
+ python-alfresco-mcp-server --help
167
+ ```
168
+
169
+ **Why pipx?** pipx automatically creates isolated environments for each tool while making commands globally available - eliminates dependency conflicts while providing system-wide access.
170
+
171
+ **Note**: You still need to configure your MCP client (Claude Desktop, MCP Inspector, etc.) with the appropriate configuration. See the [MCP Client Setup](#mcp-client-setup) section below for client configuration details.
172
+
173
+ ### Option B: Install from Source (Recommended for Development)
174
+
175
+ For development or access to latest features:
176
+
177
+ ### 1. Install UV (Recommended)
178
+
179
+ UV is a modern Python package manager written in **Rust** that handles everything automatically. **Much faster than pip** due to its compiled nature and optimized dependency resolution. Choose your installation method:
180
+
181
+ ```bash
182
+ # Method 1: Official installer (recommended)
183
+ # Windows
184
+ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
185
+
186
+ # macOS/Linux
187
+ curl -LsSf https://astral.sh/uv/install.sh | sh
188
+
189
+ # Method 2: pip (if you prefer)
190
+ pip install uv
191
+
192
+ # Method 3: Package managers
193
+ # macOS with Homebrew
194
+ brew install uv
195
+
196
+ # Windows with Chocolatey
197
+ choco install uv
198
+
199
+ # Verify installation
200
+ uv --version
201
+ ```
202
+
203
+ ### 2. Get the Code
204
+
205
+ ```bash
206
+ # Clone the repository
207
+ git clone https://github.com/stevereiner/python-alfresco-mcp-server.git
208
+ cd python-alfresco-mcp-server
209
+ ```
210
+
211
+ ### 3. Install Dependencies (Choose Method)
212
+
213
+ **Option A: UV (Recommended - Automatic everything + much faster):**
214
+
215
+ ```bash
216
+ # UV handles venv creation and dependency installation automatically
217
+ # Rust-based performance makes this much faster than pip
218
+ uv run python-alfresco-mcp-server --help
219
+
220
+ # Or install dependencies explicitly:
221
+ uv sync # Basic dependencies
222
+ uv sync --extra dev # With development tools
223
+ uv sync --extra test # With testing tools
224
+ uv sync --extra all # Everything
225
+ ```
226
+
227
+ **Option B: Traditional pip (Manual venv management):**
228
+
229
+ ```bash
230
+ # Create and activate virtual environment
231
+ python -m venv venv # Traditional Python creates 'venv'
232
+ source venv/bin/activate # Linux/macOS
233
+ # venv\Scripts\activate # Windows
234
+
235
+ # Note: UV creates '.venv' by default (not 'venv')
236
+
237
+ # Install MCP server
238
+ pip install -e .
239
+
240
+ # Or with development dependencies
241
+ pip install -e .[dev]
242
+
243
+ # Or with testing dependencies
244
+ pip install -e .[test]
245
+
246
+ # Or install everything
247
+ pip install -e .[all]
248
+ ```
249
+
250
+ ### 4. Configure Alfresco Connection
251
+
252
+ **Option 1: Environment Variables**
253
+ ```bash
254
+ # Linux/Mac
255
+ export ALFRESCO_URL="http://localhost:8080"
256
+ export ALFRESCO_USERNAME="admin"
257
+ export ALFRESCO_PASSWORD="admin"
258
+ export ALFRESCO_VERIFY_SSL="false"
259
+
260
+ # Windows PowerShell
261
+ $env:ALFRESCO_URL="http://localhost:8080"
262
+ $env:ALFRESCO_USERNAME="admin"
263
+ $env:ALFRESCO_PASSWORD="admin"
264
+ $env:ALFRESCO_VERIFY_SSL="false"
265
+
266
+ # Windows Command Prompt
267
+ set ALFRESCO_URL=http://localhost:8080
268
+ set ALFRESCO_USERNAME=admin
269
+ set ALFRESCO_PASSWORD=admin
270
+ set ALFRESCO_VERIFY_SSL=false
271
+ ```
272
+
273
+ **Option 2: .env file** (recommended - cross-platform):
274
+ ```bash
275
+ # Copy sample-dot-env.txt to .env and customize
276
+ cp sample-dot-env.txt .env
277
+
278
+ # Edit .env file with your settings
279
+ ALFRESCO_URL=http://localhost:8080
280
+ ALFRESCO_USERNAME=admin
281
+ ALFRESCO_PASSWORD=admin
282
+ ALFRESCO_VERIFY_SSL=false
283
+ ```
284
+ > **Note**: The `.env` file is not checked into git for security. Use `sample-dot-env.txt` as a template.
285
+
286
+ ๐Ÿ“– **See [Configuration Guide](./docs/configuration_guide.md) for complete setup options**
287
+
288
+ ## Alfresco Installation
289
+
290
+ If you don't have an Alfresco server installed you can get a docker for the
291
+ Community version from Github
292
+ ```bash
293
+ git clone https://github.com/Alfresco/acs-deployment.git
294
+ ```
295
+
296
+ **Start Alfresco with Docker Compose**
297
+ ```bash
298
+ cd acs-deployment/docker-compose
299
+ ```
300
+ Note: you will likely need to comment out activemq ports other than 8161
301
+ in community-compose.yaml
302
+ ```bash
303
+ ports:
304
+ - "8161:8161" # Web Console
305
+ #- "5672:5672" # AMQP
306
+ #- "61616:61616" # OpenWire
307
+ #- "61613:61613" # STOMP
308
+
309
+ docker-compose -f community-compose.yaml up
310
+ ```
311
+
312
+ ## ๐Ÿš€ Usage
313
+
314
+ ### MCP Server Startup
315
+
316
+ **With UV (Recommended - Automatic venv and dependency management):**
317
+
318
+ ```bash
319
+ # Run MCP server with STDIO transport (default)
320
+ uv run python-alfresco-mcp-server
321
+
322
+ # HTTP transport for web services
323
+ uv run python-alfresco-mcp-server --transport http --host 127.0.0.1 --port 8001
324
+
325
+ # SSE transport for real-time streaming
326
+ uv run python-alfresco-mcp-server --transport sse --host 127.0.0.1 --port 8003
327
+ ```
328
+
329
+ **Traditional Python (after manual venv setup):**
330
+
331
+ ```bash
332
+ # Run MCP server with STDIO transport (default)
333
+ python-alfresco-mcp-server
334
+
335
+ # Or directly with module (also STDIO by default)
336
+ python -m alfresco_mcp_server.fastmcp_server
337
+
338
+ # HTTP transport for web services
339
+ python -m alfresco_mcp_server.fastmcp_server --transport http --host 127.0.0.1 --port 8001
340
+
341
+ # SSE transport for real-time streaming
342
+ python -m alfresco_mcp_server.fastmcp_server --transport sse --host 127.0.0.1 --port 8003
343
+ ```
344
+
345
+ ### MCP Client Setup
346
+
347
+ #### ๐Ÿค– **Claude Desktop** (Recommended)
348
+
349
+ Claude Desktop is the primary tested and recommended MCP client with native support for the Python Alfresco MCP Server.
350
+
351
+ ๐Ÿ“– **Complete Setup Guide**: **[Claude Desktop Setup Guide](./docs/claude_desktop_setup.md)**
352
+
353
+ **Quick Start:**
354
+
355
+ **For Users (PyPI Installation):**
356
+ - Install with `pipx install python-alfresco-mcp-server`
357
+ - Use configuration files: `claude-desktop-config-user-windows.json` or `claude-desktop-config-user-macos.json`
358
+
359
+ **For Developers (Source Installation):**
360
+ - Clone repository and use UV
361
+ - Use configuration files: `claude-desktop-config-developer-windows.json` or `claude-desktop-config-developer-macos.json`
362
+
363
+ **Using the Tools:**
364
+ - **Chat naturally** about what you want to do with documents
365
+ - Use **"Search and tools"** button in the chat box for tool access
366
+ - **4 individual search tools**:
367
+ - `search_content` (full text search)
368
+ - `advanced_search` (AFTS query language)
369
+ - `search_by_metadata` (property-based queries)
370
+ - `cmis_search` (CMIS SQL queries)
371
+ - Click **"+" โ†’ "Add from alfresco"** for quick access to resources
372
+
373
+ **Search and Analyze Prompt:**
374
+ - Provides a form with query field for full-text search
375
+ - Analysis types: **summary**, **detailed**, **trends**, or **compliance**
376
+ - **Generates template text** to copy/paste into chat for editing
377
+
378
+ **Repository Info Resource (and Tool):**
379
+ - Provides status information in text format for viewing or copying
380
+
381
+ **Testing & Examples:**
382
+ - See [`prompts-for-claude.md`](./prompts-for-claude.md) for 14 manual test scenarios and examples
383
+ - Automated versions of all scenarios available in integration test suite
384
+
385
+ #### ๐Ÿ”ง **Other MCP Clients**
386
+
387
+ For Cursor, Claude Code, and other MCP clients:
388
+
389
+ ๐Ÿ“– **Complete Setup Guide**: **[Client Configuration Guide](./docs/client_configurations.md)**
390
+
391
+ **Quick Reference:**
392
+ - **Cursor**: VS Code fork with AI and MCP support
393
+ - **Claude Code**: Anthropic's VS Code extension
394
+ - **Other Clients**: Generic MCP client configuration patterns
395
+
396
+ #### ๐Ÿ” **MCP Inspector** (Development/Testing)
397
+
398
+ > ๐Ÿ“– **Setup Guide**: Complete MCP Inspector setup and connection instructions in [MCP Inspector Setup Guide](./docs/mcp_inspector_setup.md)
399
+
400
+ **Working Method (Recommended):**
401
+
402
+ 1. **Start MCP Server with HTTP transport:**
403
+ ```bash
404
+ # With UV (recommended)
405
+ uv run python-alfresco-mcp-server --transport http --port 8003
406
+
407
+ # Or traditional method
408
+ python -m alfresco_mcp_server.fastmcp_server --transport http --port 8003
409
+ ```
410
+
411
+ 2. **Start MCP Inspector with config:**
412
+ ```bash
413
+ npx @modelcontextprotocol/inspector --config mcp-inspector-http-config.json --server python-alfresco-mcp-server
414
+ ```
415
+
416
+ 3. **Open browser with pre-filled token:**
417
+ - Use the URL provided in the output (includes authentication token)
418
+ - Example: `http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<token>`
419
+
420
+ This approach avoids proxy connection errors and provides direct authentication.
421
+
422
+
423
+
424
+ ๐Ÿ’ก **See [Examples Library](./examples/README.md) for usage patterns**
425
+
426
+ ## ๐Ÿ› ๏ธ Available Tools (15 Total)
427
+
428
+ ### ๐Ÿ” Search Tools (4)
429
+ | Tool | Description | Parameters |
430
+ |------|-------------|------------|
431
+ | `search_content` | Search documents and folders | `query` (str), `max_results` (int), `node_type` (str) |
432
+ | `advanced_search` | Advanced search with filters | `query` (str), `content_type` (str), `created_after` (str), etc. |
433
+ | `search_by_metadata` | Search by metadata properties | `property_name` (str), `property_value` (str), `comparison` (str) |
434
+ | `cmis_search` | CMIS SQL queries | `cmis_query` (str), `preset` (str), `max_results` (int) |
435
+
436
+ ### ๐Ÿ› ๏ธ Core Tools (11)
437
+ | Tool | Description | Parameters |
438
+ |------|-------------|------------|
439
+ | `browse_repository` | Browse repository folders | `node_id` (str) |
440
+ | `repository_info` | Get repository information | None |
441
+ | `upload_document` | Upload new document | `filename` (str), `content_base64` (str), `parent_id` (str), `description` (str) |
442
+ | `download_document` | Download document content | `node_id` (str), `save_to_disk` (bool) |
443
+ | `create_folder` | Create new folder | `folder_name` (str), `parent_id` (str), `description` (str) |
444
+ | `get_node_properties` | Get node metadata | `node_id` (str) |
445
+ | `update_node_properties` | Update node metadata | `node_id` (str), `name` (str), `title` (str), `description` (str), `author` (str) |
446
+ | `delete_node` | Delete document/folder | `node_id` (str), `permanent` (bool) |
447
+ | `checkout_document` | Check out for editing | `node_id` (str), `download_for_editing` (bool) |
448
+ | `checkin_document` | Check in after editing | `node_id` (str), `comment` (str), `major_version` (bool), `file_path` (str) |
449
+ | `cancel_checkout` | Cancel checkout/unlock | `node_id` (str) |
450
+
451
+ ๐Ÿ“– **See [API Reference](./docs/api_reference.md) for detailed tool documentation**
452
+
453
+ ## ๐Ÿ“Š Available Resources
454
+
455
+ ### Repository Information
456
+ | Resource | Description | Access Method |
457
+ |----------|-------------|---------------|
458
+ | `repository_info` | Get comprehensive repository information including version, edition, license details, installed modules, and system status | Available as both MCP resource and tool |
459
+
460
+ The `repository_info` resource provides:
461
+ - **Repository Details**: ID, edition (Community/Enterprise), version information
462
+ - **License Information**: Issued/expires dates, remaining days, license holder, entitlements
463
+ - **System Status**: Read-only mode, audit enabled, quick share, thumbnail generation
464
+ - **Installed Modules**: Up to 10 modules with ID, title, version, and installation state
465
+
466
+ ๐Ÿ“– **See [API Reference](./docs/api_reference.md) for detailed resource documentation**
467
+
468
+ ## ๐ŸŽฏ Available Prompts
469
+
470
+ ### Search and Analyze Prompt
471
+ | Prompt | Description | Parameters |
472
+ |--------|-------------|------------|
473
+ | `search_and_analyze` | Interactive form for guided content search and analysis | `query` (search terms), `analysis_type` (summary/detailed/trends/compliance) |
474
+
475
+ The Search and Analyze Prompt provides:
476
+ - **Interactive Form**: User-friendly interface with query input field
477
+ - **Analysis Options**: Choose from summary, detailed analysis, trends, or compliance reporting
478
+ - **Template Generation**: Creates copyable template text for chat conversations
479
+ - **Query Assistance**: Helps users structure effective search queries
480
+ - **Multiple Search Types**: Integrates with all 4 search tools (content, advanced, metadata, CMIS)
481
+
482
+ ๐Ÿ“– **See [API Reference](./docs/api_reference.md) for detailed prompt documentation**
483
+
484
+ ## ๐Ÿ”ง Configuration Options
485
+
486
+ | Environment Variable | Default | Description |
487
+ |---------------------|---------|-------------|
488
+ | `ALFRESCO_URL` | `http://localhost:8080` | Alfresco server URL |
489
+ | `ALFRESCO_USERNAME` | `admin` | Username for authentication |
490
+ | `ALFRESCO_PASSWORD` | `admin` | Password for authentication |
491
+ | `ALFRESCO_VERIFY_SSL` | `false` | Verify SSL certificates |
492
+ | `ALFRESCO_TIMEOUT` | `30` | Request timeout (seconds) |
493
+ | `FASTAPI_HOST` | `localhost` | FastAPI host |
494
+ | `FASTAPI_PORT` | `8000` | FastAPI port |
495
+ | `LOG_LEVEL` | `INFO` | Logging level |
496
+ | `MAX_FILE_SIZE` | `100000000` | Max upload size (bytes) |
497
+
498
+ โš™๏ธ **See [Configuration Guide](./docs/configuration_guide.md) for deployment options**
499
+
500
+ ## ๐Ÿ—๏ธ Architecture
501
+
502
+ ```
503
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
504
+ โ”‚ MCP Clients โ”‚
505
+ โ”‚ Claude Desktop โ”‚ MCP Inspector โ”‚ Cursor โ”‚ Claude โ”‚
506
+ โ”‚ Code โ”‚ n8n โ”‚ LangFlow โ”‚ Custom MCP Client App โ”‚
507
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
508
+ โ”‚ stdio/HTTP/SSE
509
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
510
+ โ”‚ FastMCP 2.0 MCP Server โ”‚
511
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
512
+ โ”‚ โ”‚ MCP Tools โ”‚ MCP โ”‚ HTTP/SSE API โ”‚ โ”‚
513
+ โ”‚ โ”‚ (15 total) โ”‚ Resources โ”‚ โ”‚ โ”‚
514
+ โ”‚ โ”‚ โ”‚ MCP Prompts โ”‚ โ”‚ โ”‚
515
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
516
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
517
+ โ”‚ python-alfresco-api
518
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
519
+ โ”‚ Alfresco Content Services โ”‚
520
+ โ”‚ (Community/Enterprise Edition) โ”‚
521
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
522
+ ```
523
+
524
+ ## ๐Ÿงช Testing & Quality
525
+
526
+ ### Test Suite Overview
527
+ - **143 Total Tests**: **100% passed** - Coverage of all functionality
528
+ - **122 Unit Tests**: **100% passed** - Core functionality validated with mocking (FastMCP 2.0, tools, coverage)
529
+ - **21 Integration Tests**: **100% passed** - Live server testing (search, upload, download, document lifecycle)
530
+ - **Integration Tests**: Automated end-to-end testing covering all 14 manual scenarios from prompts-for-claude.md
531
+ - **Performance Validated**: Search <1s, concurrent operations, resource access
532
+
533
+ ### Coverage Report (Post-Cleanup)
534
+ - **Overall Coverage**: 51% (1,829 statements tested)
535
+ - **FastMCP 2.0 Core**: Well tested with comprehensive unit coverage
536
+ - **Configuration Module**: 93% coverage - Fully tested
537
+ - **Package Initialization**: 100% coverage (5/5 lines) - Complete
538
+ - **Overall Project**: 51% coverage of comprehensive codebase
539
+
540
+ ### Run Tests
541
+
542
+ ```bash
543
+ # Run full test suite
544
+ pytest
545
+
546
+ # Run with coverage report
547
+ pytest --cov=alfresco_mcp_server --cov-report=term-missing
548
+
549
+ # Run specific test categories
550
+ pytest -m "unit" # Unit tests only
551
+ pytest -m "fastmcp" # FastMCP 2.0 tests
552
+ pytest -m "integration" # Integration tests (requires Alfresco)
553
+ ```
554
+
555
+ ๐Ÿงช **See [Testing Guide](./docs/testing_guide.md) for detailed testing strategies**
556
+
557
+ ### ๐Ÿงช Test Categories and Execution
558
+
559
+ The project includes **4 levels of testing**:
560
+
561
+ 1. **๐Ÿ“‹ Unit Tests** (122 tests) - Fast, mocked, isolated component testing
562
+ 2. **๐Ÿ”— Integration Tests** (21 tests) - Live Alfresco server testing
563
+ 3. **๐Ÿ“ Comprehensive Tests** - Automated prompts-for-claude.md scenarios
564
+ 4. **๐Ÿ“Š Coverage Tests** - Edge cases and error path coverage
565
+
566
+ **New Integration Tests:**
567
+ - **Automated Manual Scenarios**: All manual test scenarios from `prompts-for-claude.md` now available as automated tests
568
+
569
+ ## ๐Ÿงช Development
570
+
571
+ ### Setup Development Environment
572
+
573
+ ```bash
574
+ git clone <repository>
575
+ cd python-alfresco-mcp-server
576
+
577
+ # Create virtual environment
578
+ python -m venv venv
579
+ source venv/bin/activate # or venv\Scripts\activate on Windows
580
+
581
+ # Install development dependencies
582
+ pip install -e .[dev]
583
+
584
+ # Install python-alfresco-api (local development)
585
+ pip install -e ../python-alfresco-api
586
+ ```
587
+
588
+ ## ๐Ÿ’ก Examples
589
+
590
+ ### Real-world implementation patterns from beginner to enterprise:
591
+
592
+ - **[๐Ÿ’ก Examples Library](./examples/README.md)** - Complete navigation and learning paths
593
+ - **[๐Ÿƒ Quick Start](./examples/quick_start.py)** - 5-minute introduction and basic operations
594
+ - **[๐Ÿ“‹ Document Lifecycle](./examples/document_lifecycle.py)** - Complete process demonstration
595
+ - **[๐Ÿš€ Transport Examples](./examples/transport_examples.py)** - STDIO, HTTP, and SSE protocols
596
+ - **[โšก Batch Operations](./examples/batch_operations.py)** - High-performance bulk processing
597
+ - **[๐Ÿ›ก๏ธ Error Handling](./examples/error_handling.py)** - Resilience patterns
598
+ - **[๐Ÿ“Š Examples Summary](./examples/examples_summary.md)** - Overview and statistics
599
+
600
+ ## ๐Ÿค Contributing
601
+
602
+ 1. Fork the repository
603
+ 2. Create a feature branch (`git checkout -b feature/new-feature`)
604
+ 3. Commit your changes (`git commit -m 'Add new feature'`)
605
+ 4. Push to the branch (`git push origin feature/new-feature`)
606
+ 5. Open a Pull Request
607
+
608
+ ## ๐Ÿ“„ License
609
+
610
+ This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.
611
+
612
+ ## ๐Ÿ”— Related Projects and References
613
+
614
+ - **[Hyland Alfresco](https://www.hyland.com/en/solutions/products/alfresco-platform)** - Content management platform (Enterprise and Community editions)
615
+ - **[python-alfresco-api](https://github.com/stevereiner/python-alfresco-api)** - The underlying Alfresco API library
616
+ - **[FastMCP 2.0](https://github.com/paulinephelan/FastMCP)** - Modern framework for building MCP servers
617
+ - **[Model Context Protocol](https://modelcontextprotocol.io)** - Official MCP specification and documentation
618
+ - **[MCP Server Directory](https://playbooks.com/mcp)** - Comprehensive directory of 5,000+ MCP servers for AI agents
619
+
620
+ ## ๐Ÿ™‹โ€โ™‚๏ธ Support
621
+
622
+ - ๐Ÿ“š **Documentation**: Complete guides in [`./docs/`](./docs/README.md)
623
+ - ๐Ÿ’ก **Examples**: Implementation patterns in [`./examples/`](./examples/README.md)
624
+ - ๐Ÿงช **Testing**: Quality assurance in [`./docs/testing_guide.md`](./docs/testing_guide.md)
625
+ - ๐Ÿ” **MCP Inspector**: Development testing in [`./docs/mcp_inspector_setup.md`](./docs/mcp_inspector_setup.md)
626
+ - ๐Ÿ› ๏ธ **Troubleshooting**: Problem solving in [`./docs/troubleshooting.md`](./docs/troubleshooting.md)
627
+ - ๐Ÿ› **Issues**: [GitHub Issues](https://github.com/stevereiner/python-alfresco-mcp-server/issues)
628
+
629
+ ---
630
+
631
+ **๐Ÿš€ MCP server built with [python-alfresco-api](https://github.com/stevereiner/python-alfresco-api) and [FastMCP 2.0](https://github.com/paulinephelan/FastMCP)**
@@ -0,0 +1,34 @@
1
+ alfresco_mcp_server/__init__.py,sha256=C106Z3N9UaulxiejuPLZKrY9rYhVeSYQg9SJx2LIS2Y,639
2
+ alfresco_mcp_server/config.py,sha256=HrBWqx_a-udy425-bF2T28hR7GATuszTKtJ8CeVWgbI,3171
3
+ alfresco_mcp_server/fastmcp_server.py,sha256=N3j4ZtR_JG7G9V67slWSmwh0-0ZxQYpWi3khNQSaLP8,8684
4
+ alfresco_mcp_server/prompts/__init__.py,sha256=CNYbqoEhy56Xw1yuTph1zkWn5IDfMp4IjDvQ0NLyic4,98
5
+ alfresco_mcp_server/prompts/search_and_analyze.py,sha256=A4F2WreZlyr349mZmdk9Jeb_lFmdLoII1JEcftEcEDM,1948
6
+ alfresco_mcp_server/resources/__init__.py,sha256=zCbJ254ZbKY05FYB-XklkHIiugiNZ4RUiss60cHPoYA,104
7
+ alfresco_mcp_server/resources/repository_resources.py,sha256=Vy5gbGZZAmkmBcHdSUV96VkwxAQ1aGgb8uBS0EVbLFo,10499
8
+ alfresco_mcp_server/tools/__init__.py,sha256=nwtGfSYg6kMNV0zgatIS8bdQTE3T0uuPxAtTTQk4Zl0,221
9
+ alfresco_mcp_server/tools/core/__init__.py,sha256=EFU36odCmCB2RnXiz8v-hAswH_wtuJAm84wknpuvKak,545
10
+ alfresco_mcp_server/tools/core/browse_repository.py,sha256=FPKAlOh4SRy1-CJ3Ij4uD1jsdyBLTeOA7oBqM8q5IRI,7133
11
+ alfresco_mcp_server/tools/core/cancel_checkout.py,sha256=eG5aNSkwqm4sOfpMw8B8ZiLQAiRZ2i-1-btx_SdswfU,6696
12
+ alfresco_mcp_server/tools/core/checkin_document.py,sha256=SQImaZivOYLLunEBVloiKtmBjMg9q18168-4QQF3AQc,12780
13
+ alfresco_mcp_server/tools/core/checkout_document.py,sha256=52BQmcRjafzCzZ6OQH8n1jqRD_3wNVhfltHINKNATfM,12792
14
+ alfresco_mcp_server/tools/core/create_folder.py,sha256=Rp58_2VqD-jzfFsbayABQSviedLsCdo-6PcStaEb5Dk,3833
15
+ alfresco_mcp_server/tools/core/delete_node.py,sha256=eozN5rXtGfvxoXswg6LqKUokETLp1IglRoHBQ3qdRK8,3169
16
+ alfresco_mcp_server/tools/core/download_document.py,sha256=4diR4vW7qxkNzXC6ZsA7UbCm3HQj2gJxZ1F_FMtUJHc,9753
17
+ alfresco_mcp_server/tools/core/get_node_properties.py,sha256=UeF00qPDgkBemXusB4f39O4H04aMjsuOx-FqAgvAUyU,9561
18
+ alfresco_mcp_server/tools/core/update_node_properties.py,sha256=5hFyZpTDPXPuD139M7TFGgYuppASrVf_hdEaT04ZOJQ,4979
19
+ alfresco_mcp_server/tools/core/upload_document.py,sha256=L51dbIix8iYlpBYPe2pl5E-pz_IsAKaNrM4UyYTPvSk,9621
20
+ alfresco_mcp_server/tools/search/__init__.py,sha256=0X8srkfnrJZBdyEUgSUyCNOxexcn6GEwx_aRHkDPYL0,243
21
+ alfresco_mcp_server/tools/search/advanced_search.py,sha256=xkBEzm0y0c6WmpR8GrEWHQ-0WzHyxrjOz4gHIbFOxtg,9676
22
+ alfresco_mcp_server/tools/search/cmis_search.py,sha256=MwjZt28T1EKehkXLVYOJ5QXU84hC43m-HAFZq64xtyQ,7854
23
+ alfresco_mcp_server/tools/search/search_by_metadata.py,sha256=bHksTkn1_tAK0twpdduKFQP5rwrTgnY4W_huU6MT4rg,7819
24
+ alfresco_mcp_server/tools/search/search_content.py,sha256=k7joLySkt510bhDislZPVvdIGJpjmF-xgEWXfU7XBg0,8137
25
+ alfresco_mcp_server/utils/__init__.py,sha256=eCguQDd-PwnPMCdB-GPqv7cthaw8Jqow4P_he7Tf_bY,730
26
+ alfresco_mcp_server/utils/connection.py,sha256=_Q2sX05qbHoUoLLHkHEyw0rB9VKq4gr9SNcRutuHN18,4032
27
+ alfresco_mcp_server/utils/file_type_analysis.py,sha256=X4HvP5mgO4zAtRwi3ZhJKiTUqTuWnlQ92T5vZHDEDbI,6787
28
+ alfresco_mcp_server/utils/json_utils.py,sha256=8EyZjtC3-aanLb1SMm_HU9z8HSA-GKTth4vw9Sv1B3g,4245
29
+ python_alfresco_mcp_server-1.1.0.dist-info/licenses/LICENSE,sha256=F96EzotgWhhpnQTW2TcdoqrMDir1jyEo6H915tGQ-QE,11524
30
+ python_alfresco_mcp_server-1.1.0.dist-info/METADATA,sha256=dfOPL91C-QczMalNvYieO1zG-hOuZqG4Ky2APvX_Uz4,28455
31
+ python_alfresco_mcp_server-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
32
+ python_alfresco_mcp_server-1.1.0.dist-info/entry_points.txt,sha256=mLbsqzGceUhk-6JYnqy3pQOr22d1YBZckDiawcEsCU0,87
33
+ python_alfresco_mcp_server-1.1.0.dist-info/top_level.txt,sha256=0UDTQHV2YeiAfyiIgGIfYLzvjpbXq3vg40HJIIjIeEU,20
34
+ python_alfresco_mcp_server-1.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ python-alfresco-mcp-server = alfresco_mcp_server.fastmcp_server:main