A Python-based MCP server for MarkLogic database operations
Project description
MarkLogic MCP Server
A Python-based MCP (Model-Controller-Processor) server for MarkLogic database operations. This server provides CRUD operations and search functionality for MarkLogic documents through a standardized interface using the MarkLogic REST API.
Features
- Document CRUD operations (Create, Read, Update, Delete)
- Document search with string and structured queries
- Collection management
- Database information retrieval
- TOML-based configuration
- Comprehensive logging
- Full REST API support
Prerequisites
- Python 3.7+
- MarkLogic Server (installed and running)
- Access to a MarkLogic database with appropriate permissions
- REST API instance configured on MarkLogic server
Installation
- Clone the repository:
git clone https://github.com/yourusername/marklogic-mcp.git
cd marklogic-mcp
- Install dependencies:
pip install -r requirements.txt
- Configure your server:
cp pyproject.toml.example pyproject.toml
Edit the pyproject.toml file with your MarkLogic connection details:
[tool.marklogic]
host = "localhost"
port = 8000
user = "your-username"
password = "your-password"
[tool.marklogic.logging]
level = "INFO"
format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
Usage
- Start the MCP server:
python marklogic_mcp_server.py
- The server provides the following operations:
Create Document
create_document(uri: str, content: dict, collections: list = None)
Read Document
read_document(uri: str)
Update Document
update_document(uri: str, content: dict, collections: list = None)
Delete Document
delete_document(uri: str)
Search Documents
search_documents(
query: str = None, # String query (e.g., "marklogic and python")
structured_query: dict = None, # Structured query in JSON format
start: int = 1, # Starting position
page_length: int = 10 # Number of results per page
)
Get Database Information
get_database_info()
Example Usage
# Create a document
response = create_document(
uri="/documents/example.json",
content={"title": "Example", "content": "This is a test"},
collections=["test-collection"]
)
# Search using string query
response = search_documents(
query="marklogic and python",
start=1,
page_length=10
)
# Search using structured query
response = search_documents(
structured_query={
"query": {
"term-query": {
"text": ["marklogic"]
}
}
},
start=1,
page_length=10
)
Configuration
The server is configured using pyproject.toml. Here are the available configuration options:
[tool.marklogic]
host = "localhost" # MarkLogic server host
port = 8000 # MarkLogic server port
user = "admin" # MarkLogic username
password = "admin" # MarkLogic password
[tool.marklogic.logging]
level = "INFO" # Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" # Log format
Response Format
All operations return a dictionary with a status field indicating success or failure:
# Success response
{
"status": "success",
"message": "Operation result message",
"content": "Document content (for read operations)",
"total": "Total results (for search operations)",
"results": "Search results array",
"facets": "Search facets (if available)"
}
# Error response
{
"status": "error",
"message": "Error message"
}
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file marklogic_mcp-0.1.0.tar.gz.
File metadata
- Download URL: marklogic_mcp-0.1.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f8b0d7428f94d053bd1c8787282952ecb9802f724fbd4f8dec61b16d18f9a21
|
|
| MD5 |
98e5976738bedad88d61d7891b859b3c
|
|
| BLAKE2b-256 |
6a054e4ec0da6432e6647b41658071ba5f1e0cd50dcc66e70ab5b8ad309c629c
|
File details
Details for the file marklogic_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: marklogic_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
011ca6f0d9e3662b72d7d33eacda8b0c7dd6c91e7eb9e3514114c6d859cc9ec1
|
|
| MD5 |
feea3653e73049eb6a9a67c2c7fbf9b0
|
|
| BLAKE2b-256 |
f438e379701a00dfb5cdbe0637f8a275af873296dacb649bf4849a5fbf2f9d9e
|