PEC MCP服务器
一个服务器 模型上下文协议(MCP) 建立在 FastMCP 安全和优化地查询公民电子档案(PEC)中的临床数据。
该服务器提供了LLM以只读方式与PEC(PostgreSQL)数据库交互的工具,允许查询患者,健康状况,护理和指标。
功能
- 患者咨询按首字母、年龄、性别和医疗单位进行匿名搜索。
- 健康状况按条件列出和计数患者(CID-10/CIAP)。
- 服务SOAP 服务历史记录。
- 指标计数和最近没有咨询的患者列表(高血压,糖尿病,孕妇)。
- 元数据搜索CID-10/CIAP代码和医疗单位列表。
先决条件
- Python 3.10+
- 访问 PEC PostgreSQL 数据库(或副本)。
安装
我们建议使用 紫外线 依赖关系管理,但 pip 它也起作用。
使用紫外线( 推荐)
# Clone o repositório
git clone
cd mcp-server-pec
# Crie um ambiente virtual e instale as dependências
uv venv
source .venv/bin/activate # No Windows: .venv\Scripts\activate
uv pip install mcp psycopg2-binary python-dotenv使用 pip
python -m venv .venv
source .venv/bin/activate # No Windows: .venv\Scripts\activate
pip install mcp psycopg2-binary python-dotenv配置
服务器是通过环境变量配置的。您可以创建一个文件 .env 在项目根或直接导出变量。
数据库变量
| 变量 | 标准 | 描述 |
|---|---|---|
PEC_DB_HOST | localhost PostgreSQL 数据库主机 | |
PEC_DB_PORT | 5432 | 数据库门户 |
PEC_DB_NAME | postgres 数据库名称(例如: esus) | |
PEC_DB_USER | postgres 数据库用户 | |
PEC_DB_PASSWORD | pass | 用户密码 |
MCP 服务器变量
| 变量 | 标准 | 描述 |
|---|---|---|
MCP_HTTP_HOST | 127.0.0.1 HTTP服务器的主机 | |
MCP_HTTP_PORT | 5174 连接到HTTP服务器。 |
示例文件 .env:
PEC_DB_HOST=192.168.1.100
PEC_DB_NAME=esus
PEC_DB_USER=esus_leitura
PEC_DB_PASSWORD=senha_segura使用
启动服务器 :
# Se o diretório src estiver no PYTHONPATH
python -m src.pec_mcp.server
# Ou executando diretamente se estiver na raiz
export PYTHONPATH=$PYTHONPATH:$(pwd)/src
python src/pec_mcp/server.py服务器将在 http://127.0.0.1:5174 (或根据配置)使用与 MCP 客户端兼容的服务器发送事件 (SSE) 传输。
可用工具
capturar_paciente
以匿名方式返回最小患者数据(首字母、出生日期、性别)。
- 过滤器:
paciente_id,name_starts_with,sex,age_min,age_max,unidade_saude_id.
listar_condicoes_pacientes
列出患者记录的健康状况(CID/CIAP)。
- 过滤器:
cid_code,ciap_code,condition_text,paciente_id等等。
contar_pacientes
仅返回符合指定过滤器的患者计数。对于不暴露个人数据的人口分析非常有用。
listar_unidades_saude
列出所有注册和活跃的医疗机构。
contar_pacientes_sem_consulta
为特定配置文件计算没有最近咨询的患者: hipertensao, diabetes 哦 gestante.
- 过滤器:
tipo(必填)dias_sem_consulta,unidade_saude_id.
listar_pacientes_sem_consulta
列出(分页和匿名)由计数工具发现的最近未咨询的患者。
listar_ultimos_atendimentos_soap
检索特定患者的就诊历史 (SOAP)。
- 过滤器:
paciente_id(必填)。
obter_codigos_condicao_saude
查找匹配搜索条件的 CID-10 或 CIAP 代码。在使用条件过滤器之前发现代码非常有用。
安全
- 只读服务器必须连接到具有严格权限的银行用户
SELECT. - 匿名工具只会尽可能返回汇总名称和数据的首字母。
- 限制:所有查询都有限制(
LIMIT)被迫避免大规模数据泄露。
许可证
麻省理工学院
