Skip to main content
Glama

Medical Knowledge MCP Server

MCP (Model Context Protocol) server cho Medical Knowledge Base với tính năng theo dõi file real-time.

Tổng quan

Server này cho phép Claude Desktop kết nối với knowledge base y tế cục bộ (99+ markdown files) và tương tác như thể bạn đang sử dụng Claude Projects với Files.

Đặc điểm chính

Auto-loading Knowledge Map - Claude tự động "biết" nội dung toàn bộ knowledge base ✅ Real-time File Watching - Tự động phát hiện files mới trong 2 giây ✅ 6 Smart Tools - File access, search, health scoring, SMART cards, care plans, refresh ✅ 3 Reusable Prompts - Templates cho workflows phổ biến ✅ Zero Maintenance - Không cần manual refresh khi thêm files mới

Knowledge Base Structure

MD-Knowledge-Base/
├── CMO - HEALTH OVERVIEW (31 files)
│   ├── Scoring framework với 150 parameters
│   ├── 24-cell health matrix (8 systems × 3 domains)
│   └── Health dashboard specifications
├── CMO - PERFORMANCE MEDICINE (20 files)
│   ├── 13 integrated medical domains
│   ├── Care planning methodology
│   └── Life stage templates
└── CMO - SMART SYSTEM (48 files)
    ├── ~580 medical cards (medications, labs, imaging)
    └── ~391 behavioral cards (nutrition, movement, recovery)

Related MCP server: MedAdapt Content Server

Cài đặt

Yêu cầu

Bước 1: Cài đặt Dependencies

Mở terminal trong thư mục medical-knowledge-mcp:

npm install

Dependencies sẽ được cài:

  • @modelcontextprotocol/sdk - MCP SDK chính thức

  • chokidar - File system watcher

  • zod - Schema validation

  • typescript - TypeScript compiler

Bước 2: Build Project

npm run build

Lệnh này sẽ compile TypeScript sang JavaScript trong folder build/.

Bước 3: Kiểm tra Build

Sau khi build, cấu trúc folder sẽ như sau:

medical-knowledge-mcp/
├── build/           # ✓ Compiled JavaScript
├── src/             # TypeScript source
├── package.json
└── tsconfig.json

Cấu hình Claude Desktop

Tìm file cấu hình

Windows:

%APPDATA%\Claude\claude_desktop_config.json

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Linux:

~/.config/Claude/claude_desktop_config.json

Thêm cấu hình MCP

Mở file claude_desktop_config.json (tạo mới nếu chưa có) và thêm:

{
  "mcpServers": {
    "medical-knowledge": {
      "command": "node",
      "args": [
        "d:\\Compass_Coding\\MD Knowledge Base\\medical-knowledge-mcp\\build\\index.js"
      ],
      "env": {
        "KNOWLEDGE_BASE_PATH": "d:\\Compass_Coding\\MD Knowledge Base\\MD-Knowledge-Base"
      }
    }
  }
}

⚠️ Quan trọng: Thay đổi đường dẫn cho phù hợp với máy bạn!

Khởi động lại Claude Desktop

  1. Thoát hoàn toàn Claude Desktop (không chỉ đóng cửa sổ)

  2. Khởi động lại Claude Desktop

  3. Chờ vài giây để MCP server kết nối

  4. Kiểm tra icon MCP ở góc dưới bên phải (hình búa nhỏ 🔨)

  5. Click icon để xem MCP servers đang chạy

Cấp quyền (lần đầu)

Claude Desktop sẽ hiển thị dialog yêu cầu permission:

  • ✓ Approve permission để MCP server có thể truy cập files


Cách sử dụng

Trải nghiệm tự nhiên (giống Claude Projects)

Sau khi kết nối, bạn có thể hỏi Claude trực tiếp mà không cần yêu cầu search:

✅ Tốt:

"Giải thích cách tính composite health score"

❌ Không cần:

"Search for composite health score trong knowledge base"

Claude sẽ tự động biết có gì trong knowledge base và trả lời ngay.

Các câu hỏi ví dụ

1. Tổng quan Knowledge Base

"Có bao nhiêu files trong knowledge base?"
"Liệt kê tất cả files trong CMO - HEALTH OVERVIEW"
"Tóm tắt nội dung 3 folders chính"

2. Hỏi về Health Scoring Framework

