关于 MedifinderMCP Server
MedifinderMCP Server 为 Claude 等 AI 助手提供药品库存查询能力,适用于医疗机构库存数据的查询与分析。它通过 MCP 暴露工具、资源和提示词,支持按药品、地点及区域查看库存信息。
主要功能
- 01按药品名称或地点搜索
- 02查询药品库存及供应地点
- 03查看区域库存统计
- 04提供数据库诊断工具
- 05提供药品查询提示词和资源
适用场景
- 01查找特定地区可供应某种药品的医疗中心
- 02核对药品库存并查看区域统计
- 03诊断数据库连接或表结构问题
MCP 相关
MCP 服务向客户端提供药品搜索、库存与统计工具,以及产品、库存、地点和统计资源;另含用于搜索和分析的提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MedifinderMCP 服务
一个用于查询药品库存的 MCP(模型上下文协议)服务,旨在与 Claude 等 AI 助手协同工作。
概览
MedifinderMCP 服务通过模型上下文协议(MCP)提供用于查询药品库存数据库的工具和资源。它支持 AI 助手和其他客户端执行以下操作:
- 按名称或地点搜索药品
- 查询不同医疗机构的药品供应情况
- 获取特定药品的库存信息
- 查看各地区的药品供应统计数据
- 分析整个医疗系统的库存状态
数据库架构
该应用使用规范化的数据库架构:
Region
- region_id (PK)
- name
- code
- created_at
- updated_at
MedicalCenter
- center_id (PK)
- code
- name
- region_id (FK -> Region)
- category
- reporter_name
- institution_type
- reporter_type
- address
- latitude
- longitude
- created_at
- updated_at
ProductType
- type_id (PK)
- code
- name
- description
- created_at
- updated_at
Product
- product_id (PK)
- code
- name
- type_id (FK -> ProductType)
- description
- dosage_form
- strength
- created_at
- updated_at
Inventory
- inventory_id (PK)
- center_id (FK -> MedicalCenter)
- product_id (FK -> Product)
- current_stock
- avg_monthly_consumption
- accumulated_consumption_4m
- measurement
- last_month_consumption
- last_month_stock
- status_indicator
- cpma_12_months_ago
- cpma_24_months_ago
- cpma_36_months_ago
- accumulated_consumption_12m
- report_date
- status
- created_at
- updated_at
User
- user_id (PK)
- phone_number
- name
- preferred_location
- created_at
- updated_at
SearchHistory
- search_id (PK)
- user_id (FK -> User)
- product_query
- location_query
- search_radius
- results_count
- created_at
项目结构
medifinder-mcp/
├── app/
│ ├── __init__.py
│ ├── config.py # Configuration management
│ ├── db/
│ │ ├── __init__.py
│ │ ├── connection.py # Database connection handling
│ │ └── queries.py # SQL queries
│ ├── models/
│ │ ├── __init__.py
│ │ ├── base.py # Base model with timestamp fields
│ │ ├── region.py # Region model
│ │ ├── medical_center.py # Medical center model
│ │ ├── product_type.py # Product type model
│ │ ├── product.py # Product model
│ │ ├── inventory.py # Inventory model
│ │ ├── user.py # User model
│ │ └── search_history.py # Search history model
│ ├── mcp/
│ │ ├── __init__.py
│ │ ├── server.py # MCP server setup
│ │ ├── tools.py # Tool implementations
│ │ ├── resources.py # Resource implementations
│ │ └── prompts.py # Prompt templates
│ └── utils/
│ ├── __init__.py
│ └── helpers.py # Helper functions
├── main.py # Application entry point
├── requirements.txt # Dependencies
└── README.md # Documentation
MCP 功能
工具
search_medicines:按名称或地点搜索药品get_medicine_locations:查找有某种药品供应的地点get_medicine_stock:获取特定药品的库存信息get_regional_statistics:获取各地区的药品统计数据get_medicine_status:获取药品整体统计数据diagnose_database:检查数据库连接和内容troubleshoot_connection:详细诊断数据库连接create_database_schema:根据模型创建数据库表
资源
product://{id}:按 ID 获取产品详情stock://{name}:按产品名称获取库存信息locations://{region}:获取特定地区的医疗中心statistics://stock:获取整体库存统计数据statistics://regions:获取各地区的统计数据
提示词
medicine_search_prompt:按名称搜索药品的模板medicine_availability_prompt:查询药品供应情况的模板medicine_statistics_prompt:分析药品统计数据的模板regional_availability_prompt:分析各地区药品供应情况的模板
安装
-
克隆仓库:
git clone https://github.com/yourusername/medifinder-mcp.git cd medifinder-mcp -
创建虚拟环境并安装依赖项:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt -
创建
.env文件以设置环境变量:DB_HOST=localhost DB_PORT=5432 DB_NAME=medifinderbot DB_USER=your_user DB_PASSWORD=your_password DEBUG=True ENV=development SERVER_NAME=MedifinderMCP SERVER_VERSION=1.0.0 MCP_SERVER_NAME=MedifinderMCP MCP_SERVER_DESCRIPTION=MCP server for medicine inventory queries MAX_SEARCH_RESULTS=50 SEARCH_SIMILARITY_THRESHOLD=0.3 -
创建数据库:
# Connect to PostgreSQL psql -U postgres # Create database and user CREATE DATABASE medifinderbot; CREATE USER your_user WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE medifinderbot TO your_user; # Exit PostgreSQL \q -
初始化数据库架构: 启动服务后,使用
create_database_schema工具创建数据表。
使用方法
在本地运行服务
你可以直接运行 MCP 服务:
python main.py
使用 MCP Inspector
在开发和测试期间,MCP Inspector 提供了一种便捷的方式来与服务交互:
-
安装 MCP CLI:
pip install mcp[cli] -
以开发模式运行服务:
python -m mcp dev main.py -
MCP Inspector 将在浏览器中打开,你可以:
- 测试工具和资源
- 查看诊断工具的输出
- 尝试不同的查询
与 Claude Desktop 集成
要将此服务与 Claude Desktop 配合使用:
-
创建批处理文件以确保可靠启动(run-mcp-server.bat):
@echo off cd /d %~dp0 call venv\Scripts\activate.bat python main.py -
在 Claude Desktop 中安装服务:
mcp install run-mcp-server.bat -f .env -
或者,手动编辑 Claude Desktop 的配置文件:
{ "mcpServers": { "MedifinderMCP": { "command": "C:\\path\\to\\project\\venv\\Scripts\\python.exe", "args": ["C:\\path\\to\\project\\main.py"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_NAME": "medifinderbot", "DB_USER": "your_user", "DB_PASSWORD": "your_password", "DEBUG": "True", "ENV": "development", "SERVER_NAME": "MedifinderMCP", "SERVER_VERSION": "1.0.0", "MCP_SERVER_NAME": "MedifinderMCP", "MCP_SERVER_DESCRIPTION": "MCP server for medicine inventory queries", "MAX_SEARCH_RESULTS": "50", "SEARCH_SIMILARITY_THRESHOLD": "0.3" } } } } -
在 Claude Desktop 中,从服务下拉列表中选择 MedifinderMCP 服务,即可在对话中启用它。
故障排除
常见问题
-
数据库连接问题:
- 使用
troubleshoot_connection工具诊断连接问题 - 检查 .env 文件中的数据库凭据
- 确保 PostgreSQL 在指定端口上运行
- 使用
-
缺少表:
- 使用
create_database_schema工具创建数据库表 - 检查日志中是否有创建架构时发生的错误
- 使用
-
结果为空:
- 如果查询没有返回结果,可能是表中没有数据
- 你需要通过数据导入流程将数据导入表中
-
会话绑定错误:
- 如果看到“Instance is not bound to a Session”错误,请确保在活动会话中将模型实例转换为字典
- 查看 queries.py 文件中的处理方式,了解具体示例
-
缺少依赖项:
- 运行
pip install -r requirements.txt,确保安装了所有依赖项 - 常见缺少的依赖项包括:mcp、python-dotenv、psycopg2-binary
- 运行
诊断工具
排查问题时,请使用以下内置诊断工具:
-
diagnose_database:检查以下内容:- 数据库连接是否正常
- 表是否存在
- 表中是否包含数据
-
troubleshoot_connection:提供以下内容的详细信息:- 数据库连接设置
- 连接错误
- 表结构
- 建议的修复方法
-
create_database_schema:创建数据库表,并提供以下信息:- 已创建表的列表
- 发生的错误
- 测试记录创建结果
许可证
贡献者
- Lenin Carrasco - 初始工作
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。