NDIS MCP服务器
一种专门的模型上下文协议(MCP)服务器,专为NDIS服务提供商设计,通过AI驱动的对话访问其运营数据。该服务器采用FastMCP框架构建,支持对全面的NDIS数据库进行自然语言查询,通过安全的多租户架构支持从日常排班管理到参与者护理协调的所有内容。
项目概述
此MCP服务器通过智能对话弥合了NDIS服务提供商与其数据之间的差距。护理协调员、经理和支持人员可以简单地问“今天谁在工作?”或“给我看约翰的用药时间表”等问题,而不是纠结于复杂的数据库查询或浏览多个屏幕来查找信息,并立即得到准确的答案。
服务器连接到您现有的NDIS数据库,并了解残疾服务中的独特术语和关系——从参与者护理计划到员工名册,从事件报告到资金使用。
SaaS多租户架构
数据库体系结构
我们的多租户设计确保NDIS服务提供商之间的完全数据分离,同时分担基础设施成本:
- 租户隔离:每个服务提供商都在自己的数据库模式中运行(比如有单独的文件柜)
- 自动安全:行级安全可防止组织之间的数据交叉污染
- 共享平台:多个服务提供商可以使用同一系统,而无需查看彼此的信息
- 会话跟踪:内置人工智能对话管理,跟踪员工如何与数据交互
它管理什么
该系统了解并跟踪NDIS服务交付的各个方面:
- 参与者:您的NDIS客户端及其独特的需求、偏好和目标
- 员工管理:支持人员、协调员及其资格和时间表
- 服务交付从每日名册到团体活动,从交通安排到经常性服务
- 健康与安全:药物管理、事件报告、风险评估
- 业务运营:转介管理、发票、资金跟踪和合规文件
- 物业和车辆:SIL住宿管理和车队跟踪
- AI对话:跟踪员工如何与系统交互以及他们需要什么信息
特性
- FastMCP框架:采用FastMCP构建,提供卓越的性能和开发人员体验
- 安全数据库访问:具有全面安全验证的只读SQL查询执行
- 多租户架构:使用行级安全性(RLS)完成租户隔离
- NDIS领域专业知识:专为残疾服务提供商运营而设计
- Claude桌面集成:已准备好与Claude Desktop应用程序一起使用
- 综合录井:详细的执行跟踪和审计跟踪
- 高性能:通过FastMCP的流线型架构优化了速度和效率
什么是FastMCP?
FastMCP是一个高性能、开发人员友好的框架,用于构建模型上下文协议(MCP)服务器。它提供:
- 简化的API:基于干净装饰器的工具定义
- 更好的性能:优化协议处理并减少开销
- 开发者体验:增强的调试、更好的错误消息和简化的开发
- 完全符合MCP:与Claude Desktop和所有MCP客户端100%兼容
安装
先决条件
- Python 3.8或更高版本
- 本地安装PostgreSQL 12或更高版本
- Claude桌面应用程序(用于集成)
快速入门-5分钟内开始跑步! 🚀
无需担心云数据库或复杂的设置 -这个项目提供了在本地测试所需的一切。
步骤1:设置本地数据库
首先,确保PostgreSQL在您的计算机上运行,然后:
# Create a fresh database for testing
createdb ndis_test_database
# Set up the complete schema (creates all tables, relationships, and security)
psql -d ndis_test_database -f database/schema.sql第二步:用真实的测试数据填充
# Navigate to the synthetic data generator
cd "database/synthetic seeder"
# Install the data generator dependencies
pip install -r requirements.txt
# Generate test data (creates 3 test organizations with realistic participants, staff, and services)
python generate_synthetic.py --tenants 3 --participants 50 --employees 20这将为3个不同的NDIS服务提供商创建测试数据,每个提供商都有:
- 50名参与者有现实的护理计划
- 20名具有适当资格的工作人员
- 数百份真实的服务记录、名册和互动
- 事件、药物和文件样本
步骤3:安装和配置MCP服务器
# Install Python dependencies
pip install -r requirements.txt
# Install the package in development mode
pip install -e .步骤4:配置您的环境
创建一个 .env 包含本地数据库详细信息的文件:
# Use your local database (replace 'your_username' with your PostgreSQL username)
DATABASE_URL=postgresql://your_username:your_password@localhost:5432/ndis_test_database
MCP_SERVER_NAME=ndis-mcp-server
LOG_LEVEL=INFO就是这样! 现在,您有了一个功能齐全的NDIS数据库,可以探索真实的测试数据。
你的测试数据库里有什么?
合成数据生成器通过以下方式创建了一个逼真的NDIS环境:
组织:3家不同的服务提供商(例如,“阳光支持服务”、“社区关怀+”)
人们:
- 50名有不同需求的参与者(自闭症、智力残疾、身体残疾等)
- 20名具有实际资格的工作人员(支持人员、协调员、管理人员)
- 紧急联系人、家庭成员和支持网络
服务与运营:
- 具有真实轮班模式的每日排班表
- 跨多个类别(个人护理、社区访问、交通)的服务交付记录
- 用药时间表和给药记录
- 具有适当分类和跟进的事故报告
业务数据:
- 具有NDIS目标和结果的护理计划
- 财务记录和资金分配
- 车队管理
- 培训记录和合规跟踪
快速测试-一切正常吗?
# Test your database connection
psql -d ndis_test_database -c "SELECT COUNT(*) as participants FROM tenant_001.participants;"
# You should see something like: participants | 50有问题吗?
“找不到命令:createdb” -PostgreSQL不在你的PATH中。请尝试完整路径或改用pgAdmin。
“权限被拒绝” -确保PostgreSQL正在运行,并且您有正确的用户名/密码。
“没有这样的文件” -运行模式命令时,请确保您位于mcp_server目录中。
用法
单独模式
# Run the MCP server directly
python -m ndis_mcp_server.server
# Or use the installed script
ndis-mcp-serverClaude桌面集成
- 添加到Claude桌面配置:
编辑您的Claude Desktop配置文件:
- 窗户: %APPDATA%\Claude\claude_desktop_config.json - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- 配置示例:
{
"mcpServers": {
"ndis-database-fastmcp": {
"command": "python",
"args": ["-m", "ndis_mcp_server.server"],
"env": {
"DATABASE_URL": "postgresql://your_username:your_password@localhost:5432/ndis_test_database",
"LOG_LEVEL": "INFO",
"MCP_SERVER_NAME": "ndis-fastmcp-server"
}
}
}
}- 重新启动克劳德桌面 加载新的MCP服务器。
准备好探索您的测试数据!
连接后,您可以立即开始探索您的真实测试数据库。试着问克劳德:
“显示所有参与者” -查看50名测试参与者的真实姓名和条件
“今天谁在工作?” -查看当前排班分配(注意:合成数据包括当前日期前后的日程安排)
“列出不同的服务提供商” -请咨询您的3个测试组织(tenant_001、tenant_002、tenant-003)
“给我看一些用药时间表” -探索现实的药物管理数据
美妙之处在于,每个查询都适用于完全孤立、真实的测试数据,非常适合学习系统,而无需担心任何隐私问题!
你可以问什么
这个系统的美妙之处在于,你不需要知道SQL或数据库结构。用简单的英语提问:
日常操作
- “今天谁在工作,他们提供什么服务?”
- “显示本周所有取消的服务以及取消原因”
- “今天哪些参与者需要服药?”
- “是否有需要跟进的事件?”
参与管理
- “列出所有积极参与者及其主要支持人员”
- “给我看看约翰·史密斯目前的药物和剂量”
- “即将到来的目标审查日期是什么?”
- “哪些参与者的资金即将到期?”
商业智能
- “上个月我们按服务类型提供了多少服务小时?”
- “我们对新推荐的平均响应时间是多少?”
- “显示上一季度的员工利用率”
- “哪些车辆需要保养?”
合规与质量
- “列出过去30天内所有可报告的事件”
- “显示所有员工的培训合规状态”
- “哪些文件将在未来60天内到期?”
- “我们的平均参与者满意度是多少?”
幕后工作原理
当你问“给我看今天的名单”时,服务器:
- 了解您需要当前日期的排班信息
- 生成具有正确联接的适当SQL查询
- 为租户应用安全过滤器
- 返回易于阅读的格式化结果
- 记录交互以供审计
发展
运行测试
# Install development dependencies
pip install -e .[dev]
# Run tests
pytest
# Run with coverage
pytest --cov=ndis_mcp_server代码质量
# Format code
black src/ tests/
isort src/ tests/
# Lint code
ruff check src/ tests/
# Type checking
mypy src/建筑
项目结构
mcp_server/
├── src/ndis_mcp_server/
│ ├── __init__.py
│ ├── server.py # Main FastMCP server implementation with tools
│ ├── database.py # Multi-tenant database connection manager
│ ├── config.py # Environment configuration management
│ ├── security.py # Multi-tenant security and SQL validation
│ └── schema_context.py # NDIS business domain context provider
├── tests/
│ ├── test_server_basic.py
│ └── test_fastmcp_server.py
├── pyproject.toml # Package configuration with FastMCP
├── requirements.txt # Runtime dependencies
├── claude_desktop_config.json # Claude Desktop integration example
├── Makefile # Development automation
└── README.md多租户数据库架构
PostgreSQL Database:
├── public/ # Shared tables (users, system config)
├── tenant_001/ # Service Provider 1 schema
│ ├── participants # NDIS clients
│ ├── employees # Support workers & staff
│ ├── rosters # Service schedules
│ ├── care_plans # Individual support plans
│ ├── medications # Medication management
│ ├── incidents # Incident reports
│ └── ... # Additional NDIS entities
├── tenant_002/ # Service Provider 2 schema
└── ... # Additional tenant schemas关键组件
FastMCP服务器(server.py)
- 工具注册:MCP工具定义的装饰器
- 数据库集成:使用连接池异步数据库操作
- 安全层:多租户验证和查询净化
- 架构上下文:NDIS业务领域知识注入
多租户数据库管理器(database.py)
- 连接池:AsyncPG连接池管理
- 租户上下文:自动租户隔离执行
- 查询执行:带验证的安全只读查询执行
- 结果格式:PostgreSQL数据类型的JSON序列化
安全框架(security.py)
- SQL验证:防止危险操作和注射
- 租户验证:基于模式的租户ID验证
- 速率限制:按租户查询频率控制
- 审计日志:全面的查询执行跟踪
SaaS集成能力
此MCP服务器旨在与SaaS NDIS服务提供商软件无缝集成:
后端集成
- FastAPI兼容性:可以导入并与现有的FastAPI后端一起使用
- 异步操作:完全异步/等待支持高性能操作
- 数据库共享:使用与主应用程序相同的PostgreSQL数据库
- 配置同步:与现有系统共享环境配置
多租户支持
- 架构隔离:每个NDIS服务提供商都独立运行
- 租户上下文:自动租户检测和验证
- 跨租户预防:无法访问其他服务提供商的数据
- 可扩展体系结构:支持无限数量的租户组织
人工智能驱动的查询
- 自然语言:用户可以用简单的英语询问有关其NDIS数据的问题
- 业务背景:内置NDIS术语和关系知识
- 查询生成:自动将用户请求转换为SQL查询
- 领域专业知识:专为残疾服务提供商运营而设计
用例
适用于NDIS服务提供商
- 日常操作:“给我看看今天所有后勤人员的名单”
- 参与管理:“列出所有积极参与者及其支持协调员”
- 服务跟踪:“本月提供了多少小时的社区访问?”
- 合规性监测:“显示上周的所有事件报告”
- 药物管理:“今天哪些参与者需要服药?”
- 员工日程安排:“这个周末谁在工作,他们提供什么服务?”
服务协调员
- 参与者评价:“向我展示约翰·史密斯的护理计划目标和进展”
- 服务分析:“我们提供的最常见的服务类型是什么?”
- 质量保证:“列出本月所有低于4星的反馈评级”
- 资源规划:“本季度我们有多少新参与者加入?”
用于管理和报告
- 商业智能:“比较不同服务类型的服务交付时间”
- 财务跟踪:“显示每个资金类别的预算使用情况”
- 性能指标:“我们的员工服务完成率是多少?”
- 合规报告:“生成所有安全事件及其结果的摘要”
快速入门
面向IT管理员
- 数据库连接:将服务器指向现有的NDIS PostgreSQL数据库
- 安全设置:配置租户隔离和用户权限
- 克劳德集成:将服务器添加到Claude Desktop配置中
- 用户培训:向员工展示如何自然地提问
面向NDIS经理
- 简单开始:从基本问题开始,比如“今天谁在工作?”
- 慢慢探索:尝试不同类型的查询以了解功能
- 分享示例:通过分享有用的问题模式帮助您的团队学习
- 监视器使用情况:查看对话日志,了解系统的使用情况
常见入门问题
“服务器不理解我的问题”
- 试着说得更具体些:“给我看看约翰的药物”,而不是“药物”
- 使用NDIS术语:“名册”而不是“时间表”
- 包括时间框架:“今天”、“本周”、“上个月”
“我收到的数据太多了”
- 添加筛选条件:“仅限活跃参与者”或“本月服务”
- 要求总结:“多少…”而不是“列出所有…”
- 使用后续问题来缩小结果范围
“数据看起来不对”
- 请记住,这是来自您的运营数据库的实时数据
- 检查您是否正在查看正确的时间段
- 验证您是否具有正确的租户上下文
日志记录
启用全面的调试日志记录:
# Windows
set LOG_LEVEL=DEBUG
set ENABLE_QUERY_LOGGING=true
# Linux/macOS
export LOG_LEVEL=DEBUG
export ENABLE_QUERY_LOGGING=true
# Run the server
ndis-mcp-server健康检查
验证服务器运行状况和数据库连接:
# Quick server verification
python -c "from ndis_mcp_server.server import app; print(f'Server: {app.name} v{app.version}')"
# Database connectivity test
python -c "from ndis_mcp_server.database import db_manager; import asyncio; print(asyncio.run(db_manager.health_check()))"性能注意事项
数据库优化
- 索引:确保对频繁查询的列(participant_id、employee_id、service_date)进行适当的索引
- 查询限制:使用LIMIT子句进行探索性查询,以防止大型结果集
- 日期范围:限制历史查询的日期范围以提高性能
- 连接池:服务器使用连接池来优化数据库连接
SaaS的扩展
- 租户隔离:每个租户独立运营,允许横向扩展
- 资源监控:监控每个租户的查询复杂性和执行时间
- 速率限制:内置的速率限制可防止滥用,并确保公平使用资源
- 缓存策略:考虑对频繁访问的数据实施查询结果缓存
后续步骤
扩展系统
此MCP服务器旨在与您的组织一起发展:
- 自定义查询:为您的特定工作流添加新的查询模式
- 整合:与其他NDIS软件系统连接
- 分析:使用对话数据构建自定义仪表板
- 训练:开发针对特定团队的问题库
隐私和合规
- 数据安全:所有交互都会被记录,但数据永远不会离开您的环境
- 审计跟踪:谁问了什么以及何时问的完整历史
- 基于角色的访问:可以配置为根据用户角色限制访问
- NDIS合规性:设计时考虑了NDIS隐私和数据管理要求
贡献
此MCP服务器是为NDIS社区构建的。我们欢迎为残疾服务提供者做出更有用的贡献:
- 查询模式:分享常见问题及其最佳查询结构
- 业务规则:帮助编码更多特定于NDIS的逻辑和关系
- 集成示例:记录如何与其他NDIS系统连接
- 用户培训:为不同的用户角色提供文档
