药品转盘MCP服务器
用于ChatGPT Apps SDK与OAuth 2.1身份验证集成的药品目录MCP服务器的TypeScript实现。在交互式转盘界面中显示FDA批准的Lilly Direct药品,并提供经过身份验证的用户配置文件访问。
概述
此MCP(模型上下文协议)服务器为Lilly Direct药品提供交互式药品目录,通过Auth0进行OAuth 2.1+PKCE身份验证。它在响应式转盘界面中显示FDA批准的药物,并使经过身份验证的用户能够从AWS API网关访问个性化配置文件数据。
特性
- 💊 互动医疗旋转木马 -浏览7种FDA批准的药物
- 🔐 OAuth 2.1身份验证 -使用PKCE通过Auth0进行安全用户身份验证
- 👤 用户配置文件集成 -从AWS API网关获取经过身份验证的用户数据
- 🏥 药品造型 -专业医疗界面设计
- 🛒 直接购买链接 -每种药物的Lilly Direct链接
- ✅ 美国食品药品监督管理局认证展示 -清晰的FDA批准徽章
- 🚚 免费送货徽章 -每种药物的配送信息
- 📱 响应式设计 -适用于所有ChatGPT显示模式
- 🔧 使用TypeScript构建 -使用Express进行类型安全开发
- 🚀 云部署就绪 -已为Render.com配置
药品目录
目前包括7种FDA批准的药物:
- Zepbound -体重管理药物
- Humalog语 -胰岛素家族产品
- 优泌林 -胰岛素家族产品
- 平等 -偏头痛预防
- 是啊。 -长效胰岛素
- 卢米耶夫 -速效胰岛素
- 雷兹沃格拉尔 -长效胰岛素生物仿制药
地方发展
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm start在Render.com上部署
生成配置
- 生成命令:
npm install && npm run build - 启动命令:
npm start - 环境:节点18+
环境变量
所需的环境变量:
# Server Configuration
NODE_ENV=production
PORT=8000 # Auto-configured by Render
# Auth0 OAuth Configuration
AUTH0_DOMAIN=your-tenant.auth0.com
AUTH0_ISSUER_BASE_URL=https://your-tenant.auth0.com
AUTH0_CLIENT_ID=your_client_id
AUTH0_CLIENT_SECRET=your_client_secret
AUTH0_AUDIENCE=https://your-api-gateway-url.comAuth0设置
- 创建Auth0帐户 在https://auth0.com
- 创建API 在Auth0仪表板中:
- 名称:您的API名称 - 标识符:您的AWS API网关URL(用作 AUTH0_AUDIENCE) - 签名算法:RS256 - 如果需要,启用RBAC
- 启用动态客户端注册:
- 设置→ 高级→ OAuth→ 启用OIDC动态应用程序注册
- 配置登录连接:
- 确保至少启用了一个连接(谷歌、用户名密码等) - 为动态创建的客户端启用连接
部署步骤
- 连接GitHub存储库
- 分叉此存储库 - 连接到Render.com
- 配置构建设置
- 构建命令: npm install && npm run build - 启动命令: npm start - 环境:节点18+
- 设置环境变量
- NODE_ENV=production - PORT (由Render自动配置)
MCP工具
可用工具
公共工具(无需身份验证)
- 显示所有药物:在交互式转盘中显示所有药物
- 展示医学:按名称显示特定药物
经过身份验证的工具(需要OAuth)
- 获取用户资料:从AWS API网关获取经过身份验证的用户配置文件
- 需要通过ChatGPT登录OAuth - 返回用户名和组织 - 在交互式用户配置文件小部件中显示
工具特性
- 带箭头按钮的交互式旋转木马导航
- 美国食品药品监督管理局批准的认证徽章
- 免费送货指标
- Lilly Direct的直接购买链接
- 专业药物造型
- 适用于所有屏幕尺寸的响应式设计
- 使用Auth0 OAuth 2.1+PKCE进行用户身份验证
- 对AWS的基于标记的安全API调用
ChatGPT集成
MCP配置
将服务器URL添加到ChatGPT桌面MCP设置中:
{
"medicine-carousel-mcp": {
"command": "curl",
"args": ["-X", "POST", "https://your-app.onrender.com/mcp"]
}
}UI集成
- 资源模式:用途
ui://widget/medicine-carousel.html - mime类型:
text/html+skybridgeChatGPT应用程序兼容性 - 状态同步:旋转木马状态与ChatGPT接口同步
- 显示模式:支持内联、画中画和全屏模式
建筑
当前实施情况
- Express.js:针对云部署优化的HTTP服务器
- MCP-SDK:ChatGPT的模型上下文协议集成
- TypeScript:具有接口的类型安全开发
- 身份验证0:OAuth 2.1+PKCE身份验证提供程序
- AWS API网关:具有JWT授权的后端API
- 静态数据:药品目录定义见
src/data.ts - 嵌入HTML:具有内联CSS/JS的自包含UI小部件
认证流程
- ChatGPT查询
/.well-known/oauth-protected-resource用于OAuth元数据 - ChatGPT通过以下方式发现Auth0
/.well-known/openid-configuration - ChatGPT使用Auth0动态注册
/oidc/register - 用户使用PKCE通过Auth0 OAuth流进行身份验证
- ChatGPT收到具有适当受众的JWT访问令牌
- 令牌在工具调用时在Authorization标头中发送
- MCP服务器为经过身份验证的API调用提取并存储令牌
- AWS API网关验证JWT并返回用户数据
数据结构
interface MedicineItem {
id: string;
name: string;
logo: string; // Medicine brand logo URL
image: string; // Product image URL
buyLink: string; // Lilly Direct purchase URL
buyLinkText: string; // Custom button text
}未来改进
动态数据集成
- 用API集成替换静态药物列表
- 实时可用性和价格更新
- 自动新药纳入
增强的身份验证和个性化
- ✅ 用户OAuth身份验证(已完成)
- ✅ 用户配置文件集成(已完成)
- 处方管理
- 保险范围整合
- 基于用户数据的个性化医疗推荐
- 订单历史和补货提醒
增强的MCP功能
- 药品可用性检查
- 处方状态跟踪
- 交货时间表
- 药物比较工具
- 与用户医疗记录集成
安全与合规
- OAuth 2.1+PKCE:行业标准身份验证流程
- JWT令牌验证:AWS API网关验证所有已验证的请求
- 安全令牌存储:令牌存储在内存中,从不持久化
- 输入消毒:所有用户输入均已正确验证
- HTTPS资产:所有通过HTTPS提供的药品图像
- 安全外部链接:直接链接到Lilly Direct官方域名
- 环境变量:通过环境变量管理的秘密,从不在代码中
- CORS支持:ChatGPT集成的正确标头
- 无PII存储:MCP服务器上未存储任何个人身份信息
开发说明
- 使用StreamableHTTPServerTransport实现ChatGPT应用程序兼容性
- OAuth 2.1+PKCE流由ChatGPT自动处理
- verifyToken中间件从Authorization标头中提取的令牌
- 非阻塞令牌验证-公共工具无需身份验证即可工作
- 具有动态宽度计算功能的响应式旋转木马
- 符合FDA合规指标的专业药物造型
- 移动设备的触摸友好导航
- 优化图像加载和布局一致性
- AWS API网关集成,用于经过身份验证的后端调用
API终点
MCP协议
POST /mcp-用于工具调用和资源请求的主MCP端点
OAuth和健康
GET /.well-known/oauth-protected-resource-OAuth发现元数据(ChatGPT要求)GET /mcp/oauth-OAuth配置助手GET /health-服务器健康检查
测试
测试公共工具
# Show all medicines (no auth required)
curl -X POST https://your-app.onrender.com/mcp \
-H "Content-Type: application/json" \
-d '{"method": "tools/call", "params": {"name": "show-all-medicines"}}'测试认证工具
经过身份验证的工具需要来自ChatGPT的有效OAuth令牌。使用ChatGPT接口测试 get-user-profile 登录后的工具。
______________________________________________________________________
备注:此服务器使用静态医学数据进行演示。OAuth集成实现了从AWS API网关对用户特定数据的安全访问。所有机密都必须通过环境变量进行配置。
