marklogic-mcp (tternquist/marklogic-mcp) is an MCP server listed on the M8ven Trust Index. It scores 58 out of 100, grade D. It declares 83 tools. No publisher has claimed this listing.
An MCP server for MarkLogic 12 that enables AI agents to interrogate, query, and manage MarkLogic databases using native capabilities including full-text search, Optic queries, SPARQL, bulk import/export, and TDE schema management.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
tternquist
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
ml_databases_listList all databases in the MarkLogic cluster. RUN THIS FIRST when starting work on a MarkLogic project. Every MarkLogic application creates its own content database (e.g. 'myapp-content') alongside dedicated Schemas, Modules, and Triggers databases. The built-in 'Documents' database is for ad-hoc sa…
ml_database_propertiesGet detailed configuration properties of a MarkLogic database (indexes, merge policy, etc.).
ml_database_statisticsml_forests_listList forests attached to the MarkLogic cluster or a specific database. Set include_details=true to also return each forest's host assignment, state (open/unmounted/sync-replicating), and attached database — useful for diagnosing forest hangs where offline hosts are blocking a database.
ml_servers_listList App Servers (HTTP, XDBC, WebDAV, ODBC) in a MarkLogic group. Projects create their own HTTP app server (with a dedicated content database and port) — run this alongside ml_databases_list to understand a project's topology before targeting queries.
ml_server_propertiesGet configuration properties of a specific MarkLogic App Server.
ml_cluster_statusml_logs_listList available MarkLogic log files (ErrorLog.txt, AccessLog.txt, port-specific logs like 8002_AccessLog.txt, etc.). Use this to discover which log files exist before calling ml_logs_read.
ml_logs_readRead a MarkLogic server log file via the Management API. Use ml_logs_list first to discover available filenames. Key files: ErrorLog.txt (server errors), 8002_AccessLog.txt (Management API), 8000_AccessLog.txt (App-Services), 8020_AccessLog.txt (DHF Staging), 8021_AccessLog.txt (DHF Final). Supports…
ml_reindex_statusCheck whether a MarkLogic database has finished reindexing after a TDE template was installed or an index configuration was changed. Returns ready=true when it is safe to query TDE views with ml_optic_query or run ml_tde_validate. Use this after flux_import with generate_tde=true to avoid SQL-TABLER…
ml_answer_queryml_query_recipedhf_statusdhf_flows_listdhf_job_statusml_document_getRetrieve a document from MarkLogic by URI. Returns content and optionally metadata (collections, permissions).
ml_document_sampleFetch a small sample of documents from a MarkLogic collection and show their content and structure. Use this to understand document shape before writing TDE templates, Optic queries, or eval scripts — it saves multiple round-trips compared to listing URIs then fetching individually. Returns up to 5…
ml_document_listList document URIs in a MarkLogic collection or directory.
ml_eval_xqueryml_eval_javascriptExecute Server-Side JavaScript (SJS) on the MarkLogic server and return results. Requires ML_ALLOW_EVAL=true. NOT recommended for bulk data import, URL ingestion, or loading more than ~5 documents at once — use flux_import instead, which handles HTTP fetch, format parsing, batching, and optional TD…
ml_sparqlml_invoke_moduleml_extension_listml_extension_getml_extension_callml_search_options_listml_search_options_getflux_importml_sparql_queryml_graphs_listml_graph_putml_optic_queryml_vector_searchml_views_listml_explain_opticml_search_query_planml_forest_metricsml_aggregate_queryml_timeseries_queryml_export_tabularExport MarkLogic search results as tabular data (JSON rows or CSV) for direct ingestion into AWS QuickSight SPICE datasets.
ml_facets_queryml_schema_discoverInfer the document schema/structure of a MarkLogic collection by sampling documents. Returns field names, types, cardinality, and example values.
ml_schema_get_tdeRetrieve Template Driven Extraction (TDE) schemas registered in the MarkLogic Schemas database. TDE schemas define row views over document data. Pass schema_name as the full URI (e.g. /tde/gdelt/events.json) to retrieve the template content; omit it to list all TDE URIs.
ml_tde_validateVerify a TDE template is working by querying its Optic row view and returning sample rows. Reports row count vs document count, surfaces SQL-TABLENOTFOUND and TABLEREINDEXING errors, and shows sample rows so you can confirm the right data is being extracted. Uses Optic row queries for validation. P…
ml_indexes_listml_search_surfaceml_collections_listList document collections in MarkLogic with their document counts.
ml_tde_installml_namespaces_listList registered XML namespaces in a MarkLogic database. Essential for writing XQuery against XML documents.
ml_searchml_search_qbeQuery By Example — find MarkLogic documents that match an example document structure.
ml_values_queryml_geospatial_searchml_parse_queryml_suggestGet search query autocomplete suggestions from MarkLogic based on a partial query string.
ml_users_listml_roles_listml_document_permissionssemaphore_statussemaphore_studio_statussemaphore_publish_setssemaphore_classessemaphore_cls_languagessemaphore_kmm_models_listsemaphore_task_listsemaphore_task_createsemaphore_task_commitsemaphore_kmm_model_createsemaphore_kmm_skos_loadsemaphore_kmm_sparqlsemaphore_kmm_sparql_updatesemaphore_publishsemaphore_publish_config_fix_plain_skossemaphore_classifysemaphore_classify_batchsemaphore_publish_diagnosesemaphore_kmm_model_deletesemaphore_concept_searchsemaphore_concept_getsemaphore_concept_labels_updatesemaphore_taxonomy_validatesemaphore_kid_template_getsemaphore_kid_template_setml_database_set_forestsbehind configSet the list of forests attached to a MarkLogic database. Use this to restrict a database to only forests on available hosts when cluster nodes are offline — the primary fix for the forest-hang pattern where HTTP connections are accepted but never respond. Pass only the names of forests on running h…
dhf_flow_runbehind configdhf_flow_run_jarbehind configml_document_putbehind configCreate or replace a document in MarkLogic at a specific URI. Requires ML_READONLY=false. CAP ABILITIES: single-document-write, tde-template-install, module-install Best for: installing TDE templates, SJS/XQuery modules, config files, or inserting a small number of individual documents (<10). NOT i…
ml_document_deletebehind configDelete a document from MarkLogic by URI. Requires ML_READONLY=false.
ml_document_patchbehind configPartially update a document using MarkLogic's patch descriptor. Requires ML_READONLY=false.
ml_document_patch_batchbehind configml_extension_putbehind configml_extension_deletebehind configml_search_options_putbehind configml_search_options_deletebehind configflux_exportbehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
flux_copybehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
flux_reprocessbehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
flux_previewbehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
flux_helpbehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
flux_statusbehind configFlux tool — not available in ML_AUTH_TYPE=oauth mode.
3 further tools are not listed here. The complete surface is in the source.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
When Vitest UI server is listening, arbitrary file can be read and executed
axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
Axios: Header Injection via Prototype Pollution
Allocation of Resources Without Limits or Throttling in Axios
AWS_QUICKSIGHT_ACCOUNT_IDQuickSight account IDAWS_REGIONAWS region for QuickSight integrationBUILD_TIMEFLUX_RUNNER_URLThen add -e =http://localhost:8080 to the server's environment. Paths you passGIT_COMMITLOG_FORMATjson or prettyLOG_LEVELdebug, info, warn, errorMCP_API_KEYcontainer, port, MCP_API_KEY, network reachabilityMCP_CORS_ORIGINRestrict CORS to a single originMCP_HTTP_HOSTBind address for HTTP transportMCP_HTTP_PORTHTTP transport portMCP_TRANSPORTstdio (agent launches the process) or http (listens on a port)MCP_TRUST_PROXYExpress trust proxy setting — set when behind a reverse proxy (nginx, ALB, ingress). Use 1 for a single proxy, a number of hops, an IP/subnet list (e.g. 10.0.0.0/8), or loopback. Avoid true (spoofable). Required to silence ERR_ERL_UNEXPECTED_X_FORWARDED_FOR from express-rate-limit.ML_ALLOW_EVALRead-only by default — writes gated behind ML_READONLY=false, eval gated behind =trueML_AUTH_TYPEYou need per-user MarkLogic RBAC. =oauth forwards each client's own bearerML_DATABASEDefault database for tools that don't name oneML_DHF_CLIENT_JARAbsolute path to marklogic-data-hub-<version>-client.jarML_DHF_JOBS_PORTDHF jobs app server portML_DHF_PORTDHF staging app server portML_HOSTMarkLogic hostname or IPML_MANAGEMENT_PORTManagement API port (admin, forests, indexes)ML_OAUTH_TOKENStatic Bearer token; required in stdio mode when ML_AUTH_TYPE=oauthML_PASSWORDML_USERNAME and are required (except in oauth mode). Everything else has aML_PORTREST API portML_READONLYRead-only by default — writes gated behind =false, eval gated behind ML_ALLOW_EVAL=trueML_SSLConnect to MarkLogic over HTTPSML_SSL_REJECT_UNAUTHORIZEDReject self-signed certificates (false for dev environments)ML_TIMEOUT_MSHTTP request timeout for MarkLogic calls (milliseconds)ML_USERNAMEand ML_PASSWORD are required (except in oauth mode). Everything else has aSEMAPHORE_HOSTSemaphore hostname — setting it enables the CLS + KMM toolsSEMAPHORE_KMM_PORTStudio / KMM portSEMAPHORE_PASSWORDKMM passwordSEMAPHORE_SCS_PORTClassification Server portSEMAPHORE_SSLSEMAPHORE_TIMEOUT_MSSEMAPHORE_URLExplicit CLS URL override (takes precedence over host:port)SEMAPHORE_USERNAMEKMM usernameTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
103/103 tools missing one or more hints — ml_databases_list (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); ml_database_properties (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); ml_database_statistics (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +100 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Production dependencies are patched
0 critical, 10 high severity in production deps — axios@1.13.6 (high), axios@1.13.6 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Dev dependencies
1 critical/high in dev-only deps (does not ship to users)
Upgrade dev dependencies when convenient.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/tternquist/marklogic-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check