Skip to main content
Glama
MoleCare MCP Server
by MoleCare

MoleCare MCP Server

License Node MCP

Model Context Protocol(MCP) 서버로, Claude와 다른 MCP 클라이언트가 다음에 접근할 수 있게 해 줍니다.

  1. 피부과 지식 — ABCDE 교육, SNOMED CT / ICD-10 도우미, 위험 요인 프롬프트

  2. 선택적 MoleCare API 도구 — 점(모반), 변화 추이, 분석 (자체 백엔드 + API 키)

  3. 선택적 MLOps / 운영 도구 — 상태 점검, 모니터링, 피처 스토어, 인프라(mock-first)

의료 기기가 아닙니다. 출력물은 교육 및 운영 보조 목적으로만 제공됩니다. 진단이나 치료 결정에 사용하지 마세요.

제품 사이트: molecare.co.uk · 앱: iOS · Android


존재 이유

MoleCare는 사람들이 시간이 지나면서 점(모반)을 추적하고 진료 방문을 준비하도록 돕습니다. 이 MCP 서버를 통해 개발자와 운영자는 다음을 할 수 있습니다:

  • Claude Desktop / Cursor에서 교육용 피부 건강 지식 검색

  • MoleCare 호환 API를 대상으로 어시스턴트 흐름 프로토타이핑

  • 자격 증명이 없을 때 안전한 mock 데이터로 MLOps 도구 살펴보기


Related MCP server: THC Open Mindfulness MCP

빠른 시작

자격 증명도, 데이터베이스도, 클라우드 계정도 필요 없습니다. MCP 클라이언트 설정에 다음을 추가하고 다시 시작하세요.

{
  "mcpServers": {
    "molecare": {
      "command": "npx",
      "args": ["-y", "molecare-mcp"]
    }
  }
}

macOS의 Claude Desktop에서는 이 파일이 ~/Library/Application Support/Claude/claude_desktop_config.json입니다.

피부과 지식 도구는 패키지에 포함된 지식 베이스를 읽기 때문에 즉시 작동합니다. 백엔드와 통신하는 모든 도구는 설정을 완료하기 전까지 명확하게 표시된 mock 데이터를 반환하므로, 전체 도구를 먼저 살펴보고 필요한 것만 선택할 수 있습니다.

클라이언트 없이 시도하려면:

npx -y molecare-mcp

stdio에서 시작되어 대기하고, 출력이 없으면 정상적으로 동작 중이라는 뜻입니다.


실제 백엔드 연결

MoleCare 호환 API를 실행 중인 경우에만 필요합니다.

{
  "mcpServers": {
    "molecare": {
      "command": "npx",
      "args": ["-y", "molecare-mcp"],
      "env": {
        "MOLECARE_API_URL": "http://localhost:8080/api",
        "MOLECARE_API_KEY": "your-local-api-key"
      }
    }
  }
}

localhost(또는 자체 배포 환경)를 사용하세요. 클라우드 드라이브에 동기화되는 설정 파일에 프로덕션 키를 붙여넣지 마세요.


환경 변수

실시간 백엔드를 원하지 않는 한 모두 선택 사항입니다.

Variable

Purpose

Example

MOLECARE_API_URL

MoleCare HTTP API

http://localhost:8080/api

MOLECARE_API_KEY

API 베어러 토큰 / 키

local-dev-key

ONTOLOGY_API_URL

온톨로지 서비스

http://localhost:8081

MLFLOW_TRACKING_URI

MLflow 트래킹 서버

http://localhost:5000

FEAST_REPO_PATH

Feast 저장소 경로

—

AWS_REGION

EC2 / CloudWatch용 AWS 리전

us-east-1

GITHUB_TOKEN

CI/CD용 토큰

—

MCP_HEALTH_PORT

HTTP /health 엔드포인트 바인딩. 기본적으로는 미설정 — stdio 클라이언트에는 필요 없음

3000

PORT

동일한 용도로 컨테이너에 사용

3000

.env.example를 참고하세요.


도구

피부과 지식 — 설정 불필요

이 도구들이 대부분의 사용자가 이 패키지를 설치하는 이유입니다. 패키지에 포함된 지식 베이스에서 제공되며 API, 키, 네트워크가 전혀 필요 없습니다.

Tool

설명

search_medical_info

피부과 지식 베이스 검색

lookup_medical_concept

SNOMED CT 개념 조회

search_medical_concepts

이름 또는 코드로 질환 검색

map_snomed_to_icd10

SNOMED CT 코드를 ICD-10에 매핑

classify_lesion_features

