临床风险评估工具

提供跨平台的临床风险评估工具,支持JavaScript和.NET实现,具备互操作性。

  • by kumarchitta
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 kumarchitta/mcp_js_example

使用说明

MCP服务器和客户端示例(JavaScript+.NET)

此存储库演示了模型上下文协议(MCP)在以下两种情况下的实现 JavaScript 和 .NET,展示跨平台互操作性。这两种实现都提供了相同的临床风险评估工具,并且可以无缝地相互通信。

项目结构

mcp_poc/
├── mcp-js-server/         # JavaScript MCP Server (Express)
├── mcp-js-client/         # JavaScript MCP Client (LangChain + OpenAI)
├── mcp-dotnet-server/     # .NET MCP Server (ASP.NET Core) ✅
├── mcp-dotnet-client/     # .NET MCP Client (Microsoft.Extensions.AI) ✅
└── DOTNET_IMPLEMENTATION.md  # Detailed .NET implementation guide

特性

实现

JavaScript和。NET实现提供:

MCP服务器 (mcp-js-server/ & mcp-dotnet-server/)

  • ✅ 临床风险评估工具 通过MCP协议
  • ✅ HTTP/JSON-RPC端点 便于集成
  • ✅ 三个相同的工具:
    • calculate_risk_score -根据年龄和共病计数计算临床风险评分
    • get_patient_health_conditions -检索患者的健康状况
    • get_patient_summary -返回完整的患者人口统计和病情摘要

MCP客户端 (mcp-js-client/ & mcp-dotnet-client/)

  • ✅ LLM集成 使用OpenAI/Azure OpenAI
  • ✅ 自动工具发现 来自MCP服务器
  • ✅ LLM电动工具调用 -AI决定何时以及如何使用工具
  • ✅ 多种测试场景 演示实际使用情况

跨平台互操作性

  • 🔄 JavaScript客户端 ↔ JavaScript服务器 ✅
  • 🔄 JavaScript客户端 ↔ .NET服务器 ✅
  • 🔄 .NET客户端 ↔ .NET服务器 ✅
  • 🔄 .NET客户端 ↔ JavaScript服务器 ✅

先决条件

用于JavaScript实现

  • Node.js v20+
  • npm或纱线

为了。NET实现

  • .NET 8.0 SDK或更高版本
  • Visual Studio 2022、VS Code或Rider(可选)

对于两者

  • OpenAI API密钥或Azure OpenAI凭据

设置

1.克隆存储库

git clone git@github.com:kumarchitta/mcp_js_example.git
cd mcp_js_example

2.JavaScript设置

安装服务器依赖项

cd mcp-js-server
npm install

安装客户端依赖项

cd ../mcp-js-client
npm install

配置环境变量

创建一个 .env 文件在 mcp-js-client/:

# For OpenAI
OPENAI_API_KEY=your_openai_api_key
MODEL_PROVIDER=openai

# OR for Azure OpenAI
# MODEL_PROVIDER=azure
# AZURE_API_KEY=your_azure_api_key
# AZURE_ENDPOINT=https://your-resource.openai.azure.com
# AZURE_DEPLOYMENT_NAME=gpt-4o

3.NET安装程序

还原服务器依赖关系

cd mcp-dotnet-server/McpDotnetServer
dotnet restore

还原客户端依赖关系

cd ../../mcp-dotnet-client/McpDotnetClient
dotnet restore

配置设置

编辑 appsettings.json 在 mcp-dotnet-client/McpDotnetClient/:

{
  "MODEL_PROVIDER": "openai",
  "OPENAI_API_KEY": "your-openai-api-key",
  "MCP_SERVER_URL": "http://localhost:8080/mcp"
}

用法

选项1:JavaScript堆栈

启动JavaScript MCP服务器

cd mcp-js-server
npm run dev

运行JavaScript MCP客户端

在新终端中:

cd mcp-js-client
npm run dev

选项2:。NET堆栈

开始。NET MCP服务器

cd mcp-dotnet-server/McpDotnetServer
dotnet run

快跑。NET MCP客户端

在新终端中:

cd mcp-dotnet-client/McpDotnetClient
dotnet run

选项3:混合堆栈(演示互操作性)

JavaScript客户端→ .服务器

# Terminal 1: Start .NET Server
cd mcp-dotnet-server/McpDotnetServer
dotnet run

# Terminal 2: Run JavaScript Client
cd mcp-js-client
MCP_SERVER_URL=http://localhost:8080/mcp npm run dev

.NET客户端→ JavaScript服务器

# Terminal 1: Start JavaScript Server
cd mcp-js-server
PORT=3000 npm start

# Terminal 2: Run .NET Client (update appsettings.json MCP_SERVER_URL to http://localhost:3000/mcp)
cd mcp-dotnet-client/McpDotnetClient
dotnet run

客户在做什么

双方客户将:

  1. 连接到MCP服务器
  2. 加载可用工具
  3. 运行6个测试查询,演示LLM+MCP集成
  4. 显示结果和工具调用

输出示例

✅ Loaded 3 tools from MCP server:
   • calculate_risk_score — Compute a clinical risk score from age and comorbidity count.
   • get_patient_health_conditions — Retrieve known health conditions for a patient.
   • get_patient_summary — Return demographic and condition summary for a patient.

