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.

D
Caution
58/100

marklogic-mcp

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

Code Verified⚡ Live Monitored: not connected

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

Is this your MCP?

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.

// key findings
🚨
Secret credentials may flow to a network call
2 flows detected: ML_PASSWORD. We can’t prove the destination matches the brand the credential belongs to.
🚨
Known vulnerabilities in dependencies: 1 critical, 10 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 4 credentials: MCP_API_KEY, ML_OAUTH_TOKEN, ML_PASSWORD, SEMAPHORE_PASSWORD
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes103 tools · 17 behind config

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_list

List 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_properties

Get detailed configuration properties of a MarkLogic database (indexes, merge policy, etc.).

ml_database_statistics
ml_forests_list

List 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_list

List 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_properties

Get configuration properties of a specific MarkLogic App Server.

ml_cluster_status
ml_logs_list

List 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_read

Read 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_status

Check 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_query
ml_query_recipe
dhf_status
dhf_flows_list
dhf_job_status
ml_document_get

Retrieve a document from MarkLogic by URI. Returns content and optionally metadata (collections, permissions).

ml_document_sample

Fetch 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_list

List document URIs in a MarkLogic collection or directory.

ml_eval_xquery
ml_eval_javascript

Execute 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_sparql
ml_invoke_module
ml_extension_list
ml_extension_get
ml_extension_call
ml_search_options_list
ml_search_options_get
flux_import
ml_sparql_query
ml_graphs_list
ml_graph_put
ml_optic_query
ml_vector_search
ml_views_list
ml_explain_optic
ml_search_query_plan
ml_forest_metrics
ml_aggregate_query
ml_timeseries_query
ml_export_tabular

Export MarkLogic search results as tabular data (JSON rows or CSV) for direct ingestion into AWS QuickSight SPICE datasets.

ml_facets_query
ml_schema_discover

Infer the document schema/structure of a MarkLogic collection by sampling documents. Returns field names, types, cardinality, and example values.

ml_schema_get_tde

Retrieve 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_validate

Verify 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_list
ml_search_surface
ml_collections_list

List document collections in MarkLogic with their document counts.

ml_tde_install
ml_namespaces_list

List registered XML namespaces in a MarkLogic database. Essential for writing XQuery against XML documents.

ml_search
ml_search_qbe

Query By Example — find MarkLogic documents that match an example document structure.

ml_values_query
ml_geospatial_search
ml_parse_query
ml_suggest

Get search query autocomplete suggestions from MarkLogic based on a partial query string.

ml_users_list
ml_roles_list
ml_document_permissions
semaphore_status
semaphore_studio_status
semaphore_publish_sets
semaphore_classes
semaphore_cls_languages
semaphore_kmm_models_list
semaphore_task_list
semaphore_task_create
semaphore_task_commit
semaphore_kmm_model_create
semaphore_kmm_skos_load
semaphore_kmm_sparql
semaphore_kmm_sparql_update
semaphore_publish
semaphore_publish_config_fix_plain_skos
semaphore_classify
semaphore_classify_batch
semaphore_publish_diagnose
semaphore_kmm_model_delete
semaphore_concept_search
semaphore_concept_get
semaphore_concept_labels_update
semaphore_taxonomy_validate
semaphore_kid_template_get
semaphore_kid_template_set
ml_database_set_forestsbehind config

Set 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 config
dhf_flow_run_jarbehind config
ml_document_putbehind config

Create 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 config

Delete a document from MarkLogic by URI. Requires ML_READONLY=false.

ml_document_patchbehind config

Partially update a document using MarkLogic's patch descriptor. Requires ML_READONLY=false.

ml_document_patch_batchbehind config
ml_extension_putbehind config
ml_extension_deletebehind config
ml_search_options_putbehind config
ml_search_options_deletebehind config
flux_exportbehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

flux_copybehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

flux_reprocessbehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

flux_previewbehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

flux_helpbehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

flux_statusbehind config

Flux tool — not available in ML_AUTH_TYPE=oauth mode.

3 further tools are not listed here. The complete surface is in the source.

// known CVEs in dependencies1 critical10 high6 medium12 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

criticalvitest@3.2.4GHSA-5xrq-8626-4rwp

When Vitest UI server is listening, arbitrary file can be read and executed

highaxios@1.13.6GHSA-35jp-ww65-95wh

axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`

highaxios@1.13.6GHSA-3g43-6gmg-66jw

axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge

highaxios@1.13.6GHSA-6chq-wfr3-2hj9

Axios: Header Injection via Prototype Pollution

highaxios@1.13.6GHSA-777c-7fjr-54vf

Allocation of Resources Without Limits or Throttling in Axios

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configAWS_QUICKSIGHT_ACCOUNT_IDQuickSight account ID
configAWS_REGIONAWS region for QuickSight integration
configBUILD_TIME
configFLUX_RUNNER_URLThen add -e =http://localhost:8080 to the server's environment. Paths you pass
configGIT_COMMIT
configLOG_FORMATjson or pretty
configLOG_LEVELdebug, info, warn, error
🔐 secretMCP_API_KEYcontainer, port, MCP_API_KEY, network reachability
configMCP_CORS_ORIGINRestrict CORS to a single origin
configMCP_HTTP_HOSTBind address for HTTP transport
configMCP_HTTP_PORTHTTP transport port
configMCP_TRANSPORTstdio (agent launches the process) or http (listens on a port)
configMCP_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.
configML_ALLOW_EVALRead-only by default — writes gated behind ML_READONLY=false, eval gated behind =true
configML_AUTH_TYPEYou need per-user MarkLogic RBAC. =oauth forwards each client's own bearer
configML_DATABASEDefault database for tools that don't name one
configML_DHF_CLIENT_JARAbsolute path to marklogic-data-hub-<version>-client.jar
configML_DHF_JOBS_PORTDHF jobs app server port
configML_DHF_PORTDHF staging app server port
configML_HOSTMarkLogic hostname or IP
configML_MANAGEMENT_PORTManagement API port (admin, forests, indexes)
🔐 secretML_OAUTH_TOKENStatic Bearer token; required in stdio mode when ML_AUTH_TYPE=oauth
🔐 secretML_PASSWORDML_USERNAME and are required (except in oauth mode). Everything else has a
configML_PORTREST API port
configML_READONLYRead-only by default — writes gated behind =false, eval gated behind ML_ALLOW_EVAL=true
configML_SSLConnect to MarkLogic over HTTPS
configML_SSL_REJECT_UNAUTHORIZEDReject self-signed certificates (false for dev environments)
configML_TIMEOUT_MSHTTP request timeout for MarkLogic calls (milliseconds)
configML_USERNAMEand ML_PASSWORD are required (except in oauth mode). Everything else has a
configSEMAPHORE_HOSTSemaphore hostname — setting it enables the CLS + KMM tools
configSEMAPHORE_KMM_PORTStudio / KMM port
🔐 secretSEMAPHORE_PASSWORDKMM password
configSEMAPHORE_SCS_PORTClassification Server port
configSEMAPHORE_SSL
configSEMAPHORE_TIMEOUT_MS
configSEMAPHORE_URLExplicit CLS URL override (takes precedence over host:port)
configSEMAPHORE_USERNAMEKMM username
// quality suggestions

Tool 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.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 4 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/tternquist/marklogic-mcp?variant=verified)](https://m8ven.ai/mcp/tternquist/marklogic-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 64a58aec3159724ada6686116f8374dc81f7c573
code hash: d204fc77a253919e8707bb43ffcbec3b50679f483b53c4881b9d04587bcd3d8f
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

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
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client