@lazyants/transkribus-mcp-server
npm
v3.1.0
Source verified
Published by lazyants — publish provenance cryptographically ties this package to that repository. That is proof of origin, not an official vendor package.
MCP server for the Transkribus REST API — manage collections, documents, recognition, models, and more. 300 tools across 22 resource domains.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 6 = 94. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
This server (without client built-ins) exposes a complete data-exfiltration chain: transkribus_doc_get_page_ids → transkribus_file_list_files ⇒ transkribus_crowd_post_message. Untrusted input is ingested, private data is read, and it can be sent to an external sink — and at least one leg is a direct schema wire (⇒), where a producer's output drops straight into a free-text parameter of the next tool, so the chain needs little agent cooperation. Static analysis proves the primitive exists, not that a specific run will occur.
Fix: Remove one leg of the trifecta: isolate untrusted-input tools from secret-reading tools and from egress tools, or require human approval between them.
Location: flow transkribus_doc_get_page_ids → transkribus_file_list_files → transkribus_crowd_post_message
Tool "transkribus_file_list_files" takes a path parameter "path" with no constraint. Without a canonicalize-and-contain check (not visible statically), this permits ../ traversal outside the intended root.
Fix: Resolve and verify the path stays within an allowed root; reject traversal sequences.
Location: tool transkribus_file_list_files · inputSchema.properties.path
In a packaging/dev/install script (shipped, but not the server runtime) (`dist/tests/resources-packaging.test.js:2`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: { execSync } from 'node:child_process'; import { existsSync, readFileSync, rmSync } from 'node:fs'; import { dirname, re
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server dist/tests/resources-packaging.test.js
Each tool and what it can reach — statically extracted from the published source.
transkribus_crowd_post_messagenetwork egresstranskribus_doc_get_page_idsingests untrusted inputtranskribus_doc_get_pagesingests untrusted inputtranskribus_file_list_filesreads sensitive datatranskribus_stat_get_page_statusingests untrusted inputtranskribus_stat_get_pages_filteredingests untrusted inputtranskribus_action_countno sensitive capabilitytranskribus_action_infono sensitive capabilitytranskribus_action_listno sensitive capabilitytranskribus_admin_authorize_users_for_jobno sensitive capabilitytranskribus_admin_get_job_logno sensitive capabilitytranskribus_admin_get_job_usersno sensitive capabilitytranskribus_admin_get_reportsno sensitive capabilitytranskribus_admin_list_sessionsno sensitive capabilitytranskribus_admin_move_field_modelno sensitive capabilitytranskribus_admin_move_table_modelno sensitive capabilitytranskribus_admin_rebuild_models_indexno sensitive capabilitytranskribus_auth_check_sessionno sensitive capabilitytranskribus_auth_get_detailsno sensitive capabilitytranskribus_auth_invalidateno sensitive capabilitytranskribus_auth_logoutno sensitive capabilitytranskribus_auth_refreshno sensitive capabilitytranskribus_coll_activity_recognitionno sensitive capabilitytranskribus_coll_activity_savesno sensitive capabilitytranskribus_coll_add_docno sensitive capabilitytranskribus_coll_add_docsno sensitive capabilitytranskribus_coll_add_favoriteno sensitive capabilitytranskribus_coll_can_manageno sensitive capabilitytranskribus_coll_countno sensitive capabilitytranskribus_coll_count_docsno sensitive capabilitytranskribus_coll_count_find_documentsno sensitive capabilitytranskribus_coll_createno sensitive capabilitytranskribus_coll_create_doc_from_ftpno sensitive capabilitytranskribus_coll_create_doc_from_iiifno sensitive capabilitytranskribus_coll_create_doc_from_metsno sensitive capabilitytranskribus_coll_create_doc_from_mets_urlno sensitive capabilitytranskribus_coll_create_doc_from_pdfno sensitive capabilitytranskribus_coll_create_iob_importno sensitive capabilitytranskribus_coll_credit_add_packageno sensitive capabilitytranskribus_coll_credit_historyno sensitive capabilitytranskribus_coll_credit_listno sensitive capabilitytranskribus_coll_credit_remove_packageno sensitive capabilitytranskribus_coll_credit_transactionsno sensitive capabilitytranskribus_coll_deleteno sensitive capabilitytranskribus_coll_delete_emptyno sensitive capabilitytranskribus_coll_duplicateno sensitive capabilitytranskribus_coll_duplicate_docno sensitive capabilitytranskribus_coll_ead_metadata_importno sensitive capabilitytranskribus_coll_exportno sensitive capabilitytranskribus_coll_find_documentsno sensitive capabilitytranskribus_coll_find_documents_oldno sensitive capabilitytranskribus_coll_find_documents_postno sensitive capabilitytranskribus_coll_get_metadatano sensitive capabilitytranskribus_coll_get_recentno sensitive capabilitytranskribus_coll_get_recent_collectionsno sensitive capabilitytranskribus_coll_get_recent_documentsno sensitive capabilitytranskribus_coll_get_tag_defsno sensitive capabilitytranskribus_coll_label_listno sensitive capabilitytranskribus_coll_listno sensitive capabilitytranskribus_coll_list_by_nameno sensitive capabilitytranskribus_coll_list_docsno sensitive capabilitytranskribus_coll_list_docs_xmlno sensitive capabilitytranskribus_coll_list_for_userno sensitive capabilitytranskribus_coll_list_pagedno sensitive capabilitytranskribus_coll_list_xmlno sensitive capabilitytranskribus_coll_modifyno sensitive capabilitytranskribus_coll_remove_docno sensitive capabilitytranskribus_coll_remove_favoriteno sensitive capabilitytranskribus_coll_remove_userno sensitive capabilitytranskribus_coll_subscribe_getno sensitive capabilitytranskribus_coll_update_default_tag_defsno sensitive capabilitytranskribus_coll_update_metadatano sensitive capabilitytranskribus_coll_update_tag_defsno sensitive capabilitytranskribus_coll_upload_docno sensitive capabilitytranskribus_coll_upload_doc_multipartno sensitive capabilitytranskribus_coll_user_addno sensitive capabilitytranskribus_coll_user_add_or_modifyno sensitive capabilitytranskribus_coll_user_countno sensitive capabilitytranskribus_coll_user_get_listno sensitive capabilitytranskribus_coll_user_listno sensitive capabilitytranskribus_coll_user_removeno sensitive capabilitytranskribus_coll_user_statsno sensitive capabilitytranskribus_coll_user_update_roleno sensitive capabilitytranskribus_credit_createno sensitive capabilitytranskribus_credit_getno sensitive capabilitytranskribus_credit_get_collectionsno sensitive capabilitytranskribus_credit_get_costsno sensitive capabilitytranskribus_credit_get_historyno sensitive capabilitytranskribus_credit_get_package_transactionsno sensitive capabilitytranskribus_credit_get_productsno sensitive capabilitytranskribus_credit_get_transactionsno sensitive capabilitytranskribus_credit_handle_orderno sensitive capabilitytranskribus_credit_list_by_userno sensitive capabilitytranskribus_credit_manageno sensitive capabilitytranskribus_credit_updateno sensitive capabilitytranskribus_crowd_delete_messagesno sensitive capabilitytranskribus_crowd_delete_milestonesno sensitive capabilitytranskribus_crowd_get_projectno sensitive capabilitytranskribus_crowd_post_milestoneno sensitive capabilitytranskribus_crowd_post_projectno sensitive capabilitytranskribus_crowdsource_countno sensitive capabilitytranskribus_crowdsource_get_detailsno sensitive capabilitytranskribus_crowdsource_listno sensitive capabilitytranskribus_crowdsource_subscribeno sensitive capabilitytranskribus_crowdsource_unsubscribeno sensitive capabilitytranskribus_doc_deleteno sensitive capabilitytranskribus_doc_exportno sensitive capabilitytranskribus_doc_get_costsno sensitive capabilitytranskribus_doc_get_editorial_declarationno sensitive capabilitytranskribus_doc_get_fulldocno sensitive capabilitytranskribus_doc_get_fulldoc_xmlno sensitive capabilitytranskribus_doc_get_image_namesno sensitive capabilitytranskribus_doc_get_metadatano sensitive capabilitytranskribus_doc_get_metsno sensitive capabilitytranskribus_doc_get_statno sensitive capabilitytranskribus_doc_get_statsno sensitive capabilitytranskribus_doc_get_test_setno sensitive capabilitytranskribus_doc_get_train_datano sensitive capabilitytranskribus_doc_get_transcript_idsno sensitive capabilitytranskribus_doc_get_validation_datano sensitive capabilitytranskribus_doc_has_affiliationno sensitive capabilitytranskribus_doc_kws_searchno sensitive capabilitytranskribus_doc_list_collectionsno sensitive capabilitytranskribus_doc_list_collections_pagedno sensitive capabilitytranskribus_doc_list_pagesno sensitive capabilitytranskribus_doc_move_pages_by_image_namesno sensitive capabilitytranskribus_doc_post_editorial_declarationno sensitive capabilitytranskribus_doc_remove_from_collectionno sensitive capabilitytranskribus_doc_update_metadatano sensitive capabilitytranskribus_doc_update_metadata_v2no sensitive capabilitytranskribus_doc_update_transcriptno sensitive capabilitytranskribus_du_recognizeno sensitive capabilitytranskribus_editdecl_delete_featureno sensitive capabilitytranskribus_editdecl_delete_optionno sensitive capabilitytranskribus_editdecl_list_featuresno sensitive capabilitytranskribus_editdecl_post_featureno sensitive capabilitytranskribus_editdecl_post_optionno sensitive capabilitytranskribus_elearning_countno sensitive capabilitytranskribus_elearning_listno sensitive capabilitytranskribus_elearning_subscribeno sensitive capabilitytranskribus_elearning_unsubscribeno sensitive capabilitytranskribus_file_checkno sensitive capabilitytranskribus_file_list_dirsno sensitive capabilitytranskribus_job_countno sensitive capabilitytranskribus_job_createno sensitive capabilitytranskribus_job_getno sensitive capabilitytranskribus_job_get_credit_transactionsno sensitive capabilitytranskribus_job_get_errorsno sensitive capabilitytranskribus_job_killno sensitive capabilitytranskribus_job_listno sensitive capabilitytranskribus_job_restart_all_by_userno sensitive capabilitytranskribus_job_undono sensitive capabilitytranskribus_job_updateno sensitive capabilitytranskribus_kws_create_queryno sensitive capabilitytranskribus_kws_get_hitsno sensitive capabilitytranskribus_kws_get_keywordsno sensitive capabilitytranskribus_kws_get_result_datano sensitive capabilitytranskribus_kws_list_queriesno sensitive capabilitytranskribus_la_analyzeno sensitive capabilitytranskribus_la_analyze_advancedno sensitive capabilitytranskribus_la_get_costsno sensitive capabilitytranskribus_la_la2_inferenceno sensitive capabilitytranskribus_label_assign_documentsno sensitive capabilitytranskribus_label_assign_pagesno sensitive capabilitytranskribus_label_createno sensitive capabilitytranskribus_label_deleteno sensitive capabilitytranskribus_label_getno sensitive capabilitytranskribus_label_listno sensitive capabilitytranskribus_label_remove_all_documentsno sensitive capabilitytranskribus_label_remove_all_pagesno sensitive capabilitytranskribus_label_remove_documentsno sensitive capabilitytranskribus_label_remove_pagesno sensitive capabilitytranskribus_label_replace_document_assignmentsno sensitive capabilitytranskribus_label_replace_page_assignmentsno sensitive capabilitytranskribus_label_updateno sensitive capabilitytranskribus_page_addno sensitive capabilitytranskribus_page_assign_plaintextno sensitive capabilitytranskribus_page_count_transcriptsno sensitive capabilitytranskribus_page_deleteno sensitive capabilitytranskribus_page_delete_transcriptno sensitive capabilitytranskribus_page_getno sensitive capabilitytranskribus_page_get_curr_transcriptno sensitive capabilitytranskribus_page_get_metadatano sensitive capabilitytranskribus_page_get_plaintextno sensitive capabilitytranskribus_page_get_textno sensitive capabilitytranskribus_page_get_transcriptno sensitive capabilitytranskribus_page_is_lockedno sensitive capabilitytranskribus_page_list_locksno sensitive capabilitytranskribus_page_list_transcriptsno sensitive capabilitytranskribus_page_lockno sensitive capabilitytranskribus_page_moveno sensitive capabilitytranskribus_page_post_transcriptno sensitive capabilitytranskribus_page_replaceno sensitive capabilitytranskribus_page_update_hide_on_sitesno sensitive capabilitytranskribus_page_update_status_v2no sensitive capabilitytranskribus_page_update_transcript_statusno sensitive capabilitytranskribus_stat_get_collno sensitive capabilitytranskribus_stat_get_coll_statsno sensitive capabilitytranskribus_stat_get_storage_usageno sensitive capabilitytranskribus_stat_update_page_statusno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v3.1.0 latest |
A 94/100 | 3 | 1.13.0 | 2026-09-07 |
v3.0.0 |
A 94/100 | 3 | 1.12.1 | 2026-08-20 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan @lazyants/transkribus-mcp-server --online
Authenticated MCP transport with HTTP Signatures for AAuth agents
Local-first MCP server for parallel AI coding agents to claim file ownership before edits, preventing stomping on each other in the same worktree.
Agent-agnostic intercommunication system — sessions, messaging, channels, shared state, and real-time events
MCP server for AI agent task communication and delegation with diagnostic lifecycle visibility
Programmatic add/link/unlink for MCP servers across 23 AI coding agents (Claude Code, Claude Desktop, Cursor, VS Code, Codex, Gemini CLI, Zed, Cline, OpenCode, Goose, Kiro, Windsurf, and more). Functional API with dry-run support.
MCP server layer exposing agent-mesh orchestrator as an MCP agent