📝 Test 1/6:
Query: "Calculate the risk score for a 72-year-old patient with 5 comorbidities."

✨ Final LLM Response: The risk score for a 72-year-old patient with 5 comorbidities is 39.4, which falls into the "medium" risk category.

模拟数据

服务器包括模拟患者数据:

  • P001:爱丽丝·约翰逊(68岁,3种合并症)
  • P002:罗伯特·史密斯(45岁,1例合并症)
  • P003:玛丽亚·洛佩兹(72岁,5种合并症)

API直接测试

您还可以直接使用curl测试服务器:

# Query patient health conditions
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "get_patient_health_conditions",
      "arguments": { "patientId": "P001" }
    }
  }'

MCP检查员

  npx @modelcontextprotocol/inspector

建筑

JavaScript堆栈

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│             │         │             │         │             │
│  OpenAI/    │◄────────│  MCP Client │◄────────│  MCP Server │
│  Azure      │  Tools  │  (LangChain)│  HTTP   │  (Express)  │
│             │         │             │         │             │
└─────────────┘         └─────────────┘         └─────────────┘
                             │                        │
                        Decides when              Executes
                        to call tools             clinical tools

.NET堆栈

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│             │         │             │         │             │
│  OpenAI/    │◄────────│  MCP Client │◄────────│  MCP Server │
│  Azure      │  Tools  │(MS.Ext.AI)  │HTTP/SSE │(ASP.NET Core│
│             │         │             │         │             │
└─────────────┘         └─────────────┘         └─────────────┘
                             │                        │
                        Decides when              Executes
                        to call tools             clinical tools

跨平台互操作性⭐

    JavaScript Client ─────┐
                           ├──► JavaScript Server
         .NET Client ─────┘         OR
                                .NET Server

两种实现都使用相同的MCP协议,确保了完全的互操作性!

使用的技术

JavaScript堆栈

  • @模型上下文协议/sdk -MCP协议实现
  • @朗肯/奥派 -LangChain OpenAI集成
  • @langchain/核心 -LangChain核心工具
  • 快速 -HTTP服务器
  • 萨德 -架构验证

.NET堆栈

  • 模型上下文协议SDK -官方C#MCP SDK(微软/Anthropic合作)
  • 模型上下文协议。AspNetCore -ASP。NET核心集成
  • 微软。扩展。人工智能 -AI抽象层
  • Azure。好的 -Azure OpenAI客户端
  • OpenAI SDK -OpenAI客户端

主要区别

特性 JavaScript 。NET
服务器框架 Express.js ASP。NET核心最低API
工具定义 普通函数 基于属性([McpServerTool])
类型安全 运行时(JSDoc) 编译时(C#类型)
响应格式 JSON 服务器发送事件(SSE)
客户端集成 LangChain 微软。扩展。AI
部署 Node.js运行时 原生/Docker/云

每次实施的好处

JavaScript

  • ✅ 快速开发和迭代
  • ✅ 广泛的npm生态系统
  • ✅ 易于上手
  • ✅ 大型社区和实例

.NET

  • ✅ 编译时型安全
  • ✅ 更好的性能(本机编译)
  • ✅ 企业功能(DI、日志记录、健康检查)
  • ✅ 强大的工具(Visual Studio、Rider)
  • ✅ 易于容器化和云部署

快速测试

测试JavaScript服务器

cd mcp-js-server
npm start

# In another terminal
curl http://localhost:8080/health

测试。服务器

cd mcp-dotnet-server/McpDotnetServer
dotnet run

# In another terminal
curl http://localhost:8080/health

直接测试MCP协议

# Test tools/list endpoint
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Test calculate_risk_score tool
curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc":"2.0",
    "id":2,
    "method":"tools/call",
    "params":{
      "name":"calculate_risk_score",
      "arguments":{"age":72,"comorbidityCount":5}
    }
  }'

文档

实施状态

组件 语言 状态 注释
MCP服务器 JavaScript ✅ 完成 Express.js,JSON响应
MCP服务器 。NET ✅ 完成 ASP。NET Core、SSE响应
MCP客户端 JavaScript ✅ 完成 LangChain集成
MCP客户端 。NET ✅ 完成 微软。扩展。AI集成
互操作性 两者都有 ✅ 已验证 所有组合均已测试

是什么让这个特别

此存储库演示了:

  1. 语言不可知协议:相同的MCP协议适用于JavaScript和。网
  2. 完全互操作性:任何客户端都可以与任何服务器通信,无论语言如何
  3. 生产就绪:两种实现都使用官方SDK和最佳实践
  4. 真实世界示例:集成LLM的医疗风险评估工具
  5. 现代科技:最新。NET 8、Node.js 20+、OpenAI GPT-4o

后续步骤

  • ✅ 探索这两个实现中的代码
  • ✅ 运行示例并查看MCP的运行情况
  • ✅ 尝试将JavaScript和。NET组件
  • 📚 阅读 DOTNET_实施.md 详细。NET指南
  • 🔧 根据自己的用例调整工具
  • 🚀 部署到生产环境(Docker、Azure、AWS等)

许可证

国际学生委员会

作者

阿斯瓦尼·库马尔·奇塔