Skip to main content
Glama

DoctorVerify — インド人医師を検証するためのMCPサーバー

インド人医師の登録者であると主張する人物が実際に登録されているかどうかを、国家医療委員会(National Medical Commission)のライブデータを使って検証します。同時に、何が公式で、何が非文書化で、何が手動フォールバックなのかを正確に正直に示します。使用前に「ここでの検証の実際の仕組み」をお読みください。このREADMEで最も重要な部分です。

含まれるもの

プリミティブ

名前

機能

ツール

search_doctor_registration

氏名、登録番号、州医療評議会、および/または年度によるインド医師登録簿のライブ検索

ツール

get_doctor_profile

検索結果の1件に対するライブの完全プロフィール(資格、大学、追加資格)

ツール

check_blacklist

NMCの現在の停職・除籍医師リストのライブチェック

ツール

registration_lookup_guide

手動フォールバック: ライブ検索が失敗した場合や一致が曖昧な場合の正確な公式検索手順

ツール

flag_lookalike_domain

リンクを公式ドメインおよび既知の偽装サイトと照合する

リソース

doctor-verification://official-sources

全体像 — 個別検索、新しい登録簿、および大規模な自動チェックのための2つの公認経路

プロンプト

verify_doctor_checklist

ライブツールを連鎖させ、その後ブラックリスト、資格照合を行う「この医師を適切に検証する」テンプレート

Related MCP server: Doktor MCP Server

ここでの検証の実際の仕組み

公式登録簿は第三者向けのAPIを公開していません — しかし、これが機能するためにはその必要はありません。権威ある情報源は国家医療委員会の**インド医師登録簿(IMR)**であり、一般公開はnmc.org.inで検索できます。その検索ページ自体が、クライアントサイドJavaScriptから直接、公開・認証不要のJSONエンドポイント(nmc.org.in/MCIRest/open/...)を呼び出して結果をレンダリングしています — これは推測ではなく、そのページ自身のスクリプトを読んで発見されたものです。search_doctor_registration、get_doctor_profile、check_blacklistは同じエンドポイントを呼び出すため、登録、資格、大学、現在の停職ステータスという実際のIMRデータを返します。

このREADMEの以前のバージョンでは、nmc.org.inのrobots.txtが自動アクセスを禁止していると主張していました。これは確認されたところ誤りでした。そのパスのファイルは標準形式のrobots.txtではなく、名前付きSEOクローラー(Ahrefs、Majestic、Semrushなど)の短いリストをUser-Agentでブロックする、設定ミスのあるApacheスニペットであり、一般的なDisallowディレクティブはありませんでした。利用規約もこれを禁止していません。これが、以前はできなかったライブ検証をここで合理的にした変更点です。

正直な注意事項: このエンドポイントは依然としてNMCによる非文書化・非サポートです。形状が変わったり、レート制限がかかったり、予告なく消えたりする可能性があります — 背後にSLA、バージョニング、サポート契約はありません。バルクパイプラインではなく、読み取り専用の単一ルックアップトラフィックとして扱ってください(これらのツールは意図的に結果数を上限し、自動ページネーションはしません)。registration_lookup_guideは、ライブ経路が壊れた場合や結果がおかしい場合のフォールバックとして、ツールセットに意図的に残されています。

知っておく価値のある実際の罠: この調査中に、本物のnmc.org.inから1文字ずれたnmcn.org.inが「インド人医師を検証」検索で上位表示され、国家医療委員会が運営していないにもかかわらずIMR風の検索コンテンツを表示していることが判明しました。flag_lookalike_domainはこれを名前で捕捉し、馴染みのない他のものは安全と仮定せずに未審査としてフラグを立てます。病院、エージェント、広告からのリンクをクリックするのではなく、常に自分でnmc.org.inと入力することを優先してください。また、ライブに見える結果でも偽サイトから来る可能性があることを忘れないでください。

