mcpField
M
MedifinderMCP Server

MedifinderMCP Server

本地服务
github.com/MediFinderBot通信协作084 周前更新

关于 MedifinderMCP Server

MedifinderMCP Server 为 Claude 等 AI 助手提供药品库存查询能力,适用于医疗机构库存数据的查询与分析。它通过 MCP 暴露工具、资源和提示词,支持按药品、地点及区域查看库存信息。

主要功能

  1. 01按药品名称或地点搜索
  2. 02查询药品库存及供应地点
  3. 03查看区域库存统计
  4. 04提供数据库诊断工具
  5. 05提供药品查询提示词和资源

适用场景

  1. 01查找特定地区可供应某种药品的医疗中心
  2. 02核对药品库存并查看区域统计
  3. 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:分析各地区药品供应情况的模板

安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/medifinder-mcp.git
    cd medifinder-mcp
    
  2. 创建虚拟环境并安装依赖项:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    pip install -r requirements.txt
    
  3. 创建 .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
    
  4. 创建数据库:

    # 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
    
  5. 初始化数据库架构: 启动服务后,使用 create_database_schema 工具创建数据表。

使用方法

在本地运行服务

你可以直接运行 MCP 服务:

python main.py
使用 MCP Inspector

在开发和测试期间,MCP Inspector 提供了一种便捷的方式来与服务交互:

  1. 安装 MCP CLI:

    pip install mcp[cli]
    
  2. 以开发模式运行服务:

    python -m mcp dev main.py
    
  3. MCP Inspector 将在浏览器中打开,你可以:

    • 测试工具和资源
    • 查看诊断工具的输出
    • 尝试不同的查询
与 Claude Desktop 集成

要将此服务与 Claude Desktop 配合使用:

  1. 创建批处理文件以确保可靠启动(run-mcp-server.bat):

    @echo off
    cd /d %~dp0
    call venv\Scripts\activate.bat
    python main.py
    
  2. 在 Claude Desktop 中安装服务:

    mcp install run-mcp-server.bat -f .env
    
  3. 或者,手动编辑 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"
          }
        }
      }
    }
    
  4. 在 Claude Desktop 中,从服务下拉列表中选择 MedifinderMCP 服务,即可在对话中启用它。

故障排除

常见问题
  1. 数据库连接问题:

    • 使用 troubleshoot_connection 工具诊断连接问题
    • 检查 .env 文件中的数据库凭据
    • 确保 PostgreSQL 在指定端口上运行
  2. 缺少表:

    • 使用 create_database_schema 工具创建数据库表
    • 检查日志中是否有创建架构时发生的错误
  3. 结果为空:

    • 如果查询没有返回结果,可能是表中没有数据
    • 你需要通过数据导入流程将数据导入表中
  4. 会话绑定错误:

    • 如果看到“Instance is not bound to a Session”错误,请确保在活动会话中将模型实例转换为字典
    • 查看 queries.py 文件中的处理方式,了解具体示例
  5. 缺少依赖项:

    • 运行 pip install -r requirements.txt,确保安装了所有依赖项
    • 常见缺少的依赖项包括:mcp、python-dotenv、psycopg2-binary
诊断工具

排查问题时,请使用以下内置诊断工具:

  1. diagnose_database:检查以下内容:

    • 数据库连接是否正常
    • 表是否存在
    • 表中是否包含数据
  2. troubleshoot_connection:提供以下内容的详细信息:

    • 数据库连接设置
    • 连接错误
    • 表结构
    • 建议的修复方法
  3. create_database_schema:创建数据库表,并提供以下信息:

    • 已创建表的列表
    • 发生的错误
    • 测试记录创建结果

许可证

MIT 许可证

贡献者

  • Lenin Carrasco - 初始工作

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。