"Giải thích 24-cell health matrix"
"Cách tính điểm cho cardiovascular system"
"150 MVP parameters là gì?"

3. SMART Cards

"Có những SMART cards nào cho bệnh nhân đái tháo đường?"
"Liệt kê behavioral cards về dinh dưỡng"
"Giải thích sự khác biệt giữa medical cards và behavioral cards"

4. Performance Medicine

"Giải thích Capacity, Resilience, Flexibility"
"13 medical domains là gì?"
"Care plan template cho người lớn tuổi"

5. Sử dụng Tools (khi cần)

Tools sẽ được Claude tự động gọi, nhưng bạn cũng có thể yêu cầu explicitly:

Calculate Health Score:

"Tính điểm sức khỏe cho các thông số sau:
- HbA1c: 7.2
- SBP: 140
- DBP: 90
- LDL: 130
- HDL: 45"

Recommend SMART Cards:

"Gợi ý SMART cards cho bệnh nhân cao huyết áp"

Generate Care Plan:

"Tạo care plan cho bệnh nhân:
- Tuổi: 65
- Bệnh: hypertension, type 2 diabetes
- Mục tiêu: giảm cân, kiểm soát đường huyết"

Tools Reference

1. get_file_content

Mục đích: Đọc toàn bộ nội dung một file cụ thể

Parameters:

  • filename (string, required): Tên file (vd: "PROJECT_ARCHITECTURE.md")

  • folder (string, optional): Folder để thu hẹp tìm kiếm

Ví dụ:

"Đọc file COMPOSITE_SCORING_v2.md"

2. search_files

Mục đích: Tìm kiếm keyword trong tất cả files

Parameters:

  • query (string, required): Từ khóa tìm kiếm

  • folder (enum, optional): "all" | "CMO - HEALTH OVERVIEW" | ...

  • maxResults (number, optional): Số kết quả tối đa (default: 10)

Ví dụ:

"Tìm tất cả thông tin về 'z-score normalization'"

3. calculate_health_score

Mục đích: Tính điểm sức khỏe theo framework

Parameters:

  • parameters (array, required): Danh sách parameters với name, value, unit

  • patientAge (number, optional): Tuổi bệnh nhân

  • patientSex (enum, optional): "M" | "F"

  • lifestyleScore (number, optional): Điểm lifestyle 0-100

Output:

  • Composite score (0-100)

  • System scores breakdown

  • Parameter normalization details

  • Interpretation

4. recommend_smart_cards

Mục đích: Gợi ý SMART cards cho một condition

Parameters:

  • condition (string, required): Tình trạng bệnh hoặc mục tiêu

  • cardTypes (array, optional): Filter theo loại card

  • maxCards (number, optional): Số cards tối đa (default: 10)

Loại cards:

  • Medical: medication, lab, imaging, procedure, referral

  • Behavioral: nutrition, movement, recovery, mind-body, micro-learning

5. generate_care_plan

Mục đích: Tạo care plan cá nhân hóa

Parameters:

  • patientAge (number, required): Tuổi bệnh nhân

  • conditions (array, required): Danh sách bệnh

  • goals (array, required): Mục tiêu sức khỏe

  • lifeStage (enum, optional): "child" | "adolescent" | "adult" | "elder"

Output:

  • Comprehensive care plan với Performance Medicine framework

  • Life stage considerations

  • Condition management protocols

  • SMART card recommendations

  • Monitoring schedule

6. refresh_knowledge_base

Mục đích: Manual refresh (backup, thường không cần)

Parameters: Không có

Khi nào dùng:

  • File watcher bị tắt

  • Cần force refresh ngay lập tức

  • Debugging


Prompts Reference

1. explain_health_system

Mục đích: Giải thích chi tiết một health system

Arguments:

  • system: cardiovascular | neurological | respiratory | metabolic | renal | musculoskeletal | immune | reproductive

Ví dụ:

/prompt explain_health_system system=cardiovascular

2. analyze_parameters

Mục đích: Phân tích health parameters chi tiết

Arguments:

  • parameters: Danh sách parameters (required)

  • age: Tuổi bệnh nhân (optional)

Ví dụ:

/prompt analyze_parameters parameters="HbA1c: 7.2, SBP: 140" age="55"

3. manage_condition

Mục đích: Comprehensive condition management

Arguments:

  • condition: Tên bệnh (required)

  • patient_age: Tuổi (optional)

Ví dụ:

/prompt manage_condition condition="type 2 diabetes" patient_age="60"

Real-time File Watching

Cách hoạt động

MCP server sử dụng chokidar để theo dõi 3 folders:

  • Mỗi khi có file .md mới được thêm/sửa/xóa

  • Server tự động refresh knowledge map sau 2 giây (debounce)

  • Claude Desktop được notify về changes

  • Bạn tiếp tục chat bình thường, Claude đã biết files mới

Test file watching

Bước 1: Đang chat với Claude

Bước 2: Tạo file mới

echo "# Test File" > "MD-Knowledge-Base/CMO - HEALTH OVERVIEW/TEST.md"

Bước 3: Đợi 2 giây

Bước 4: Hỏi Claude

"Có file TEST.md trong knowledge base không?"

Kết quả: Claude sẽ trả lời "Có" và có thể đọc file đó.

Tắt file watching

Nếu muốn tắt (chỉ auto-scan on startup):

Edit src/config.ts:

watchEnabled: false

Rebuild:

npm run build

Development

Development Mode (với hot reload)

npm run dev

Sử dụng tsx để chạy TypeScript trực tiếp với watching.

Testing với MCP Inspector

MCP Inspector là visual debugger cho MCP servers:

npm run inspector

Mở browser tại URL được hiển thị để:

  • Test từng tool riêng lẻ

  • Inspect resources

  • View logs real-time

  • Debug errors

Build

npm run build

Logs

Logs được ghi ra stderr (hiển thị trong Claude Desktop logs):

  • Startup logs

  • File scanning progress

  • File watcher events

  • Tool execution logs

  • Errors

Xem logs trên Windows:

%APPDATA%\Claude\logs\

Troubleshooting

1. MCP Server không kết nối

Kiểm tra:

  • ✓ Đã build project? (npm run build)

  • ✓ Đường dẫn trong claude_desktop_config.json đúng chưa?

  • ✓ Đã restart Claude Desktop hoàn toàn?

  • ✓ Icon MCP có hiển thị không? (góc dưới phải)

Fix:

# Re-build
npm run build

# Kiểm tra build output
ls build/index.js

# Test server manually
node build/index.js

2. Knowledge base không được scan

Kiểm tra:

  • ✓ Biến KNOWLEDGE_BASE_PATH trong config đúng không?

  • ✓ 3 folders tồn tại không?

  • ✓ Có files .md trong folders không?

Fix:

# Test path
ls "d:\Compass_Coding\MD Knowledge Base\MD-Knowledge-Base"

3. File watching không hoạt động

Kiểm tra:

  • watchEnabled: true trong src/config.ts?

  • ✓ Đã rebuild sau khi thay đổi config?

Manual refresh:

"Refresh knowledge base"

4. Tool calls fail

Kiểm tra logs:

  • Xem errors trong Claude Desktop logs

  • Check tool parameters có đúng schema không

Common issues:

  • Invalid JSON format trong parameters

  • Missing required fields

  • Type mismatch (string vs number)

5. Performance chậm

Giải pháp:

  • Giảm summaryMaxWords trong config

  • Tăng watchDebounce (giảm refresh frequency)

  • Disable file watching nếu không cần


Configuration Options

src/config.ts

export const config = {
  knowledgeBase: {
    path: process.env.KNOWLEDGE_BASE_PATH || '...',  // Base path
    folders: ['CMO - HEALTH OVERVIEW', ...],          // Folders to scan
    watchEnabled: true,                                // Enable file watching
    watchDebounce: 2000,                               // Debounce time (ms)
    watchIgnore: [...],                                // Patterns to ignore
    cacheEnabled: true,                                // Enable caching
    summaryMaxWords: 200,                              // Summary length
    logFile: './mcp-server.log',                       // Log file
    verboseLogging: false                              // Verbose mode
  },

  server: {
    name: 'medical-knowledge-mcp-server',
    version: '1.0.0'
  },

  healthScoring: {
    systemWeights: { ... },    // System criticality weights
    domainWeights: { ... },    // Structure/Function/Risk weights
    compositeWeights: { ... }  // Objective/Subjective split
  }
};

Environment Variables

Trong claude_desktop_config.json:

"env": {
  "KNOWLEDGE_BASE_PATH": "your/custom/path",
  "NODE_ENV": "production"
}

Architecture

High-level Overview

Claude Desktop
    ↓ (stdio transport)
MCP Server (index.ts)
    ↓
Knowledge Manager ← File Watcher (chokidar)
    ↓
├─ Resources (knowledge map + 99 files)
├─ Tools (6 smart tools)
└─ Prompts (3 templates)

Key Components

1. Knowledge Manager (src/core/knowledge-manager.ts)

  • Scans folders on startup

  • Generates knowledge map

  • Caches file metadata

  • Provides file access API

2. File Watcher (src/core/file-watcher.ts)

  • Watches 3 folders with chokidar

  • Debounces changes (2 seconds)

  • Triggers knowledge manager refresh

  • Notifies server of updates

3. Resources (src/resources/)

  • knowledge-map: Auto-loaded index

  • Individual files: On-demand access

4. Tools (src/tools/)

  • File operations (get, search)

  • Health calculations

  • SMART card recommendations

  • Care plan generation

5. Utilities (src/utils/)

  • File scanning

  • Search engine

  • Health calculator

  • Markdown parsing


Contributing

Adding New Tools

1. Create tool file: src/tools/your-tool.ts

export const yourToolSchema = z.object({ ... });
export async function handleYourTool(args, manager) { ... }

2. Register in src/index.ts:

import { yourToolSchema, handleYourTool } from './tools/your-tool.js';

// In ListToolsRequestSchema handler
{ name: 'your_tool', inputSchema: yourToolSchema }

// In CallToolRequestSchema handler
case 'your_tool':
  return await handleYourTool(...);

3. Rebuild:

npm run build

Adding New Prompts

Edit src/prompts/medical-prompts.ts:

{
  name: 'your_prompt',
  description: '...',
  arguments: [...]
}

// Add generator function
function generateYourPrompt(args) { ... }

License

MIT


Support

Issues: Report bugs tại GitHub Issues

Documentation: MCP Official Docs

Community: Claude Discord


Version History

v1.0.0 (2025-11-25)

  • ✨ Initial release

  • ✅ Auto-loading knowledge map

  • ✅ Real-time file watching

  • ✅ 6 smart tools

  • ✅ 3 reusable prompts

  • ✅ Comprehensive documentation


Built with ❤️ for Medical Knowledge Management

Available Tools

9 tools
calculate_health_scoreB

Calculate comprehensive health scores based on patient parameters using the 8-system framework. Returns normalized scores, system breakdowns, and interpretation.

ParametersJSON Schema
NameRequiredDescriptionDefault
parametersYesArray of health parameters to evaluate
patientAgeNoPatient age (optional, for context)
patientSexNoPatient sex (optional, for context)
lifestyleScoreNoLifestyle score 0-100 (optional, default: 50)

TDQS

B3.4/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 behavioral burden. It does disclose the output shape ('normalized scores, system breakdowns, and interpretation'), which is useful, but it does not mention failure modes, required parameter count, or edge cases. For a pure calculation tool, this is acceptable 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.

Conciseness5/5

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

Two sentences, no filler. The action and object come first, and the return summary is contained in a single clause. Every word contributes to understanding.

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 compute-only tool, the description covers both the operation and the return payload, and the schema fully covers inputs. There is no output schema, so the description appropriately explains return values. It could be more complete with usage guidance and edge-case behavior, but nothing essential is missing for invoking the tool successfully.

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%, with all four parameters documented in the input schema. The description adds only a high-level 'patient parameters' framing and the 8-system framework, so it does not materially improve on the schema's parameter documentation.

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 ('Calculate') and resource ('health scores'), and adds the 8-system framework and return type. It is clearly distinct from siblings like recommend_smart_cards and generate_care_plan, though it does not explicitly name or contrast them.

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?

No guidance is given on when to use this tool versus alternatives such as generate_care_plan or recommend_smart_cards. The context is only implied by 'based on patient parameters'; there are no explicit prerequisites, exclusions, or alternative routing.

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

check_git_statusA

Check Git status of repositories (knowledge base and/or MCP server). Shows current branch, uncommitted changes, and available updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoWhich repository to check (default: both)both

TDQS

A3.8/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. It discloses the informational outputs but does not explicitly state that the tool is non-destructive, whether it performs network fetches to detect 'available updates', or any side effects. 'Check' implies read-only but leaves key behavioral aspects unstated.

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 zero fluff. The action and target resource are front-loaded, followed by the concrete outputs. Every sentence earns its place without 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?

For a simple tool with one optional parameter and no output schema, the description is largely complete: it names the outputs (branch, uncommitted changes, available updates) that an agent would need. The absence of explicit statements about network usage or non-mutating behavior leaves a small gap, but overall it is sufficient for correct invocation.

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 'repo' parameter is fully documented in the schema with an enum (knowledge-base, mcp-server, both) and a clear description including the default. Since schema coverage is 100%, the description need not add more; the tool description's mention of the two repositories aligns with the enum values.

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 Git status of repositories (knowledge base and/or MCP server)'. It enumerates the exact outputs shown (current branch, uncommitted changes, available updates), making it clearly distinct from sibling tools like pull_git_updates or sync_repositories, which imply mutating operations.

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 read-only inspection use case is implied through 'Check' and 'Shows', and the tool's outputs suggest checking before updating. However, it never explicitly states when to prefer this over siblings like pull_git_updates or sync_repositories, nor does it provide exclusions or prerequisites.

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

generate_care_planA

Generate a personalized care plan based on patient age, conditions, and goals using Performance Medicine framework.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalsYesHealth goals (e.g., ["lower blood pressure", "improve mobility"])
lifeStageNoLife stage (auto-determined from age if not provided)
conditionsYesList of medical conditions (e.g., ["hypertension", "type 2 diabetes"])
patientAgeYesPatient age in years

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only states that a care plan is generated and references a framework; it does not disclose whether the plan is returned as data, persisted, or accompanied by any side effects, authorization requirements, or rate limits. This is minimal beyond what the name already implies.

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?

A single, front-loaded sentence that wastes no words. It states the action, the object, the key inputs, and the framework, with every phrase contributing to tool identification.

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 schema fully documents all parameters, making the invocation path reasonably clear. However, with no annotations and no output schema, the description fails to explain the result format or behavioral outcomes, leaving a noticeable gap for a healthcare-related generation tool.

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 baseline is 3; the description merely echoes the parameter names (age, conditions, goals) without adding constraints, formats, or relationship details. The schema itself already provides meaning, examples, and optional lifeStage auto-determination.

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 ('Generate') with a concrete resource ('personalized care plan') and names the key inputs ('patient age, conditions, and goals') plus the guiding framework ('Performance Medicine framework'). This clearly distinguishes it from sibling tools like calculate_health_score and recommend_smart_cards, which operate on different outputs.

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 intended use is implied: an agent should call this tool when it needs to generate a personalized care plan. However, there are no explicit alternatives, exclusions, or conditions for when to prefer this over sibling tools such as calculate_health_score or recommend_smart_cards.

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

get_file_contentA

Get the complete content of a specific file by name. Useful when you need to read full documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoOptional: Folder name to narrow search (e.g., "CMO - HEALTH OVERVIEW")
filenameYesFile name to search for (e.g., "PROJECT_ARCHITECTURE.md" or just "architecture")

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It transparently indicates a read-only operation ('Get') and the result is 'complete content'. However, it does not disclose behavior for missing files, folder search semantics, or partial-name matching that the schema hints at.

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 just two sentences: the first gives the core action, the second provides a practical use case. Every sentence earns its place, with no redundant or fluf content.

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 two-parameter tool with a complete schema, the description adequately covers the core purpose and use case. 'Complete content' also communicates the return value, compensating for the lack of an output schema. It misses an explicit pointer to search_files for discovering files, but that is more of a usage guideline 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 input schema already documents both parameters. The description adds no extra parameter semantics beyond emphasizing retrieval 'by name', which matches the filename property, 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.

Purpose4/5

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

The description states the specific verb 'Get' with a clear resource ('complete content of a specific file by name') and identifies the use case ('read full documentation'). It is easily distinguishable from sibling search_files because it is about content retrieval of a specific file, though it does not explicitly name the alternative.

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?

'Useful when you need to read full documentation' provides clear context for when to choose this tool. However, it does not explicitly state when not to use it or compare it with sibling tools like search_files, so it stops short of a full 5.

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

pull_git_updatesB

Pull latest changes from Git remote for knowledge base and/or MCP server. Automatically refreshes knowledge map after pulling knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoWhich repository to pull (default: both)both
autoRefreshNoAuto-refresh knowledge base after pulling knowledge-base repo (default: true)

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations present, the description carries the full behavioral disclosure burden. It does disclose one important side effect: pulling the knowledge-base repo automatically refreshes the knowledge map. However, it does not mention other behavior an agent should know, such as whether local changes may be overwritten, how merge conflicts are handled, or whether network or authentication failures are possible.

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 concise sentences with no filler. It front-loads the main action and resource, then adds the most important behavioral nuance in the second sentence. Every word contributes.

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 simple tool with two optional parameters and no output schema, the description covers the core action and the auto-refresh side effect. However, it omits any mention of return/result format and gives no guidance for choosing among the closely related sibling tools, leaving some ambiguity for an agent.

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 covers both parameters fully: repo has an enum with defaults, and autoRefresh has a default and description. Schema description coverage is 100%, so the description does not need to add much. The tool description only restates the autoRefresh concept ('Automatically refreshes knowledge map') without adding any new parameter-level meaning.

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 names a specific verb and resource: 'Pull latest changes from Git remote for knowledge base and/or MCP server.' It also includes the notable side effect of refreshing the knowledge map, which adds specificity. It does not explicitly distinguish itself from the sibling sync_repositories, but the 'pull' framing and repo scoping make the purpose reasonably clear.

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?

No explicit guidance is given about when to use this tool versus alternatives such as sync_repositories, check_git_status, or refresh_knowledge_base. The phrase 'Pull latest changes' implies a use case, but the description never states when-not-to-use this tool or which sibling would be better for status checks or standalone refreshes.

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

recommend_smart_cardsB

Find relevant SMART cards (medical and behavioral interventions) for a specific condition or health goal.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxCardsNoMaximum number of cards to return (default: 10)
cardTypesNoFilter by specific card types (optional)
conditionYesMedical condition or health goal (e.g., "hypertension", "diabetes", "weight loss")

TDQS

B3.4/5.0
Behavior2/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 behavior and side effects. It only says 'Find relevant,' which implies a read-only retrieval and relevance ranking, but it does not state whether anything is modified, what a SMART card contains, or what happens when no matches are found.

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 redundant clauses. It clearly conveys the tool's purpose and is 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.

Completeness4/5

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

For a simple three-parameter retrieval tool with a fully documented schema and no nested objects, the description is sufficient for an agent to select and invoke it correctly. It falls short of 5 because the return value is described only as 'cards' and no behavioral caveats or edge cases are mentioned.

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 condition, maxCards, and cardTypes with examples. The description repeats the 'condition or health goal' idea without adding meaningful parameter-level detail beyond the 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 states a specific action ('Find') and resource ('SMART cards'), and clarifies that these are medical and behavioral interventions. It is clear, but it does not explicitly contrast with sibling tools such as generate_care_plan or calculate_health_score, so it stops short of a 5.

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 phrase 'for a specific condition or health goal' implies when the tool should be used. However, there is no explicit when-not-to-use guidance or mention of alternative tools, so usage guidance is largely implied rather than explicit.

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

refresh_knowledge_baseA

Manually refresh the knowledge base to detect newly added files. Usually not needed as file watching is automatic.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 explaining behavior. It discloses that this is a manual trigger and that automatic watching is the normal path, but it does not describe side effects, duration, idempotency, or what the return value looks like. Some behavior is conveyed, but not fully.

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 no wasted words. The core action is front-loaded, and the usage caveat is stated immediately in a compact follow-up sentence.

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 of a zero-parameter trigger, the description covers the essential purpose and the main usage caution. It could mention what happens after the refresh or any output it returns, but for invoking the tool correctly the current description is largely sufficient.

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 schema already fully defines the invocation surface. The description adds no parameter-level detail, but none is needed; baseline 4 is appropriate for a no-parameter tool.

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 action ('refresh the knowledge base') and the intended outcome ('detect newly added files'). It is clear enough to distinguish from the listed sibling tools, though it does not explicitly name a sibling to differentiate from.

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 for when the tool is not needed ('Usually not needed as file watching is automatic'), effectively telling the agent to avoid redundant calls. It doesn't spell out explicit conditions for use, but the implication that manual refresh is only for exceptional cases is clear.

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

search_filesA

Search across all knowledge base files for specific keywords or phrases. Returns relevant excerpts with context.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (keywords or phrase to find in files)
folderNoFolder to search in (default: all)all
maxResultsNoMaximum number of results to return (default: 10)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden of explaining behavior. It explicitly says the tool searches across all knowledge base files and returns excerpts with context, giving a clear read-oriented behavior. It does not mention details like case sensitivity, result ordering, or failure behavior, but the core behavior is 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?

Two tightly written sentences, front-loaded with the primary action and scope. Every word adds value, and there is no redundant or filler content.

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 description is adequate for calling the tool but leaves gaps because there is no output schema. 'Returns relevant excerpts with context' is vague about what fields are included (e.g., file name, match location), and the description does not mention behavior like maxResults implications or no-match outcomes.

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%, with each parameter having a meaningful description. The tool description adds little beyond the schema, only reinforcing that search is across all files. Per the calibration baseline, this is adequate but not exceptional.

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 ('Search'), the resource ('all knowledge base files'), and the output ('relevant excerpts with context'). It distinguishes itself from siblings like get_file_content by focusing on cross-file keyword search rather than retrieving a specific file's content.

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 searching across knowledge base files—but it does not explicitly state when not to use it or name alternatives. The contrast with get_file_content is left implicit rather than stated.

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

sync_repositoriesA

One-click sync: Check status and pull updates for all repositories. Can be used in check-only mode to see what updates are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
checkOnlyNoOnly check status without pulling (default: false)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the core behavior: checking status and pulling updates, and reveals the check-only mode. It does not mention potential side effects like overwriting local changes or merge conflicts, but 'pull updates' reasonably signals a mutating operation.

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 no wasted words. The main action is front-loaded ('One-click sync: Check status and pull updates'), and the check-only option is added as a separate clarifying sentence.

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 tool with one optional, well-documented parameter and no output schema, the description covers the essential invocation details: what it does, the scope (all repositories), and the available mode. It is slightly lacking in return-value or error-case expectations, but overall adequate for its low complexity.

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 baseline is 3. The description adds a small amount of context by explaining check-only mode is 'to see what updates are available,' which maps to the checkOnly parameter, but it does not add meaning beyond what the schema already conveys.

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 action ('Check status and pull updates') on a clear resource ('all repositories'), and mentions 'check-only mode', which adds nuance. It does not explicitly contrast with the sibling tools check_git_status and pull_git_updates, but the combined 'one-click sync' behavior is clear enough to understand its scope.

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 usage: it is a combined status-check and pull operation, and check-only mode is suggested 'to see what updates are available.' However, it does not explicitly say when to use this tool versus the sibling tools check_git_status or pull_git_updates, leaving the choice somewhat to inference.

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. Dates show when Glama detected each change.

  1. 9 tool updatesv1.1.0
    • First observedcalculate_health_score
    • First observedcheck_git_status
    • First observedgenerate_care_plan
    • First observedget_file_content
    • First observedpull_git_updates
    • First observedrecommend_smart_cards
    • First observedrefresh_knowledge_base
    • First observedsearch_files
    • First observedsync_repositories

TDQS

A3.7/5.0
Disambiguation3/5

The clinical tools (calculate_health_score, recommend_smart_cards, generate_care_plan) are distinct, but the repository maintenance tools overlap: sync_repositories essentially combines check_git_status and pull_git_updates, and pull_git_updates vs refresh_knowledge_base both have refresh effects. The descriptions help, but an agent could easily select the wrong sync/pull/check tool.

Naming Consistency5/5

All nine tools follow a consistent verb_noun snake_case pattern (calculate, recommend, generate, refresh, check, pull, sync, get, search). This makes the tool set predictable and easy to navigate.

Tool Count5/5

Nine tools is well within the ideal range and each tool serves a clear purpose in either clinical reasoning or knowledge base maintenance. The count feels appropriately scoped for a medical knowledge server.

Completeness4/5

The surface covers core clinical workflows (scoring, interventions, care plans) and knowledge base maintenance (search, read, refresh, git sync). Minor gaps exist, such as no tool to list all available files or directly edit knowledge content, but these can be worked around via git and file operations.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nathan-Nguyen-Tech/medical-knowledge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server