大規模な自動検証が必要な場合 — たとえば、一人ずつ手作業でチェックするのではなく、多くの医師をヘルステックプラットフォームにオンボーディングする場合 — さらに2つの経路があり、どちらも公式に認可されており(上記のエンドポイントとは異なり)、どちらも週末プロジェクトより重いものです:

  1. Ayushman Bharat Digital Mission(ABDM)、Healthcare Professional Registry(HPR)。 医師向けの政府自身のデジタルIDシステムで、実際の文書化されたOAuth2 APIとsandbox.abdm.gov.inのサンドボックスを備えています。これは、認定された医療システム統合(M1モジュール)の一部として開業医を登録・確認するために構築されており、匿名の一回限りの検索用ではないため、オンボーディングは本格的な統合プロジェクトです — クライアントID/シークレット、認証、その他すべて。

  2. 商用KYC/検証ベンダー(例: Surepass、IDfy)。複数の企業がNMCバックの医師検証を有料のサポート付きAPI製品として再販しています。本番利用には実用的な選択肢となり得ますが、各ベンダーの実際のデータソース、鮮度、条件を自分で評価してください — このプロジェクトは特定のものを推奨しません。

セットアップ

Python 3.10+とuvが必要です。

./setup.sh

これは単なるスクリプトではなく、適切なインストール可能なパッケージです(src/doctor_verify_mcp/、pyproject.toml)。./setup.shはuv syncを実行し、.venvを作成して(.python-versionでPython 3.10に固定)、パッケージとそのdev依存グループ(pytest)を編集可能モードでインストールします。uvがない場合は、python3 -m venv .venv && source .venv/bin/activate && pip install -e '.[dev]'にフォールバックしてください(pipのバージョンが依存グループをまだ理解しない場合は、[dependency-groups]から[project.optional-dependencies]へのミラーを追加してください)。

実行方法

uv run mcp dev src/doctor_verify_mcp/server.py

出力されたInspector URLを開きます。名前だけでsearch_doctor_registrationを試し、その後登録番号またはstate_councilで絞り込みます。結果からdoctor_idを取得してget_doctor_profileに渡します。引数なしでcheck_blacklistを試して、現在の完全なリストを確認します。flag_lookalike_domainをnmcn.org.inとnmc.org.inで試して比較します。doctor-verification://official-sourcesリソースで全体像を一箇所で確認します。

インストール後(編集可能またはビルド済みホイールから)、パッケージはstdio上でサーバーを直接実行するコンソールスクリプトも公開します(Inspectorなし、実際のホストへの配線用): uv run doctor-verify-mcp。

ビルド方法

uv build

dist/doctor_verify_mcp-<version>-py3-none-any.whlと対応する.tar.gz sdistを生成し、pip install dist/doctor_verify_mcp-*.whlでどこにでもインストールできます。

テスト方法

uv run pytest

3つのライブツールのテストは、開発中にキャプチャしたNMCの実際のレスポンス形状でHTTPレイヤー(doctor_verify_mcp.server._http_client)をモックするため、スイートは実行のたびにnmc.org.inにアクセスしません。

実際のホストに接続する

実際の統合を構築する場合(例: これを医師登録/オンボーディングフローに配線する)? 完全なツールリファレンス、推奨検証フロー、エラーハンドリング契約、ライブエンドポイントの既知の癖については、INTEGRATION.mdを参照してください。

他のローカルMCPサーバーと同じパターンです — ホストはサーバーを子プロセスとしてstdio上で実行するため、すべてのホストは絶対パスを持つ同じ起動コマンドを必要とします。パッケージがインストールされると、doctor-verify-mcpコンソールスクリプトが、ホストをserver.pyに直接向ける代わりの最もクリーンな起動ターゲットです。

Claude Desktop: uv run mcp install src/doctor_verify_mcp/server.pyを実行し、アプリを完全に終了して再度開きます。

Claude Code:

claude mcp add doctorverify -- uv run --with "mcp[cli]" mcp run /absolute/path/to/src/doctor_verify_mcp/server.py

Cursor(.cursor/mcp.json)とVS Code(.vscode/mcp.json)も同じcommand/args形状に従います — 正確なJSONが必要な場合は、以前のプロジェクトのREADMEを参照してください。

