{"name":"io.github.astandrik/local-ydb-mcp","slug":"astandrik-local-ydb-mcp","title":"Local YDB MCP","description":"Operate local-ydb deployments through local or SSH-backed MCP tools.","url":"https://mcp.market/server/astandrik-local-ydb-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":38,"stars":5,"forks":0,"downloads_week":292,"last_push_at":"2026-10-31T05:52:28.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/astandrik/local-ydb-toolkit","website":"https://local-ydb-toolkit.ydb-qdrant.tech/","version":"0.19.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@astandrik/local-ydb-mcp","version":"0.19.0","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"type":"named","name":"-y"},{"type":"named","name":"--prefer-online"}],"environmentVariables":[{"description":"Optional path to a local-ydb-toolkit config JSON file.","format":"filepath","placeholder":"/path/to/local-ydb.config.json","name":"LOCAL_YDB_TOOLKIT_CONFIG"},{"description":"Optional LLM-facing tool response text format. Use toon to prefer TOON for the second text content block, with JSON fallback if TOON cannot round-trip losslessly; omit or set json for pretty JSON. MCP JSON-RPC and structuredContent stay JSON.","default":"json","placeholder":"toon","choices":["json","toon"],"name":"LOCAL_YDB_MCP_CONTENT_FORMAT"}]}],"tools":[{"name":"local_ydb_add_dynamic_nodes","description":"Add one-off dynamic tenant nodes beyond the declarative profile.dynamicNodeCount topology, one at a time. By default the first suffix is dynamicNodeCount + 1; an explicit startIndex must be greater than dynamicNodeCount, and port overrides remain available. Every planned name must be distinct from the static container and all configured plus one-off ports must be valid and unique in the shared net","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_add_storage_groups","description":"Increase NumGroups for one tenant storage pool using the current ReadStoragePool definition. Without confirm=true this returns the DefineStoragePool plan, rollback, target pool, and target count; when the update succeeds it verifies NumGroups and tenant metadata.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_apply_auth_hardening","description":"Apply a reviewed hardened YDB config file only after a full check-only static profile and configured-binding compatibility preflight succeeds before any config or container mutation; immutable mismatches require destroy followed by bootstrap. It then restarts the static node and recreates and verifies every configured dynamic node in index order even when no dynamic-node token file is configured. ","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_apply_schema","description":"Validate or apply YDB table DDL through the official YDB JS SDK. It accepts raw YQL DDL for PRAGMA plus CREATE TABLE, ALTER TABLE, and DROP TABLE; action=apply validates first and executes only with confirm=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_auth_check","description":"Read-only auth audit that checks anonymous viewer whoami status and configured YDB CLI tenant access, using root credentials when rootPasswordFile is configured. Use after auth hardening or password rotation to verify the expected posture.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_bootstrap","description":"Bootstrap a tenant topology: static node with GraphShard flags and loopback bindings for static plus every configured dynamic gRPC port, configured CMS tenant, and all dynamic nodes declared by profile.dynamicNodeCount. Before returning or executing a plan, configured container names must be distinct from the static container and all shared-network ports must be valid and unique. Nodes start in in","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_bootstrap_root_database","description":"Bootstrap a plain local YDB database at /local with only a static node. Use for generic local database requests that do not need a CMS tenant, GraphShard, or dynamic nodes; an existing running or stopped static container is reused only when its image, network, data mount, complete port bindings, required environment, restart policy, and disabled healthcheck match the profile. Without confirm=true ","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_check_prerequisites","description":"Check target-host prerequisites for the Docker CLI and daemon, curl, ruby, and the configured rootPasswordFile when present. An unreachable SSH target returns unavailable=[target] without claiming tools are missing or proposing installation. Without confirm=true it returns the current snapshot and any apt-get plan; confirm=true may install only supported curl/ruby packages, then returns a refreshe","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_cleanup_storage","description":"Delete only the explicitly supplied local-ydb host paths or Docker volumes. Use after inspecting local_ydb_storage_leftovers; without confirm=true this returns the cleanup plan and removes nothing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"local_ydb_container_logs","description":"Read recent Docker logs from the configured static or primary dynamic local-ydb container. Use when bootstrap, restart, or readiness checks fail; target selects the container role and lines controls the tail length.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_create_tenant","description":"Create the configured CMS tenant when the static node is already running. Use before local_ydb_start_dynamic_node for tenant topologies; without confirm=true this returns the planned status/create command and creates nothing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"local_ydb_database_status","description":"Read-only YDB admin database status for the configured tenant path. Returns the command, stdout, stderr, and ok flag; use this for tenant state before bootstrap/restart troubleshooting, and use local_ydb_tenant_check for scheme reachability.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_destroy_stack","description":"Remove tenant metadata, local-ydb containers, network, and storage for a profile, with optional host-path cleanup.","write_action":true,"price_micros":0,"input_schema":null},{"name":"local_ydb_dump_tenant","description":"Dump the configured tenant or a tenant-relative path using a local-ydb helper container on the static container network. It creates profile.dumpHostPath/dumpName, excludes .sys objects, writes the dump under dumpName/tenant, and without confirm=true returns the mkdir/helper-container plan only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_generate_schema","description":"Read-only structured YDB table DDL generator. It renders strict JSON specs for CREATE TABLE, ALTER TABLE, DROP TABLE, and secondary indexes, returns the generated script with official references and warnings, and can optionally validate through the YDB JS SDK without applying changes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_graphshard_check","description":"Read-only GraphShard check through viewer/json capabilities and tabletinfo for the configured tenant. Returns graphShardExists, tablet ids, and viewer status details; use after tenant bootstrap when GraphShard support or tablet visibility is the specific question.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_healthcheck","description":"Read-only YDB monitoring healthcheck for the configured tenant or root database. Uses the official YDB CLI SelfCheck path, returns selfCheckResult, issue counts, issue types, capped raw output, and whether the database is healthy; a requested noCache/noMerge option rejected with the exact recognized two-line legacy parser signature is reported through optionResolution and warnings, while compatibi","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_inventory","description":"Read-only Docker inventory for a local-ydb target profile. Success returns ok=true, Docker CLI/daemon state, containers, volumes, and inspect data for configured containers that actually exist; Docker CLI, daemon, or inventory failures return ok=false with a reason and omit inventory arrays so failure cannot be mistaken for an empty host. SSH target or probe failures use docker-inventory-failed wi","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_list_dumps","description":"Read-only list of available tenant dumps under profile.dumpHostPath. Use before restore to choose a dumpName; it only reports top-level dump directories that contain the existing tenant dump folder.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_list_versions","description":"List published GHCR or Docker Hub tags for a local-ydb container image, with numeric version tags sorted newest first. Use before local_ydb_upgrade_version; registry pagination and authentication are restricted to trusted origins, and pageSize and maxPages bound pagination.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_nodes_check","description":"Read-only check of dynamic node registration through viewer/json nodelist. Use after starting, adding, or removing dynamic nodes; use local_ydb_tenant_check first when tenant reachability is unknown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_permissions","description":"Inspect or change YDB scheme permissions for a path. The default list action is read-only; grant, revoke, set, clear, chown, and inheritance changes return a plan unless confirm=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_prepare_auth_config","description":"Generate a hardened YDB config from the current static-node config. Use before local_ydb_write_dynamic_auth_config and local_ydb_apply_auth_hardening; without confirm=true this returns the planned write only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_pull_image","description":"Plan or start a background Docker pull for a local-ydb image on the selected target. Without confirm=true it returns inspect and pull commands only; with confirm=true it returns a jobId for local_ydb_pull_status unless the image is already present.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_pull_status","description":"Check the status of a background Docker image pull started by local_ydb_pull_image. For known jobs it returns a monotonic progressPercent based on completed known Docker layers rather than bytes: 0-99 while running, 100 after successful completion, and the last observed value after failure.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_reduce_storage_groups","description":"Reduce NumGroups for a tenant storage pool by dumping the tenant, rebuilding the profile stack with a smaller storagePoolCount, restoring the dump, and reapplying auth when needed. Before dump or destroy, it inspects every one-off dynamic node and preserves its exact gRPC, monitoring, and IC ports; an incomplete definition aborts the rebuild.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_remove_dynamic_nodes","description":"Remove dynamic tenant suffix nodes one at a time and verify nodelist disappearance when the node IC port can be resolved. Without containers, nodeIds, or startIndex, only one-off suffixes above profile.dynamicNodeCount are eligible and the highest suffix is removed first. Explicit selectors or startIndex may remove a configured suffix and create drift that bootstrap or restart restores. Rollback g","write_action":true,"price_micros":0,"input_schema":null},{"name":"local_ydb_restart_stack","description":"Reconcile and restart the selected profile after inventory and a full check-only static compatibility preflight. Before stopping any container, require the existing static container to match the profile image, network, data mount, environment, restart policy, healthcheck, and exact loopback bindings for static gRPC, monitoring, and every configured dynamic gRPC port; configured binding changes req","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_restore_tenant","description":"Restore the configured tenant or destination path from a dump under profile.dumpHostPath, with optional post-restore scheme describe and bounded count-query verification. Use after bootstrap or rebuild when the target tenant is ready; without confirm=true this returns the restore plan and does not write data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_scheme","description":"Read-only YDB scheme list or describe with capped stdout/stderr. It uses the root database for rootDatabase paths and the tenant database otherwise; list supports recursive/long/onePerLine flags, describe supports stats, and incompatible flag combinations are rejected.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_set_root_password","description":"Rotate the runtime root password with ALTER USER and sync the host auth config and root password file to match. YDB may reject passwords that violate auth_config.password_complexity; this tool requires a non-empty password value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_sql","description":"Run managed YQL v1 against the configured local-ydb target through Query Service. query uses SnapshotRO, explain returns plan/AST, and execute always runs EXPLAIN first and sends one NoTx execution only with confirm=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"local_ydb_start_dynamic_node","description":"Start the configured primary dynamic tenant node for an existing CMS tenant. Before returning or executing a plan, it rejects a primary name that aliases the static container and ports that collide in the shared network namespace, including static IC port 19001. After checking that the image is present, it runs the full check-only static compatibility preflight, including the current image ID, imm","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_status_report","description":"Read-only aggregate report for quick diagnosis. Runs local_ydb_inventory, local_ydb_auth_check, local_ydb_tenant_check, local_ydb_nodes_check, and local_ydb_healthcheck, returning each result; every component is isolated so an unexpected failure produces a safe component-shaped fallback and does not stop the remaining checks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_storage_leftovers","description":"Read-only search for candidate leftover local-ydb Docker volumes, dumps, and PDisk/data paths. It scans Docker volume names plus profile.storageSearchPaths and deletes nothing; use before local_ydb_cleanup_storage to decide exact paths or volumes to remove.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_storage_placement","description":"Read-only storage inspection that returns ReadStoragePool output and BSC physical placement. Use before adding or reducing storage groups to confirm the exact pool shape.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_tenant_check","description":"Read-only check that uses the YDB CLI to verify the configured tenant path is reachable. Use after bootstrap or restore to confirm tenant metadata before node or GraphShard checks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_upgrade_version","description":"Upgrade a file-backed, volume-backed local-ydb profile to a target image tag. Use only for version upgrades on profiles without bindMountPath; before dump or destroy it inspects every one-off dynamic node and preserves its exact gRPC, monitoring, and IC ports, aborting on an incomplete definition. It then preflights source and target images, dumps, rebuilds, restores, reapplies auth when configure","write_action":false,"price_micros":0,"input_schema":null},{"name":"local_ydb_write_dynamic_auth_config","description":"Write the text-proto dynamic-node auth token file needed for mandatory-auth startup. Use after choosing the SID for auth hardening; without confirm=true this returns the planned file write only.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-31T05:54:02.942Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-31T05:54:02.903Z","components":{"code":{"score":25,"max":25,"notes":["23 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@astandrik/local-ydb-mcp","version":"0.19.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":8,"publishedAt":"2026-10-07T10:08:10.346Z","repositoryUrl":"git+https://github.com/astandrik/local-ydb-toolkit.git","weeklyDownloads":292}],"repo":{"found":true,"owner":"astandrik","repo":"local-ydb-toolkit","archived":false,"pushedAt":"2026-10-31T05:52:28Z","stars":5,"forks":0,"openIssues":14,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/8037318?v=4","ownerCreatedAt":"2014-07-01T13:03:41Z","license":"MIT"},"icon":{"url":"https://local-ydb-toolkit.ydb-qdrant.tech/favicon.svg","source":"registry"},"presence":{"stars":5,"forks":0,"downloadsWeek":292,"license":"MIT","lastPushAt":"2026-10-31T05:52:28.000Z","score":38}}}},"grade_history":[],"reviews":[]}