{"name":"io.github.dave1362/rca-mcp-connector","slug":"dave1362-rca-mcp-connector","title":"RCA-MCP","description":"Causal root-cause analysis MCP server -- 56 tools across graphs, RCA models, PyRCA.","url":"https://mcp.market/server/dave1362-rca-mcp-connector","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":15,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-11T12:00:48.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/dave1362/rca-mcp-connector","website":null,"version":"4.1.20","remotes":[],"packages":[{"registryType":"pypi","identifier":"rca-mcp-connector","version":"4.1.20","transport":{"type":"stdio"},"environmentVariables":[{"description":"Base URL of the RCA-MCP backend to connect to.","format":"string","default":"https://rcamcp-production.up.railway.app","name":"RCA_MCP_API_URL"},{"description":"Your RCA-MCP API key — get one free at https://rcamcp.datalizedglb.cloud.","isRequired":true,"format":"string","isSecret":true,"name":"RCA_MCP_API_KEY"}]}],"tools":[{"name":"rca_admin_health","description":"Return server health status and instance-wide aggregate counts. Any authenticated key can call this (minimum viewer role) -- use this to confirm the server is reachable and to see which model families are supported, not to check your own account's usage.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_admin_purge_namespace","description":"Permanently delete ALL of YOUR OWN records in a storage namespace (graphs/models/results) in one call. Requires confirm=true. This action is IRREVERSIBLE. Only affects data you own -- there is no cross-account purge capability exposed via this or any other tool.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_admin_read_audit_log","description":"Read YOUR OWN structured audit log entries for a given hour bucket — one entry per tool call you made, showing which tool ran, when, and whether it succeeded or was denied.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_admin_show_plan_info","description":"Show your current plan, every feature limit, and which locked features an upgrade would unlock. Takes no parameters beyond authentication -- there's nothing else to configure here.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_batch","description":"Run the same RCA model over multiple incidents in one call, then rank which root causes recur most often across all of them — use this to spot a systemic cause behind several similar incidents, not just one.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_analysis_compare","description":"Compare multiple RCA results: surface overlapping root causes, confidence agreement, and model disagreements. Returns raw comparison JSON for programmatic use -- use rca_report_compare instead if you want the same comparison rendered as a shareable markdown/HTML document.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_ensemble","description":"Run 2-5 different RCA models on the SAME payload and combine their root-cause scores via weighted voting. Requires the ensemble feature (Pro+). Use this when you're unsure which single model family fits the data best and want cross-validation across families -- for the SAME model run over multiple different incidents instead, use rca_analysis_batch.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_analysis_explain","description":"Turn a stored RCA result into a human-readable explanation with heuristic recommended actions (IMMEDIATE/MONITOR/TRACK, based on each cause's score) -- useful for a chat response or incident writeup, as opposed to rca_analysis_get_result's raw JSON.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_get_result","description":"Retrieve a previously saved RCA result by result_id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_list_results","description":"List all of YOUR stored RCA result IDs, newest first, with pagination. Returns IDs and a count only — not the results themselves; follow up with rca_analysis_get_result for the full content of any one of them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_poll_task","description":"Poll the status of an async RCA task submitted via rca_analysis_run_async. Requires the async_tasks feature (Pro+ -- same gate as submitting the task in the first place).","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_analysis_query_results","description":"Query stored RCA results by model family, confidence threshold, time range, or tags — without loading every full result record. Use this instead of rca_analysis_list_results whenever you need to filter (e.g. \"only high-confidence Granger results from this week\"); use rca_analysis_list_results for a plain unfiltered listing instead. Returns lightweight index entries, not full result bodies -- follo","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_analysis_run","description":"Execute an RCA analysis using a registered model and return ranked root causes. This is the primary, synchronous analysis entry point -- it blocks until the model finishes. For a model that might take a while, use rca_analysis_run_async + rca_analysis_poll_task instead (Pro+); for multiple incidents through the same model in one call, use rca_analysis_batch instead (Starter+).","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_analysis_run_async","description":"Submit a long-running RCA analysis (bayesian_network, dowhy_causal_inference, or any model against a large dataset) as a background task instead of blocking. Requires the async_tasks feature (Pro+); for most models on typical data sizes, the synchronous rca_analysis_run is simpler and doesn't need this or the plan tier. Returns a task_id immediately -- use rca_analysis_poll_task repeatedly to chec","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_auth_generate_token","description":"Generate a new API key for authenticating all other tools. Always issues the Free plan.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_auth_list_keys","description":"List your own API keys and their metadata. Never returns raw or hashed key material. Requires the multi-key feature (Pro plan or above -- up to 5 keys on Pro, unlimited on Enterprise); Free/Starter keys get a security_violation error, since those plans only ever have the one key they authenticated with.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_auth_revoke_token","description":"Deactivate one of your own API keys immediately — useful when a key is compromised or an integration is being retired. Unlike rca_auth_list_keys/rca_auth_rotate_key, this has no plan gate at all — every plan can revoke, including Free/Starter with only one key (revoking your only key means you'll need rca_auth_generate_token again, or your dashboard, to get back in).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_auth_rotate_key","description":"Deactivate one of your existing API keys and generate a replacement for the same account in one call. Requires the multi-key feature (Pro plan or above -- up to 5 keys on Pro, unlimited on Enterprise).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_dtree_answer","description":"🌟 Starter+ — Answer the current diagnostic question to advance the decision tree. Call repeatedly until status == \"resolved\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_dtree_generate_from_fmea","description":"🌟 Starter+ — Auto-generate a diagnostic decision tree from a completed FMEA analysis, converting HIGH-priority failure modes into a sequential yes/no diagnostic tree. Get fmea_result_id first by running rca_analysis_run against a model created with family=\"fmea\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_dtree_list_sessions","description":"🌟 Starter+ — List your equipment diagnostic sessions (started via rca_dtree_start), each with its status and diagnosis if resolved. Free-plan keys get a plan_required error instead of results.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_dtree_start","description":"🌟 Starter+ — Begin an interactive diagnostic session using a decision tree guide. Returns a question — answer with rca_dtree_answer, one call per question, until the session resolves to a diagnosis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_add_edge","description":"Add a directed causal edge (source → target) to a graph. Both nodes must already exist -- add them first with rca_graph_add_node. Automatically rejects edges that would create a cycle (DAG enforcement) rather than silently allowing an invalid graph.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_add_node","description":"Add a typed node to a causal graph. Node names must be unique within the graph -- adding a node with a name that already exists raises an error rather than overwriting it; remove the existing one first with rca_graph_remove_node if you want to replace it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_create","description":"Create a new, empty causal DAG. Populate it with rca_graph_add_node and rca_graph_add_edge afterward, or use rca_graph_discover instead if you have observational data and want the graph inferred rather than hand-built.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_graph_delete","description":"Delete a causal graph permanently. Requires confirm=true. This action is IRREVERSIBLE via this tool -- if graph versioning is available on your plan, restoring an old version first won't help since the whole graph record is gone, not just its edges.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_graph_discover","description":"Automatically discover a causal skeleton from observational metric data using partial-correlation + Fisher-Z conditional independence tests (PC-algorithm). Requires the causal_discovery feature (Pro+).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_get","description":"Retrieve a causal graph's current state. Use \"json\" (default) to inspect it programmatically, \"dot\" to render it visually with Graphviz, or \"adjacency\" for a plain source->targets mapping.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_list_versions","description":"List all historical versions of a causal graph. A new version is snapshotted automatically every time the graph is saved (node/edge additions, removals, etc) -- there's no separate \"save version\" step. Requires the graph_versioning feature (Starter+).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_markov_blanket","description":"Return the Markov blanket of a node: parents ∪ children ∪ co-parents -- the minimal set of other nodes needed to fully explain this node's behavior, ignoring the rest of the graph.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_merge","description":"Merge two causal graphs into a unified graph for cross-system RCA (e.g. combining a network-layer graph with an application-layer graph). Duplicate edges keep the higher-weight version; edges that would introduce a cycle are dropped and counted, not silently ignored. Requires the causal_discovery feature (Pro+); both source graphs must belong to you.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_remove_edge","description":"Remove a directed edge (source → target) from a causal graph. Destructive and irreversible via this tool — undo by re-adding the edge with rca_graph_add_edge, or restoring an earlier version with rca_graph_restore_version.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_graph_remove_node","description":"Remove a node and all its incident edges from a causal graph. Destructive and irreversible via this tool — undo only by rebuilding the node/edges with rca_graph_add_node + rca_graph_add_edge, or restoring an earlier version with rca_graph_restore_version if versioning is available on your plan.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_graph_restore_version","description":"Restore a causal graph to a specific historical version. This creates a new current state from the version snapshot — the version history itself is preserved (the restore operation is snapshotted too, so restoring is itself undoable by restoring forward again). Requires confirm=true and the graph_versioning feature (Starter+).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_score","description":"Compute structural quality scores for a causal graph -- a sanity check on the graph's shape itself (is it a valid DAG, how connected is it), not a root-cause analysis. Use this after building or editing a graph by hand, or after rca_graph_discover, to catch structural issues (e.g. disconnected components, a graph that isn't actually a DAG) before running rca_analysis_run on it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_graph_score_paths","description":"Find and rank all causal paths from every root (no-incoming-edge) node to a target incident node. Score = geometric-mean(edge weights) × avg_confidence / sqrt(hops) — shorter, higher-weight, higher-confidence paths rank above longer or weaker ones.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_delete","description":"Permanently delete an equipment guide you ingested. Requires confirm=true. This action is IRREVERSIBLE -- re-ingest via rca_guide_ingest or rca_guide_ingest_pdf if you need it back.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_guide_generate_report","description":"🌟 Starter+ (markdown) / 💎 Pro+ (PDF/HTML) — Generate a maintenance/ troubleshooting report from a completed diagnostic session. The session must already be resolved (finished via rca_dtree_answer) — an in-progress session returns an error telling you to keep answering questions first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_get","description":"✅ All plans — Retrieve a full troubleshooting guide, or one specific section by ID. Includes the 4 built-in shared sample guides (visible and readable by every account, though only rca_guide_ingest/rca_guide_ingest_pdf can add your own, and only your own can be deleted via rca_guide_delete).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_ingest","description":"🌟 Starter+ — Upload and index an equipment troubleshooting guide into the knowledge base, as plain text content. Use rca_guide_ingest_pdf instead if you're starting from an actual PDF file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_guide_ingest_pdf","description":"🌟 Starter+ — Parse a PDF equipment manual and ingest it into the RCA knowledge base. Rejects non-PDF input (checked via file signature, not just the base64 wrapper) and files over 50MB.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_list","description":"✅ All plans — List your ingested troubleshooting guides (plus the 4 built-in shared samples visible to every account), with optional equipment_type/tag filters. Use the returned guide_id with rca_guide_get, rca_guide_delete, or rca_dtree_start.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_pdf_preview","description":"🌟 Starter+ — Preview a PDF document before full ingestion to verify parsing quality. Always call this BEFORE rca_guide_ingest_pdf.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_guide_search","description":"✅ All plans — Search the equipment knowledge base by symptom description using TF-IDF relevance ranking. Free plan capped at 3 results. Searches both your own ingested guides and the 4 built-in shared sample guides (visible to every account).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_model_create","description":"Register a new RCA model spec in the registry, starting in \"draft\" status. This just stores the spec — it doesn't run anything.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_model_delete","description":"Permanently delete a model from the registry and storage. Requires confirm=true. This action is IRREVERSIBLE -- any results already produced by this model (via rca_analysis_run etc.) are unaffected and stay retrievable via rca_analysis_get_result, but you can no longer run new analyses with this model_id.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_model_list","description":"List all of YOUR registered RCA models, with optional family/status filters. Use this to find a model_id for rca_analysis_run, or to check your usage against your plan's model-count limit (see rca_admin_show_plan_info for the limit itself).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_model_update_status","description":"Set a model's lifecycle status directly to any of: draft, trained, validated, deployed, deprecated, failed. This is a direct field update, not a guarded state machine — there is no enforced order (e.g. nothing stops setting \"deployed\" on a model that was never validated); that discipline is on the caller, not the API.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_model_validate","description":"Run a quick correlation-based sanity check of a model against hold-out data you supply (not automatically split from training data -- you provide a separate dataset). This is a lightweight coverage/confidence check, not full cross-validation or backtesting; use it to catch an obviously broken model, not to certify accuracy.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rca_provider_list_configs","description":"Get MCP client configuration and setup instructions for a specific provider or list all supported providers. Use this when a user asks \"how do I connect RCA-MCP to X\" -- it's documentation lookup, not something that affects RCA-MCP's own behavior.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_pyrca_epsilon_diagnosis","description":"[Adapted from Salesforce PyRCA — BSD-3-Clause] Identify anomalous metrics contributing to a Service Level Indicator (SLI) anomaly by comparing metric distributions in normal vs. incident windows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_pyrca_ht_diagnosis","description":"[Adapted from Salesforce PyRCA — BSD-3-Clause] Hypothesis-testing RCA with descendant adjustment (HT-ADJ / CIRCA). Tests whether the SLI anomaly can be statistically explained by causal propagation from each ancestor node. Applies descendant adjustment to reduce indirect cause scores and surface true root causes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_pyrca_random_walk","description":"[Adapted from Salesforce PyRCA — BSD-3-Clause] Graph-based root cause localisation via personalised PageRank random walk. Propagates backward through a causal adjacency graph from the SLI node, weighting transitions by anomaly scores to compute root cause probabilities. Requires the pyrca feature (Starter+) and, unlike rca_pyrca_epsilon_diagnosis, needs an adjacency graph you already have (from rc","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_pyrca_validate_setup","description":"Validate the PyRCA integration setup and report which strategy is active — a read-only diagnostic, not an action. Takes no parameters beyond authentication (token/client_id); there is nothing else to configure on this call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_report_compare","description":"Generate a comparative report across 2–10 RCA results, showing consensus root causes, model agreement percentages, and per-model summaries. Use this instead of rca_analysis_compare when you want a shareable formatted document rather than raw comparison JSON.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rca_report_generate","description":"Generate a styled, professional report from a SINGLE RCA analysis result -- use rca_report_compare instead if you want a report covering multiple results together.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T20:27:29.729Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:27:29.718Z","components":{"code":{"score":25,"max":25,"notes":["14 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":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 8 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"rca-mcp-connector","version":"4.1.20","found":true,"license":"MIT","dependencyCount":5,"publishedAt":"2026-09-10T23:38:10.230752Z","repositoryUrl":"https://github.com/dave1362/rca-mcp-connector"}],"repo":{"found":true,"owner":"dave1362","repo":"rca-mcp-connector","archived":false,"pushedAt":"2026-09-11T12:00:48Z","stars":0,"forks":0,"openIssues":6,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/71973014?v=4","ownerCreatedAt":"2020-09-27T13:00:40Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-11T12:00:48.000Z","score":15}}}},"grade_history":[],"reviews":[]}