병변에 대해 ABCDE 방식의 특징을 설명하는 표현 반환

assess_risk_from_factors

입력된 위험 요인을 기반으로 교육용 위험 점수 산출

get_condition_risk_factors

질환에 대해 알려진 위험 요인 조회

get_condition_progression

질환의 전형적인 진행 단계 조회

get_malignant_conditions

코드가 포함된 악성 피부 질환 목록

리소스: molecare://knowledge/* — ABCDE 진단 기준, Fitzpatrick 피부 유형, 예방, 피부과 진료가 필요한 시기, SNOMED CT 및 ICD-10 참조 자료.

MoleCare 제품 데이터 — API 필요

MOLECARE_API_URL이 설정될 때까지 라벨이 있는 mock 데이터를 반환합니다.

Tool

설명

get_mole

사용자 ID 순환 목록으로 점 목록

get_mole_analysis

점에 대한 분석 페이로드

get_mole_changes

점 변경 내역

get_user_risk_factors

사용자의 위험 프로필

compare_moles

두 점 비교

이 도구들은 MoleCare가 어시스턴트를 통해 이 스택을 운영하기 때문에 존재합니다. 해당 맥락 밖에서 사용될 일이 거의 없으며, 해당 백엔드가 설정되지 않은 상태에서는 모두 mock 데이터를 반환합니다.

Area

Tools

Health