拡張方法

  • 州評議会が実際に使用する形式がわかったら、登録番号の形状を検証するツールを追加します — 州によってかなり異なるため、このプロジェクトは推測しません。

  • 遭遇したらKNOWN_LOOKALIKESにエントリを追加します。

  • MCIRestエンドポイントが形状を変えたり自動トラフィックをブロックし始めた場合、ライブツールは静かに失敗するのではなく、registration_lookup_guideを指す明確なエラーをすでに発生させます — 医師が存在しないと仮定する前にまずそこを確認してください。

  • ABDM/HPRルートを選ぶ場合、実際の文書化されたAPIを呼び出すverify_hpr_idツール(自分のクライアント資格情報を使用し、ソースにハードコードしない)は、このプロジェクトが現在使用している非文書化エンドポイントに代わるサポートされた選択肢を提供します。

  • IMRが結果を表示せず、フォールバックが特定の州の評議会サイトを直接確認することである場合に備えて、州医療評議会ごとに直接リンク付きのリソースを追加します。

Available Tools

5 tools
check_blacklistA

Check the live NMC list of suspended/struck-off doctors.

A doctor can have a completely genuine registration and still be
currently suspended -- search_doctor_registration alone won't show that,
this does. Provide a filter, or nothing to get the full current list
(nationally, this is normally only a few dozen entries).
ParametersJSON Schema
NameRequiredDescriptionDefault
doctor_nameNo
state_councilNo
registration_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYes
entriesYes
is_listedYes
query_noteYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of disclosing side effects. The word 'check' implies a read-only operation, but it doesn't explicitly state that the tool makes no changes or that data is sourced live. It adds context on the nature of the data (suspended/struck-off) but stops short of explicit safety declarations.

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 paragraphs with no fluff. The first sentence states the core purpose; the second adds differentiation and usage guidance. It is front-loaded and 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?

The tool has an output schema, so return structure is covered. The description covers purpose, differentiation, and the optional filter behavior. It doesn't mention response size limits or failure handling, but these are minor given the simplicity and the presence of an output schema.

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 descriptions already cover each parameter (doctor_name, state_council, registration_number) with brief fields. The tool description adds only the general note that filters are optional ('Provide a filter, or nothing'), which is helpful but doesn't elaborate on individual parameters. Schema coverage is listed as 0%, but the description provides some compensation via the optionality insight.

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 and resource: 'Check the live NMC list of suspended/struck-off doctors.' It also distinguishes the tool from a sibling, 'search_doctor_registration alone won't show that, this does,' making the 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 Guidelines4/5

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

Provides clear context on when to use it: for checking suspension beyond registration, and mentions 'Provide a filter, or nothing to get the full current list.' It doesn't explicitly list exclusions or alternative tools, but the contrast with search_doctor_registration gives strong directional guidance.

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

flag_lookalike_domainB

Check whether a link is the official NMC domain or a known lookalike.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_or_domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
domainYes
is_officialYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It does indicate a non-destructive classification action ('Check whether') rather than a mutation. However, it does not clarify whether the check is live, cached, or limited to a built-in list of known lookalikes, leaving the behavior only partially transparent.

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, front-loaded sentence with no filler or redundancies. Every word contributes to communicating the tool's core purpose, making it easy for an agent to parse quickly.

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?

For a one-parameter tool with an output schema, the description is nearly sufficient: an agent can infer the input and the classification task. It falls short of complete because it omits accepted input formats and any relationship to sibling tools such as check_blacklist.

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

Parameters2/5

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

The sole parameter url_or_domain has 0% schema description coverage, so the description must clarify the expected value. It only paraphrases it as 'link', and never states whether a bare domain, full URL with protocol, path, or subdomain is acceptable. This leaves real format ambiguity.

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 ('Check whether') and a clear resource: the official NMC domain versus known lookalikes. This also distinguishes it from siblings such as search_doctor_registration and get_doctor_profile, which are about registration records rather than URL authenticity.

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 intended use is only implied; the description does not explain when to prefer this tool over a sibling such as check_blacklist, nor does it state when not to use it. There are no explicit scenarios or alternative routing cues.

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

