Skip to main content
Glama

LMCP Doctor

lmcp_doctor
Destructive

Checks everything LMCP depends on on this Mac — the AI apps connected to it, macOS permissions, each integration, and whether an LMCP update is waiting — and fixes what it safely can: it adds LMCP to installed AI apps that are missing it and repairs entries whose command no longer exists. Anything it can't fix (a permission, restarting an app, a config it can't edit safely, installing an update) comes back in needs_you with the exact step. Use it when LMCP "doesn't work" in some app.

Input Schema

NameRequiredDescriptionDefault
confirmNoIgnored; kept for older clients.

Output Schema

NameRequiredDescriptionDefault
modeYespreview | applied
fixedYes
failedYes
summaryYes
ok_countNo
needs_youYes
would_fixYes
warn_countNo
problem_countNo
skipped_countNo
not_running_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true to apply the fixes and run the macOS permission and integration checks. Without it, returns what would be fixed in the AI apps' configs and changes nothing."New value: +"Ignored; kept for older clients."
  2. Changed5 schema fields changed
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true to apply the fixes. Without it, returns what would be fixed and what needs the user."New value: +"Must be true to apply the fixes and run the macOS permission and integration checks. Without it, returns what would be fixed in the AI apps' configs and changes nothing."
    • addedOutput schema / properties / not_running_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / problem_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / skipped_count
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / warn_count
      Added value: +{
      +  "type": "integer"
      +}
  3. Added

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by enumerating the exact writes it performs (registering LMCP in apps that lack it, repairing entries whose command no longer exists) and by defining the failure contract: anything it can't fix comes back in `needs_you` with the exact step. It does not say whether repairs are reversible or what it needs permission-wise to write, so the destructiveHint=true profile is softened but not fully explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the scope statement, then the fix behavior, then the `needs_you` escape hatch, then the trigger — every clause earns its place despite the length. It is one dense block rather than separated lines, which costs a bit of scannability but no content is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a broad self-repair tool with an output schema present, the description covers scope, mutation limits, and the shape of the unfixable-results channel, which is enough to call it correctly. It stops short of describing how long a full check takes or whether it should be run before any other troubleshooting step.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter `confirm` is fully documented in the schema as ignored/legacy, and the description correctly stays silent about it rather than adding noise. With 100% schema coverage and nothing extra to say, this is the baseline case — the description neither helps nor misleads on parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (checks ... and fixes) over a specific resource set (AI app connections, macOS permissions, integrations, pending LMCP update), and the breadth of scope implicitly separates it from narrow siblings like permissions_status or lmcp_state. It never names an alternative though, so an agent must infer the boundary against run_diagnostics / lmcp_upgrade_diagnostics itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it when LMCP 'doesn't work' in some app" gives a concrete, recognizable triggering condition, which is exactly the entry point an agent needs. There are no exclusions or named alternatives (e.g. when to prefer run_diagnostics or list_missing_permissions), so routing among the several diagnostic siblings is still left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources