Medical Knowledge MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Medical Knowledge MCP ServerExplain the 24-cell health matrix"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 installDependencies sẽ được cài:
@modelcontextprotocol/sdk- MCP SDK chính thứcchokidar- File system watcherzod- Schema validationtypescript- TypeScript compiler
Bước 2: Build Project
npm run buildLệ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.jsonCấu hình Claude Desktop
Tìm file cấu hình
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.jsonThê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
Thoát hoàn toàn Claude Desktop (không chỉ đóng cửa sổ)
Khởi động lại Claude Desktop
Chờ vài giây để MCP server kết nối
Kiểm tra icon MCP ở góc dưới bên phải (hình búa nhỏ 🔨)
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ếmfolder(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, unitpatientAge(number, optional): Tuổi bệnh nhânpatientSex(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êucardTypes(array, optional): Filter theo loại cardmaxCards(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ânconditions(array, required): Danh sách bệnhgoals(array, required): Mục tiêu sức khỏelifeStage(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=cardiovascular2. 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
.mdmới được thêm/sửa/xóaServer 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: falseRebuild:
npm run buildDevelopment
Development Mode (với hot reload)
npm run devSử 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 inspectorMở 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 buildLogs
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.js2. Knowledge base không được scan
Kiểm tra:
✓ Biến
KNOWLEDGE_BASE_PATHtrong config đúng không?✓ 3 folders tồn tại không?
✓ Có files
.mdtrong 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: truetrongsrc/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
summaryMaxWordstrong configTă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 indexIndividual 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 buildAdding 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 toolscalculate_health_scoreB
Calculate comprehensive health scores based on patient parameters using the 8-system framework. Returns normalized scores, system breakdowns, and interpretation.
| Name | Required | Description | Default |
|---|---|---|---|
| parameters | Yes | Array of health parameters to evaluate | |
| patientAge | No | Patient age (optional, for context) | |
| patientSex | No | Patient sex (optional, for context) | |
| lifestyleScore | No | Lifestyle score 0-100 (optional, default: 50) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Which repository to check (default: both) | both |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goals | Yes | Health goals (e.g., ["lower blood pressure", "improve mobility"]) | |
| lifeStage | No | Life stage (auto-determined from age if not provided) | |
| conditions | Yes | List of medical conditions (e.g., ["hypertension", "type 2 diabetes"]) | |
| patientAge | Yes | Patient age in years |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Optional: Folder name to narrow search (e.g., "CMO - HEALTH OVERVIEW") | |
| filename | Yes | File name to search for (e.g., "PROJECT_ARCHITECTURE.md" or just "architecture") |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Which repository to pull (default: both) | both |
| autoRefresh | No | Auto-refresh knowledge base after pulling knowledge-base repo (default: true) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| maxCards | No | Maximum number of cards to return (default: 10) | |
| cardTypes | No | Filter by specific card types (optional) | |
| condition | Yes | Medical condition or health goal (e.g., "hypertension", "diabetes", "weight loss") |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (keywords or phrase to find in files) | |
| folder | No | Folder to search in (default: all) | all |
| maxResults | No | Maximum number of results to return (default: 10) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| checkOnly | No | Only check status without pulling (default: false) |
TDQS
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.
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.
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.
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.
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.
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.
9 tool updates
v1.1.0- First observed
calculate_health_score - First observed
check_git_status - First observed
generate_care_plan - First observed
get_file_content - First observed
pull_git_updates - First observed
recommend_smart_cards - First observed
refresh_knowledge_base - First observed
search_files - First observed
sync_repositories
TDQS
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.
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.
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.
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
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
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA local MCP server that integrates with Claude Desktop, enabling RAG capabilities to provide Claude with up-to-date private information from custom LlamaCloud indices.225MIT
- AlicenseNot gradedqualityDmaintenanceA specialized MCP server for Claude Desktop that enhances AI-assisted medical learning by fetching and processing educational resources from PubMed, NCBI Bookshelf, and user-provided documents.MIT

FHIRfly MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceMCP server for connecting Claude Desktop to FHIRfly healthcare reference data APIs, enabling lookup of drugs, providers, clinical codes, and more.209MIT- AlicenseNot gradedqualityCmaintenanceA local MCP server for Claude Desktop with persistent task management, file operations, document generation, and PDF indexing.2251MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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