get_doctor_profileA

Get the full IMR profile for one specific match from search_doctor_registration.

Not a general search -- this is the live "View" detail for an
already-found doctor_id + registration_number pair, showing qualification,
college, university, and additional qualifications for a closer match
check. Deliberately excludes personal contact fields the underlying
record also contains (date of birth, phone, email, home address) --
those aren't needed to verify a registration is genuine, and returning
them would turn a verification lookup into a PII source.
ParametersJSON Schema
NameRequiredDescriptionDefault
doctor_idYesdoctor_id from a search_doctor_registration match.
registration_numberYesRegistration number, if you have one.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
sourceYes
collegeYes
universityYes
parent_nameYes
qualificationYes
state_councilYes
blacklist_flagYes
registration_dateYes
qualification_yearYes
registration_numberYes
additional_qualificationsYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It transparently discloses that it deliberately excludes personal contact fields (phone, email, address) and explains the reason (to avoid turning a verification lookup into a PII source). This reveals important behavioral traits about the output.

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 compact and well-organized. It leads with the primary purpose, then provides essential context about usage and exclusions. No filler or redundant statements; every sentence contributes meaning.

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?

The description covers what the tool returns (qualification, college, university, additional qualifications), what it excludes (personal contact fields) and why, and when to use it. Since an output schema exists, the description need not detail return values. It is well-rounded and sufficient for an agent to decide usage.

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 schema already provides descriptions for both parameters ('doctor_id from a search_doctor_registration match', 'registration_number, if you have one'). The tool description adds value by clarifying that these form a pair and are from an already-found match, reinforcing their mutual dependency, but this is a moderate addition 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?

Clearly states the tool's action (Get the full IMR profile) and resource (one specific match from search_doctor_registration). It also explicitly distinguishes itself from a general search and mentions it's for an already-found pair, providing clear differentiation from sibling tools.

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

Usage Guidelines5/5

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

The description specifies when to use the tool: for an already-found doctor_id + registration_number pair, to check a match more closely. It also contrasts with search_doctor_registration, indicating that this is not a general search, giving clear usage context.

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

registration_lookup_guideA

Get the correct, official manual steps to verify an Indian doctor's registration.

This is the fallback path: use search_doctor_registration and check_blacklist
for a real, live answer. Reach for this tool instead when those fail, look
wrong, or you'd rather double-check by hand -- it hands back exactly where
and how to search nmc.org.in yourself rather than an automated result.
ParametersJSON Schema
NameRequiredDescriptionDefault
doctor_nameNo
state_councilNo
registration_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cautionYes
also_checkYes
search_urlYes
how_to_searchYes
fallback_navigationYes

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral burden. It explains that this tool returns manual lookup instructions rather than an automated result, which is a meaningful disclosure of behavior. It could add more detail about how the optional inputs shape the returned steps, but the core behavior is clearly communicated.

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 concise and front-loaded: the primary purpose appears in the first sentence, and the fallback role and usage conditions appear immediately after. There is little wasted text and the structure supports quick agent comprehension.

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?

The description accurately scopes the tool, confirms it is not a live lookup, and names the relevant sibling tools. Since the parameters are optional and described in the schema, the description is complete enough for an agent to decide whether to call it, though a note on how each parameter influences the returned guide would raise it further.

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 description itself does not add per-parameter guidance, but the input schema already describes all three optional parameters meaningfully. The parameter semantics is therefore adequate, but the description does not go beyond the schema to clarify edge cases or required formats.

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 action and resource: get the correct, official manual steps to verify an Indian doctor's registration on nmc.org.in. It also clearly differentiates itself from sibling live-lookup tools by calling itself the fallback path rather than an automated result.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool versus alternatives: use search_doctor_registration and check_blacklist for real, live answers, and use this guide when those fail, look wrong, or when a manual double-check is preferred. This gives an agent actionable routing criteria.

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

search_doctor_registrationA

Search the live Indian Medical Register and return real matches.