get_system_health, check_server_health, get_service_health, clear_cache`

MLflow

get_mlflow_experiments, get_mlflow_runs, get_registered_models, get_model_version, compare_model_runs, get_training_runs

Feature store

get_feature_views, get_feature_view_details, get_feature_freshness, get_online_features, get_feature_store_stats

CI/CD

get_pipeline_runs, get_pipeline_summary, get_deployments, get_deployment_status, get_releases

AWS

get_ec2_instances, get_ec2_instance, get_ec2_health, get_ec2_metrics

Apps

get_app_status, get_web_app_status, get_mobile_api_status, get_all_apps_status, get_app_metrics, get_app_errors, get_app_versions, get_app_store_status

Database

get_database_status, get_database_metrics, get_slow_queries, get_table_stats, get_backup_history, get_connection_pools

Kubernetes

get_kubernetes_status

AWS 도구는 선택적 peer dependencies인 @aws-sdk/client-ec2와 @aws-sdk/client-cloudwatch가 필요합니다. 이 둘은 기본 설치 시 포함되지 않습니다. 피부과 도구만 필요한 사용자가 불필요하게 33MB를 다운로드하지 않도록 하기 위해서 입니다. 실제 AWS 데이터를 사용하려면 직접 설치하세요.

npm i @aws-sdk/client-ec2 @aws-sdk/client-cloudwatch

아키텍처

Claude / Cursor / MCP client
        │ stdio (JSON-RPC)
        ▼
  molecare-mcp
   ├─ medical KB (local)
   ├─ MoleCare API client (optional)
   ├─ ontology / MLflow / Feast clients (optional)
   └─ AWS / CI clients (optional, mock if unset)
        │
        └─ optional HTTP GET /health  (Docker / ECS)

Docker

docker build -t molecare-mcp .
docker run --rm -p 3000:3000 molecare-mcp
curl http://localhost:3000/health

보안

  • .env 파일이나 API 키를 절대 커밋하지 마세요 — 취약점 신고는 SECURITY.md를 참고하세요

  • 데모와 스크린샷에는 mock 모드를 권장합니다

  • userId를 받는 도구는 실제 인증이 있는 실제 백엔드에 연결한 경우에만 PHI를 반환할 수 있습니다. 그러한 환경은 프로덕션으로 취급하세요

  • 속도 제한과 인증은 MCP 프로세스에서만 하는 것이 아니라 자체 API에서 적용하세요


의료 면책 안내

MoleCare MCP는 교육용 정보와 개발자 도구를 제공합니다. 피부암(흑색종)이나 어떤 질병들도 진단하지 않습니다. 의학적 문의가 있다면 반드시 경력있는 임상의와 상담하세요.

개발

git clone https://github.com/MoleCare/molecare-mcp.git
cd molecare-mcp
npm install
npm run build
npm run dev      # auto-reload
npm run inspect  # browse tools in MCP Inspector

기여는 환영입니다. 먼저 CONTRIBUTING.md를 읽어 주세요 — mock-first 규칙, 의료 콘텐츠와 관련된 임상 안전 경계, 그리고 good first issue를 찾는 방법을 확인할 수 있습니다.

비밀 정보는 예제에서 제외하고, 가급적 localhost 기본값을 사용해 주세요.


관련 링크

환경 변수: .env.example이 공식적인 목록입니다(소스가 읽는 전체 27개 변수). 정확한 정보는 grep -rhaoE "process\.env\.[A-Z_0-9]+" src/로 재생성할 수 있습니다. ONTOLOGY_API_URL과 FEAST_REPO_PATH는 소스 파일에서 읽지 않습니다.

라이선스

Apache-2.0 © MoleCare LTD

Available Tools

14 tools
assess_risk_from_factorsA
Read-only

Describe named educational skin-health factors from a list of factor IDs. Does not calculate a risk score or recommend urgency.

NameRequiredDescriptionDefault
riskFactorIdsYesArray of risk factor IDs (e.g., ['FAIR_SKIN', 'FAMILY_HISTORY', 'UV_EXPOSURE'])

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey readOnlyHint and openWorldHint, so the safety profile is covered. The description adds meaningful behavioral boundaries: it is educational, does not compute a risk score, and does not recommend urgency—all beyond what annotations provide. No contradiction with annotations.

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

Conciseness5/5

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

Two short sentences with no filler. The core function is front-loaded, and the critical limitation is stated immediately after, making the description highly scannable and easy to parse.

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 single-parameter read-only tool, the description covers purpose, input, and a key behavioral limitation. It does not describe the return format, but no output schema exists and the verb 'describe' implies descriptive text. Overall it is complete enough for an agent to invoke correctly, with a minor gap.

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?

Schema description coverage is 100%: the riskFactorIds parameter is fully documented with an example array. The description only refers generically to 'a list of factor IDs' and adds no new parameter-level detail, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('describe') and resource ('named educational skin-health factors'), and explicitly states what it does not do ('does not calculate a risk score or recommend urgency'). This clearly distinguishes it from sibling tools like get_user_risk_factors or classify_lesion_features, which imply different operations.

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?

The description makes usage context clear: use when you have factor IDs and need educational descriptions of those factors. It explicitly excludes risk scoring and urgency assessment, serving as a when-not condition. However, it does not name an alternative tool for those cases, so the guidance is strong but not fully explicit.

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

classify_lesion_featuresA
Read-only

Describe which ABCDE criteria were supplied for a lesion. Educational only — does not name a condition, assign a risk level, or recommend urgency.

NameRequiredDescriptionDefault
asymmetryNoIs the lesion asymmetric?
diameterMmNoDiameter in millimeters
hasChangedNoHas it changed over time?
multipleColorsNoDoes it have multiple colors?
irregularBorderNoDoes it have irregular borders?

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's educational-only framing adds context beyond the annotations. It explicitly discloses that the tool does not provide diagnostic conclusions, risk levels, or urgency recommendations, which is valuable behavioral context for an agent deciding whether to use this tool in a clinical scenario. The description does not contradict the annotations.

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

Conciseness5/5

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

Two sentences with no wasted words. The core purpose is stated first, followed by a clear boundary of what the tool does not do. Every sentence earns its place.

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 read-only, educational tool with 5 optional parameters and no output schema, the description is largely complete. It clarifies the educational scope and non-diagnostic nature, which is the most important contextual information. It could mention that all parameters are optional, but the schema already shows required: [], so the description need not repeat that. The lack of output schema means the agent won't know the return format, but for an educational description tool this is a minor gap.

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?

Schema description coverage is 100%, so the schema already documents all 5 parameters clearly. The description adds the overall context that these parameters are ABCDE criteria, but it does not add per-parameter meaning beyond what the schema provides. Baseline 3 is appropriate since the schema does the heavy lifting.

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?

The description states a specific verb ('Describe') and resource ('ABCDE criteria supplied for a lesion'), and clarifies it is educational only. It distinguishes itself from risk assessment tools by explicitly saying it does not name a condition, assign risk, or recommend urgency, which helps differentiate it from siblings like assess_risk_from_factors and get_mole_analysis.

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?

The description clearly indicates when to use this tool: when describing ABCDE criteria for a lesion in an educational context. It also provides exclusions by stating what it does NOT do (name a condition, assign risk, recommend urgency), which implicitly tells the agent not to use it for diagnosis or risk assessment. However, it does not explicitly name alternative tools for those purposes.

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

compare_molesA
Read-only

Compare two recorded mole photos. Reports observed differences only — not a diagnosis.

NameRequiredDescriptionDefault
moleIdYesThe mole's unique identifier
imageId1YesFirst image ID (older)
imageId2YesSecond image ID (newer)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and open-world assumptions. The description adds valuable behavioral context by stating 'Reports observed differences only — not a diagnosis', clarifying that the output is limited to observed differences and does not provide medical judgment. This goes beyond the annotations and sets proper expectations for the agent.

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

Conciseness5/5

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

The description is two sentences with no redundancy. It front-loads the action ('Compare two recorded mole photos') and immediately adds the key limitation ('not a diagnosis'). Every word earns its place, making it highly efficient.

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

Completeness3/5

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

The tool is relatively simple, and the schema covers all parameters. However, since there is no output schema, the description only vaguely mentions 'Reports observed differences' without specifying the output format (e.g., list of changes, textual summary). It also does not differentiate from the sibling get_mole_changes, which could lead to ambiguous tool selection. While the core purpose is clear, these gaps prevent a higher score.

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?

Schema coverage is 100%, and each parameter already has a clear description (e.g., imageId1 'First image ID (older)', imageId2 'Second image ID (newer)'). The tool description adds no additional parameter semantics, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function: 'Compare two recorded mole photos' – a specific verb and resource. It also distinguishes itself from diagnostic tools by noting 'not a diagnosis', which differentiates it from siblings like classify_lesion_features or assess_risk_from_factors. This makes the tool's purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies the usage context (comparing two photos of a mole) but does not explicitly mention when to use this tool versus alternatives like get_mole_changes, which might also track differences over time. There is no mention of exclusions or alternative routing, leaving the agent to infer the appropriate scenario.

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

get_condition_progressionA
Read-only

Get information about how a skin condition can progress. Shows potential progression paths (e.g., dysplastic nevus to melanoma).

NameRequiredDescriptionDefault
snomedCodeYesSNOMED CT code of the condition

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint/openWorldHint annotations already cover safety and open-world behavior. The description adds that paths are 'potential' and gives an example, which is useful but does not disclose return format, limitations, or how incomplete matches are handled.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action, and an illustrative example. No filler or redundant restatement of the tool name.

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 single-parameter, read-only lookup, the description gives enough context: it states the input purpose, the kind of output (potential progression paths), and an example. It doesn't specify pagination or formatting, but that's not necessary for this simple call.

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?

Schema coverage is 100% since the only parameter, snomedCode, is described. The description does little beyond confirming the condition is identified by a SNOMED CT code, so it mostly relies on the schema.

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

Purpose5/5

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

The description uses a specific verb and resource ('Get information about how a skin condition can progress') and gives a concrete example ('dysplastic nevus to melanoma'). This clearly differentiates it from sibling tools like get_condition_risk_factors by focusing on progression paths.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as lookup_medical_concept, get_condition_risk_factors, or search_medical_info. No selection criteria or exclusions are given.

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

get_condition_risk_factorsA
Read-only

Get risk factors associated with a specific condition. Returns factors like family history, skin type, UV exposure.

NameRequiredDescriptionDefault
snomedCodeYesSNOMED CT code of the condition

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds value by giving examples of the returned factors (family history, skin type, UV exposure), which informs the agent about the nature of the output without contradicting annotations.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the action and resource, followed by examples. No wasted words.

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

Completeness5/5

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

For a simple read-only lookup with one parameter and no output schema, the description provides sufficient information about what is returned (a list of risk factors with examples). The openWorldHint annotation covers non-exhaustiveness, and the tool is simple enough that no further details are needed.

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 input schema fully describes the single parameter snomedCode with a description. The tool description does not add additional semantic detail beyond that, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'risk factors associated with a specific condition', and specifies that it takes a condition code. This distinguishes it from sibling tools like get_user_risk_factors which focus on a user's risk profile rather than a condition.

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?

The description implies usage for a specific condition via SNOMED code, but does not explicitly name alternatives or exclusions. However, the context is clear enough that an agent would know to use this when they have a condition code and need its risk factors, as opposed to user-specific tools.

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

get_malignant_conditionsA
Read-only

Get a list of all malignant skin conditions in the ontology. Use for educational purposes about skin cancers.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description only needs to add behavioral context. It adds ontology-wide scope, but does not describe list contents, pagination, or any caveats about the returned data. This is adequate but not rich.

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?

Two short sentences, front-loaded with the core operation. The second sentence is slightly redundant by restating 'malignant skin conditions' as 'skin cancers,' so it is concise but not maximally tight.

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 parameterless read-only list tool, the description states what it returns and its purpose, and the lack of an output schema is mitigated by the simple list semantics. It could be slightly more complete by noting what fields or format the returned list contains.

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

Parameters4/5

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

The tool has zero parameters, so the input schema is fully documentative and no parameter explanations are needed. The description appropriately adds no parameter-specific details; the parameterless baseline of 4 applies.

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?

The description identifies a specific verb ('Get'), resource ('list of all malignant skin conditions'), and scope ('in the ontology'). It is distinguishable from sibling concept-search tools by emphasizing 'all malignant skin conditions,' though it does not explicitly name a sibling it is not.

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

Usage Guidelines3/5

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

It advises 'Use for educational purposes about skin cancers,' which gives an intended context but no when-not-to-use guidance and no comparison with alternatives such as lookup_medical_concept or search_medical_concepts. The usage guidance is present but not robust.

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

get_mole_analysisA
Read-only

Return recorded ABCDE feature measurements for a mole. Educational only — not a diagnosis or risk level.

NameRequiredDescriptionDefault
moleIdYesThe mole's unique identifier

TDQS

A3.6/5.0
Behavior3/5

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

The description adds the valuable context that data is 'recorded' and that output is for educational purposes only. Annotations already provide readOnlyHint=true, so the safety profile is covered. It does not describe return format or pagination, but that is less critical for a simple one-parameter getter.

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

Conciseness5/5

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

Two sentences, front-loaded with the operation and resource, and includes the critical educational caveat immediately. No filler or redundancy.

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?

Given the single parameter and read-only nature, the description sufficiently frames what the tool returns and its limitations. A brief note on output format would be a minor improvement, but nothing essential is missing for an agent to select and invoke it.

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 schema fully documents moleId as 'The mole's unique identifier' with 100% coverage. The description adds no extra parameter guidance, so it provides no value beyond the structured schema.

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?

The description uses a clear verb ('Return') and specifies the resource ('recorded ABCDE feature measurements for a mole'). The 'not a diagnosis or risk level' caveat helps separate it from risk-focused siblings like get_user_risk_factors, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when recorded ABCDE measurements are needed—and adds a clear boundary with 'Educational only — not a diagnosis or risk level.' However, it does not explicitly reference sibling tools or contrast cases (e.g., when to use get_mole_changes instead).

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

get_mole_changesA
Read-only

Return recorded appearance changes for a mole over time. Observations only — not a trend verdict.

NameRequiredDescriptionDefault
moleIdYesThe mole's unique identifier

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds useful context that the output consists of observations rather than a verdict, but does not disclose additional behavioral details such as ordering, absence of results, or output structure.

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

Conciseness5/5

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

Two short sentences with no filler. The core action and scope are front-loaded, and the exclusion of trend verdicts is stated immediately after, which is economical and effective.

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 one-parameter read-only tool with no output schema, the description adequately conveys what the tool returns and what it does not. It could mention output format or behavior on missing history, but the low complexity means nothing essential is missing.

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?

Schema description coverage is 100%, and the schema already documents moleId as 'The mole's unique identifier.' The description only references 'a mole' generically and adds no parameter-level meaning beyond the schema.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Return recorded appearance changes for a mole over time.' The qualifier 'Observations only — not a trend verdict' clearly distinguishes it from analysis-oriented siblings like get_mole_analysis or get_condition_progression.

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?

The description gives clear context: use this tool when you need raw recorded appearance changes over time, not an interpretive trend verdict. It implies but does not explicitly name an alternative for trend analysis, so it falls just short of full guidance.

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

get_user_molesA
Read-only

List a user's recorded moles and last photo dates. Educational records only — not a risk ranking.

NameRequiredDescriptionDefault
userIdYesThe user's unique identifier

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds a useful behavioral boundary: this is educational record data, not a risk ranking. It does not disclose details like pagination or image-date formatting, but for a simple read-only listing the key behavior is conveyed.

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

Conciseness5/5

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

Two short, information-dense sentences with no filler. The main action and resource are front-loaded, and the important 'educational only' caveat is placed at the end without bloating the description.

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 single-parameter read-only listing with no output schema, the description covers the core purpose and the important caveat. It could have briefly mentioned output ordering, pagination, or what 'last photo dates' means, but the essential information an agent needs to invoke it correctly is present.

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?

Schema coverage is 100%: userId is documented with type, pattern, maxLength, and description. The description's 'a user's' maps naturally to userId, but it adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description names a specific verb ('List') and a specific resource ('a user's recorded moles and last photo dates'). Adding 'Educational records only — not a risk ranking' distinguishes it from risk-oriented siblings like get_user_risk_factors and assess_risk_from_factors.

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?

The description clearly states what this tool is not for ('not a risk ranking'), which helps an agent avoid using it for risk assessment. However, it does not explicitly name alternative tools or state when to prefer them over this one.

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

get_user_risk_factorsA
Read-only

List named educational skin-health factors on a user profile. Does not calculate a risk score.

NameRequiredDescriptionDefault
userIdYesThe user's unique identifier

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish read-only and open-world behavior. The description adds meaningful context beyond that: the output is a list of named educational factorsasi and that no risk score is computed. This clarifies the tool's operational scope without contradicting the annotations.

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

Conciseness5/5

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

Single sentence with the core operation first and a key exclusion second. No filler or repetition of schema details.

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 simple one-parameter read-only list operation, the description is sufficient: it names the resource, the user scope, and the non-scoring behavior. It could be slightly more specific about the output shape, but the low complexity and explicit 'List ... factors' make this a minor gap.

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?

Schema coverage is complete for userId, including pattern and required status. The description only adds that the resource is user-specific, which is mild additional context. Baseline 3 is appropriate because the schema already carries the parameter semantics.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('named educational skin-health factors on a user profile'), and explicitly disambiguates from scoring tools by saying it does not calculate a risk score. This clearly distinguishes it from siblings like assess_risk_from_factors and get_condition_risk_factors.

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?

The description gives clear context: this tool lists factors rather than scoring them axes. The negative clause 'Does not calculate a risk score' signals when this tool is NOT appropriate. It does not explicitly name alternative siblings, but the exclusion is concrete enough for an agent to route correctly.

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

lookup_medical_conceptA
Read-only

Look up a medical concept by SNOMED CT code. Returns detailed information about skin conditions including severity and category. Use this to provide accurate medical terminology.

NameRequiredDescriptionDefault
snomedCodeYesSNOMED CT code (e.g., '372244006' for melanoma)

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description doesn't need to state that it's read-only. It adds the scope (skin conditions) and content (severity, category), but does not disclose potential limitations (e.g., only handles skin codes, behavior on invalid codes) or the return structure. It does not contradict annotations.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action and scope, followed by a brief usage note. Every word adds value, with no redundancy or filler. It is highly efficient and easy to scan.

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

Completeness3/5

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

With no output schema, the description must convey what the tool returns. It mentions 'detailed information about skin conditions including severity and category,' which gives a high-level view but lacks specifics like exact fields, formatting, or error handling. The scope (skin conditions) is stated but not justified, and no guidance is given for invalid codes or edge cases. The description is adequate but leaves room for ambiguity.

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 schema provides full documentation for snomedCode with an example, achieving 100% coverage. The description adds no extra detail about the parameter format, validation, or acceptable code ranges, so it relies on the schema. Baseline 3 is appropriate given complete schema coverage.

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

Purpose5/5

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

The description clearly states the action (look up), the resource (medical concept), and the key identifier (SNOMED CT code). It also specifies the domain (skin conditions) and the output content (severity, category), which distinguishes it from siblings like search_medical_concepts (text search) and map_snomed_to_icd10 (code mapping). The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description provides a usage context ('Use this to provide accurate medical terminology') but does not explicitly state when not to use it or how it compares to alternatives like search_medical_concepts or get_condition_risk_factors. It implies a read-only informational lookup but lacks exclusions or selection criteria.

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

map_snomed_to_icd10A
Read-only

Map a SNOMED CT code to ICD-10 diagnosis codes. Useful for understanding official diagnosis classifications.

NameRequiredDescriptionDefault
snomedCodeYesSNOMED CT code to map

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, which cover the read-only nature and potential incompleteness of mappings. The description adds only a minor note about 'official' classifications, which does not meaningfully extend behavioral context. It is consistent with the annotations but does not disclose additional behaviors such as output format or edge cases.

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

Conciseness5/5

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

The description is two short sentences with zero filler. The core action and target are front-loaded in the first sentence, and the second sentence adds a brief use case. Every word earns its place.

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?

Given the simplicity (one required parameter, no output schema, and annotations covering read-only and open-world behavior), the description is mostly sufficient. It explains the primary function and a typical use case. However, it does not describe the return format or note that some SNOMED codes may not map, though these are minor given the tool's straightforward nature.

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 schema description for 'snomedCode' ('SNOMED CT code to map') is complete, covering 100% of the parameter. The tool description adds no extra information about the parameter beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose5/5

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

The description clearly states a specific verb ('Map') and resource ('SNOMED CT code to ICD-10 diagnosis codes'). This is unambiguous and distinct from sibling tools like lookup_medical_concept or search_medical_concepts, which focus on retrieving concepts rather than cross-coding. The purpose is immediately clear.

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

Usage Guidelines3/5

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

The description provides a mild usage hint ('Useful for understanding official diagnosis classifications') but does not explicitly state when to use this tool over alternatives, nor does it name any sibling tools. Usage context is implied but not clearly delineated, leaving the agent to infer when mapping is appropriate.

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

search_medical_conceptsA
Read-only

Search for medical concepts by name or description. Returns matching SNOMED CT concepts for dermatology conditions.

NameRequiredDescriptionDefault
queryYesSearch term (e.g., 'melanoma', 'nevus', 'mole')

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and non-exhaustiveness. The description adds that results are SNOMED CT concepts specifically for dermatology, and that search matches by name or description—useful context beyond the annotations. No contradiction.

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

Conciseness5/5

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

Two sentences with zero filler. The core action and scope are front-loaded, and every clause adds information. Ideal length for a tool with a single parameter.

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 simple one-parameter search tool, the description covers the return format (SNOMED CT concepts) and domain (dermatology). It lacks details on result limits or pagination, but given the openWorldHint and simplicity, this is a minor gap. The absence of an output schema is partially mitigated by the description's high-level return type.

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

Parameters4/5

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

Schema coverage is 100%, so the query parameter is already well described with examples. The description adds the semantic detail that the search can match by both name and description, which is not present in the schema. This enriches the parameter understanding.

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

Purpose5/5

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

The description states a specific verb ('Search') and resource ('medical concepts'), and narrows the scope to SNOMED CT and dermatology. This clearly differentiates it from sibling tools like get_user_moles (personal data), map_snomed_to_icd10 (mapping), and lookup_medical_concept (exact lookup).

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

Usage Guidelines3/5

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

The description implies a free-text search use case but does not explicitly contrast it with alternatives such as lookup_medical_concept (exact ID) or search_medical_info (broader scope). Given the abundance of sibling tools, explicit guidance on when to prefer this tool over others would be valuable, but its basic purpose is clear.

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

search_medical_infoA
Read-only

Search the medical knowledge base for skin health information. Use this to provide accurate educational content about skin conditions, ABCDE criteria, and prevention tips.

NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'asymmetry', 'melanoma', 'sunscreen')

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already communicate read-only intent. The description adds minimal behavioral context beyond the subject matter — it doesn't mention result formats, ordering, or limits. No contradiction.

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

Conciseness5/5

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

Two short sentences, front-loaded with action and domain, examples included. No dead weight.

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

Completeness5/5

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

This is a simple read-only search with one well-described parameter and no output schema; the description states intended use (educational content for skin conditions) and scope, which is sufficient for an agent to pick it correctly. Slight ambiguity vs 'search_medical_concepts' but the skin-health qualifier resolves it.

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?

Schema covers the only parameter with a description and examples (100% coverage). The description adds no additional parameter detail, so baseline 3 applies.

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?

The description uses a specific verb ('Search') and clearly identifies the resource (medical knowledge base for skin health information) with concrete examples (ABCDE criteria, prevention tips). The 'skin health' scope helps distinguish it from the sibling search_medical_concepts, though it does not explicitly name competitors.

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?

States a clear use case: to provide accurate educational content about skin conditions and related criteria. It doesn't explicitly state when to use search_medical_concepts or other alternatives, but the skin-specific context makes the intended use evident.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 44 tool updatesv1.1.0
    • Removedcheck_server_health
    • Removedclear_cache
    • Removedcompare_model_runs
    • Changedcompare_moles6 fields changed
      • addedInput schema / properties / imageId1 / maxLength
        Added value: +64
      • addedInput schema / properties / imageId1 / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
      • addedInput schema / properties / imageId2 / maxLength
        Added value: +64
      • addedInput schema / properties / imageId2 / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
      • addedInput schema / properties / moleId / maxLength
        Added value: +64
      • addedInput schema / properties / moleId / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • Removedget_all_apps_status
    • Removedget_app_errors
    • Removedget_app_metrics
    • Removedget_app_status
    • Removedget_app_store_status
    • Removedget_app_versions
    • Removedget_backup_history
    • Removedget_connection_pools
    • Removedget_database_metrics
    • Removedget_database_status
    • Removedget_deployment_status
    • Removedget_deployments
    • Removedget_ec2_health
    • Removedget_ec2_instance
    • Removedget_ec2_instances
    • Removedget_ec2_metrics
    • Removedget_feature_freshness
    • Removedget_feature_store_stats
    • Removedget_feature_view_details
    • Removedget_feature_views
    • Removedget_kubernetes_status
    • Removedget_mlflow_experiments
    • Removedget_mlflow_runs
    • Removedget_mobile_api_status
    • Removedget_model_version
    • Changedget_mole_analysis2 fields changed
      • addedInput schema / properties / moleId / maxLength
        Added value: +64
      • addedInput schema / properties / moleId / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • Changedget_mole_changes2 fields changed
      • addedInput schema / properties / moleId / maxLength
        Added value: +64
      • addedInput schema / properties / moleId / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • Removedget_online_features
    • Removedget_pipeline_runs
    • Removedget_pipeline_summary
    • Removedget_registered_models
    • Removedget_releases
    • Removedget_service_health
    • Removedget_slow_queries
    • Removedget_system_health
    • Removedget_table_stats
    • Removedget_training_runs
    • Changedget_user_moles2 fields changed
      • addedInput schema / properties / userId / maxLength
        Added value: +64
      • addedInput schema / properties / userId / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • Changedget_user_risk_factors2 fields changed
      • addedInput schema / properties / userId / maxLength
        Added value: +64
      • addedInput schema / properties / userId / pattern
        Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • Removedget_web_app_status
  2. 53 tool updatesv1.0.2
    • First observedassess_risk_from_factors
    • First observedcheck_server_health
    • First observedclassify_lesion_features
    • First observedclear_cache
    • First observedcompare_model_runs
    • First observedcompare_moles
    • First observedget_all_apps_status
    • First observedget_app_errors
    • First observedget_app_metrics
    • First observedget_app_status
    • First observedget_app_store_status
    • First observedget_app_versions
    • First observedget_backup_history
    • First observedget_condition_progression
    • First observedget_condition_risk_factors
    • First observedget_connection_pools
    • First observedget_database_metrics
    • First observedget_database_status
    • First observedget_deployment_status
    • First observedget_deployments
    • First observedget_ec2_health
    • First observedget_ec2_instance
    • First observedget_ec2_instances
    • First observedget_ec2_metrics
    • First observedget_feature_freshness
    • First observedget_feature_store_stats
    • First observedget_feature_view_details
    • First observedget_feature_views
    • First observedget_kubernetes_status
    • First observedget_malignant_conditions
    • First observedget_mlflow_experiments
    • First observedget_mlflow_runs
    • First observedget_mobile_api_status
    • First observedget_model_version
    • First observedget_mole_analysis
    • First observedget_mole_changes
    • First observedget_online_features
    • First observedget_pipeline_runs
    • First observedget_pipeline_summary
    • First observedget_registered_models
    • First observedget_releases
    • First observedget_service_health
    • First observedget_slow_queries
    • First observedget_system_health
    • First observedget_table_stats
    • First observedget_training_runs
    • First observedget_user_moles
    • First observedget_user_risk_factors
    • First observedget_web_app_status
    • First observedlookup_medical_concept
    • First observedmap_snomed_to_icd10
    • First observedsearch_medical_concepts
    • First observedsearch_medical_info

TDQS

A4/5.0

Scored across 14 tools

Disambiguation4/5

Tools are largely distinct with clear purposes, but there is some potential overlap between search_medical_info and search_medical_concepts (both retrieve medical knowledge) and between get_mole_analysis and classify_lesion_features (both describe ABCDE features). However, the descriptions clarify the differences—one is for stored mole records, the other for supplied lesion features.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., get_user_moles, search_medical_info, lookup_medical_concept). The verbs (get, search, compare, lookup, map, assess, classify) are specific and the pattern is uniform, making the API predictable.

Tool Count5/5

14 tools is well within the ideal 3-15 range and each tool serves a distinct function within the skin health education domain. The scope feels appropriately sized—not too sparse, not overwhelming.

Completeness4/5

The tool set covers the core workflows: viewing user mole data, analyzing changes, retrieving medical info, looking up concepts, mapping codes, and understanding risk factors. A minor gap is the lack of tools for adding/updating mole records, but given the educational (non-CRUD) purpose, this is acceptable. Also, there is no explicit 'get_mole_photo' tool, though compare_moles implies photo access.

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP-compatible clients to discover and use The Holistic Care's approved public mindfulness resources, including interactive games, guided audio practices, research summaries, a glossary, and the public PanchaVikas framework, through read-only tools and static resources. No authentication is required, and it wraps a public REST API without creating, modifying, or deleting anything.
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP-compatible clients and LLM agents to perform full CRUD operations on FHIR resources, query and manipulate clinical data through natural-language prompts, and use document ingestion, semantic search, and terminology lookup against a FHIR backend.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM-based agents and MCP-compatible clients to perform CRUD operations on healthcare resources, query clinical data with natural-language prompts, and use semantic document search, LOINC terminology lookup, and OAuth2-backed API access.
    -