Provide at least one of doctor_name or registration_number. This calls the
same public JSON endpoint nmc.org.in's own search page uses -- a real, live
lookup, not a guide. That endpoint is undocumented and unsupported by NMC,
so treat a request failure as "try registration_lookup_guide instead," not
as "the doctor doesn't exist."

Quirk worth knowing: NMC's backend 500s on any name value containing a
space (confirmed against the live endpoint -- a bug in their server, not
a validation rule of ours). A multi-word doctor_name is narrowed to its
most distinctive single word before being sent, and every match comes
back with a name_match flag so you can still tell whether the full name
actually lines up.

A registration number match alone doesn't mean the practitioner is
currently in good standing -- always also call check_blacklist.
ParametersJSON Schema
NameRequiredDescriptionDefault
doctor_nameNo
state_councilNo
registration_numberNo
year_of_registrationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourceYes
cautionYes
matchesYes
returnedYes
truncatedYes
query_noteYes
total_matchesYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the endpoint is undocumented and unsupported, the backend 500s on names with spaces, the narrowing workaround, the name_match flag, and the caveat that a registration match alone doesn't imply good standing. This is exceptionally transparent.

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 multi-sentence but every sentence delivers essential information: purpose, usage constraint, failure mode, quirk, and follow-up action. It is well-structured, front-loaded with the core purpose, and avoids fluff or repetition.

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 tool with a live external dependency, undocumented endpoint, and known server bugs, the description covers all necessary operational details: error handling, input quirks, output interpretation (name_match flag), and cross-tool interactions (check_blacklist). Nothing an agent needs to invoke it correctly is missing.

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 description adds meaningful semantics for doctor_name (space handling and narrowing to a distinctive single word) and for registration_number (that a match doesn't imply good standing, requiring check_blacklist). It does not add extra meaning for state_council or year_of_registration, but the schema already provides basic descriptions. Since schema description coverage is 0%, the description compensates for the critical parameters but not all.

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 ('Search'), names the resource ('live Indian Medical Register'), and clarifies it returns 'real matches' rather than a guide. It explicitly contrasts with registration_lookup_guide by stating this is a live lookup, which differentiates it from that sibling.

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

Usage Guidelines5/5

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

The description explicitly requires 'at least one of doctor_name or registration_number'. It provides clear guidance on failure handling ('treat a request failure as try registration_lookup_guide instead'), and mandates a complementary action ('always also call check_blacklist'). No ambiguity about when to use this tool.

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. 5 tool updatesv0.1.0
    • First observedcheck_blacklist
    • First observedflag_lookalike_domain
    • First observedget_doctor_profile
    • First observedregistration_lookup_guide
    • First observedsearch_doctor_registration

TDQS

A4.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: live register search, blacklist check, profile detail, manual fallback guide, and domain safety check. There is no real overlap, and the descriptions reinforce the boundaries between search, blacklist, and guide.

Naming Consistency4/5

Most tool names follow a clear verb_noun pattern in snake_case: check_blacklist, flag_lookalike_domain, search_doctor_registration, get_doctor_profile. The one outlier is registration_lookup_guide, which is a noun phrase rather than a verb-led name, making the convention mostly but not fully consistent.

Tool Count5/5

Five tools is a well-scoped set for a doctor verification server. Each tool addresses a distinct part of the verification workflow without redundancy or bloat.

Completeness5/5

The tool set covers the core verification lifecycle: live register search, blacklist screening, detailed profile retrieval, a manual fallback guide, and domain legitimacy checking. No obvious dead ends or missing operations for the stated purpose of verifying an Indian doctor's registration.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to Indian healthcare knowledge bases including 500,000+ branded drugs and 180+ treatment protocols from authoritative institutions like ICMR, enabling AI responses grounded in verified medical information specific to the Indian healthcare context.
    144 PyPI
    19
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search the doktor.mx directory for over 56,000 verified doctors and medical specialists across Mexico. It provides tools for verifying professional licenses, finding specialists by symptoms or conditions, and checking medical insurance compatibility.
    10
    58 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for querying Brazilian Federal Council of Medicine (CFM) registration data from official sources. It provides a read-only tool to consult medical registrations via natural language.
    MIT