投资组合管理-MCP互动
一个演示应用程序,展示了 MongoDB MCP服务器 结合A 人工智能驱动的ReAct Agent 通过支持预定义问题和自定义文本输入的直观界面处理存储在MongoDB Atlas中的财务数据查询。
🔌 什么是模型上下文协议(MCP)?
这 模型上下文协议(MCP) 是Anthropic推出的开放标准,可实现AI助手和外部数据系统之间的无缝通信。MCP提供了一种通用协议,用于将大型语言模型(LLM)连接到不同的数据源,允许AI代理访问实时、上下文相关的信息。
MCP的主要好处包括:
- 标准化沟通:人工智能与数据交互的统一协议
- 工具集成:从人工智能工作流程内直接访问外部系统
- 上下文保护:在访问外部数据时保持会话上下文
- 安全:内置身份验证和授权机制
🍃 MongoDB MCP服务器:将AI连接到MongoDB
MongoDB宣布 MongoDB MCP服务器,使具有MCP客户端的开发人员工具能够直接与MongoDB数据库交互。此服务器处理一系列管理任务,如管理集群资源,以及与数据相关的操作,如查询和索引。
此演示使用官方 mongodb-mcp服务器 npm包,为MongoDB提供MCP协议实现。
MongoDB MCP服务器支持与流行的开发工具集成:
- 帆板运动 -内置MongoDB MCP支持的AI代码编辑器
- 光标 -AI驱动的代码编辑器
- Visual Studio Code -通过GitHub Copilot集成
- 克劳德桌面 -Anthropic的人工智能助手
使用MongoDB MCP服务器,开发人员可以:
- 轻松的数据探索:使用自然语言探索数据库模式和数据
- 简化数据库管理:通过对话界面执行管理任务
- 上下文感知代码生成:根据您的数据结构生成MongoDB查询和应用程序代码
🎯 演示目的
此应用程序展示了如何 模型上下文协议(MCP) 使人工智能助手能够通过标准化工具直接与数据库交互,并通过AWS Bedrock和ReAct(推理和代理)框架进行智能自然语言处理,以进行财务数据分析。
🏗️ 高级体系结构
此演示应用程序演示了与AI ReAct代理集成的MongoDB MCP服务器的完整实现:
🚨 重要提示:需要Docker
应用程序需要 mongodb-mcp-server 在Docker容器中安装和配置的npm包。不支持在没有Docker的情况下在本地运行此程序,因为它需要手动安装和配置MCP服务器依赖项。
📋 演示限制
这是一个 演示应用程序 具有以下约束:
只读操作
- 仅
find,aggregate,以及list-collections支持操作 - 出于安全考虑,不进行创建、更新或删除操作
- 仅限于查询现有的财务时间序列数据
仅支持资产
- 加密货币:BTC、ETH、XRP、SOL、DOGE、ADA(in
binanceCryptoData收藏) - 股票/ETF:HYG、LQD、TLT、GLD、USO、EEM、QQQ、SPY、XLE、VNQ(in
yfinanceMarketData收藏) - 只能从提供的样本数据中查询这些特定符号
仅限基本计算
- 简单聚合(平均值、总和、计数)
- 价格比较
- 不支持:波动率、移动平均线、RSI、技术指标等复杂计算
时间范围限制
- 默认值:未指定时为最后7天
- 最长:60天(8周或2个月)
- 所有价格四舍五入到小数点后两位
🚀 主要特点
✅ AI驱动的ReAct代理
- 自然语言理解 -用简明英语处理预定义和自定义查询
- 智能刀具选择 -自动选择正确的MCP工具
- AWS基岩集成 -由Claude模型通过SSO身份验证提供支持
- 实时刀具跟踪 -查看每个查询使用了哪些工具
✅ 纯MCP协议实现
- 没有MongoDB客户端连接 -仅使用MCP协议
- JSON-RPC通信 使用MongoDB MCP服务器
- 透明MCP通信 日志
✅ 实时监控
- 实时MCP工具调用 跟踪状态更新
- 控制台日志面板 显示所有MCP通信
- 统计仪表板 用于通话和日志
- 自动刷新 每2秒
✅ 稳健的响应处理
- 始终显示原始MCP响应 为了提高透明度
- 尽可能尝试解析 用于用户友好的显示
- 优雅的回退 解析失败时
- 教育价值 -查看MCP返回的确切内容
✅ 开发人员工具和调试
- AWS调试端点 用于对凭据进行故障排除
- 基岩状态终点 连接测试
- MCP服务器重置 新演示的能力
- 可用工具列表 用于API发现
- 全面的错误记录 每一层
🛠 技术架构
┌─────────────────┐ JSON-RPC ┌──────────────────┐ MongoDB ┌─────────────────┐
│ Web UI │ ◄────────────► │ MCP Server │ ◄────────────► │ MongoDB Atlas │
│ (Chat) │ │ (Child Process) │ │ (Database) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ ReAct Agent │ │ Tool Tracking │
│ (AWS Bedrock) │ │ & Logging │
└─────────────────┘ └──────────────────┘无直接数据库连接
- ✅ 用途 仅限MCP协议
- ✅ 重新代理 用于智能查询处理
- ❌ 不
mongodbnpm包 - ❌ 不
MongoClient连接 - ❌ 无直接数据库查询
📊 查询选项
用户可以从以下预定义的问题中进行选择,或键入自己的自定义查询:
数据库探索
"List collections in the database"
- 显示财务数据库中的所有可用集合 - 确定哪些集合支持查询
最新价格查询
"What is the latest available BTC close price?"
- 返回最新的比特币收盘价
"What is the latest available GLD close price?"
- 返回最新的黄金ETF收盘价
"What is the latest available DOGE open price?"
- 返回最新的狗狗币开盘价
价格分析
"Show me the highest price of ETH close price over the last 14 days"
- 查找过去2周以太坊的最高收盘价
"Show me the lowest price of SOL close price over the last 7 days"
- 查找过去一周Solana的最低收盘价
产量分析
"What are the average trading volumes for SPY on the last 7 days?"
- 计算过去一周标准普尔500指数ETF的平均交易量
价格比较
"Compare BTC and ETH prices over the last week"
- 显示比特币和以太坊之间的价格范围和比较
自定义查询:
除了上述预定义的问题外,用户还可以键入自己对支持的财务数据的查询。ReAct Agent将使用相同的MCP工具智能地处理自定义问题。
重要提示:
- 建议使用预定义问题以获得最佳结果
- 自定义查询应侧重于 支持资产 在演示中列出
- 所有查询都必须在 只读限制 demo的
- 不支持复杂的计算(波动率、移动平均线、RSI)
- 所有价格四舍五入到小数点后两位
🎨 用户界面
聊天面板(左)
- 预定义问题按钮 用于快速访问常见查询
- 文本输入字段 用于键入自定义问题
- 实时响应 带有工具使用指示器
- 解析数据显示 如果可用
- 原始MCP响应 为了提高透明度
MCP工具调用面板(右上)
- 实时工具调用跟踪 带状态指示器
- 调用参数 显示
- 定时信息 (开始/完成)
- 统计摘要 (已完成/正在执行/错误)
MCP控制台日志面板(右下)
- 实时MCP通信 日志
- 颜色编码条目 (信息/通知/成功/错误)
- 原始JSON-RPC消息 用于调试
- 自动滚动 到最新条目
UI框架
- 内置于 MongoDB LeafyGreen用户界面 组件库
- 响应式设计 具有专业的MongoDB风格
- 暗模式支持 通过LeafygreenProvider
- 可访问组件 遵循WCAG指南
- 交互元素:模态对话框、徽章、骨架加载器
- 打字机动画 AI响应
🔧 技术实现
AWS基岩客户端
该应用程序使用 BedrockClient 类:
- 支持AWS SSO身份验证(主要方法)
- 回退到AWS凭据文件或环境变量
- 自动从已装载的凭据中提取凭据
~/.aws目录 - 使用中指定的模型
CHAT_COMPLETIONS_MODEL_ID
ReAct代理集成
// Create ReAct agent with MCP tools
const agent = createReactAgent({
llm: bedrockClient,
tools: mcpTools,
systemMessage: systemPrompt,
});
// Process user question
const stream = await agent.stream({
messages: [new HumanMessage({ content: userQuestion })],
});MCP服务器通信
应用程序生成 mongodb-mcp服务器 作为子进程,并通过JSON-RPC进行通信:
// Spawn MongoDB MCP Server process
mcpProcess = spawn('npx', [
'-y', 'mongodb-mcp-server',
'--connectionString', 'mongodb+srv://...',
'--readOnly'
]);
// Send JSON-RPC request
const request = {
jsonrpc: '2.0',
id: mcpMessageId++,
method: 'tools/call',
params: { name: 'find', arguments: params }
};
mcpProcess.stdin.write(JSON.stringify(request) + '\n');工具调用跟踪
- 唯一呼叫ID 对于每次MCP工具调用
- 状态跟踪 (执行→ 完成/错误)
- 参数记录 为了提高透明度
- 定时信息 用于性能监控
实时更新实施
- 2秒轮询间隔 用于MCP数据刷新
- 非阻塞UI更新 在数据提取过程中
- 条件呈现 防止不必要的重新渲染
- 高效的状态管理 使用React钩子
全球MCP商店(单例模式)
- 单个MCP服务器实例 在所有API路线上共享
- 防止多个服务器生成 更好的资源管理
- 集中状态管理 用于工具调用和日志
- 线程安全操作 通过适当的生命周期管理
- 重置功能 用于新的演示会话
🚀 Docker快速入门
先决条件
- 已安装Docker和Docker Compose
- 创建数据库的MongoDB Atlas集群
- 具有Bedrock访问权限的AWS帐户
- 在您的主机上配置了SSO的AWS CLI
MongoDB数据设置
此演示需要将金融时间序列数据加载到您的MongoDB数据库中。示例数据文件在 src/public 目录:
binanceCryptoData.json-加密货币OHLCV数据(BTC、ETH、XRP、SOL、DOGE、ADA)yfinanceMarketData.json-股票/ETF OHLCV数据(HYG、LQD、TLT、GLD、USO、EEM、QQQ、SPY、XLE、VNQ)
将数据导入MongoDB Atlas
- 导入数据:
- 在MongoDB Atlas中导航到您的集群 - 点击“收藏” - 创建两个集合: binanceCryptoData 和 yfinanceMarketData - 使用“导入数据”功能上传JSON文件
重要:演示仅适用于这些确切的集合名称,因为它们在React Agent中是硬编码的。
数据结构
这两个集合都遵循OHLCV(打开、高、低、关闭、音量)格式:
{
"_id": "ObjectId",
"symbol": "BTC", // Asset symbol
"timestamp": "2025-07-01T00:00:00Z", // ISO timestamp
"open": 65432.10, // Opening price
"high": 65500.00, // Highest price
"low": 65400.00, // Lowest price
"close": 65450.25, // Closing price
"volume": 12345.67 // Trading volume
}为什么选择Docker?
MongoDB MCP服务器(mongodb-mcp-server)是一个专门的npm包,它:
- 实现MongoDB的模型上下文协议
- 需要特定的Node.js运行时配置
- 需要适当的流程管理来进行产卵和沟通
- 在Docker镜像中预先安装和配置
如果没有Docker,您需要手动安装和配置MCP服务器,此演示不支持此操作。
AWS SSO身份验证设置
1.配置AWS SSO
# Configure AWS SSO
aws configure sso
# Enter the following information when prompted:
# SSO start URL: https://your-sso-portal.awsapps.com/start
# SSO Region: us-east-1 (or your preferred region)
# Account ID: your-aws-account-id
# Role name: your-role-name
# CLI default client Region: us-east-1 (or your preferred region)
# CLI default output format: json2.登录AWS SSO
# Login to AWS SSO
aws sso login --profile default
# This will open a browser window for authentication
# Complete the SSO login process3.验证基岩通道
# Test Bedrock access
aws bedrock list-foundation-models --region us-east-1 --profile default
# You should see a list of available models including Claude4.设置环境变量
创建一个 .env 项目根目录中的文件:
# MongoDB MCP Server Configuration
NEXT_PUBLIC_MCP_CONNECTION_STRING=
NEXT_PUBLIC_MCP_API_CLIENT_ID=
NEXT_PUBLIC_MCP_API_CLIENT_SECRET=
# AWS Bedrock Configuration
NEXT_PUBLIC_AWS_REGION=us-east-1
NEXT_PUBLIC_CHAT_COMPLETIONS_MODEL_ID=anthropic.claude-3-haiku-20240307-v1:0替换占位符:
- ``:您的MongoDB Atlas用户名
- `
`:您的MongoDB Atlas密码
- ``:您的MongoDB Atlas集群名称
- `
:您的数据库名称(例如。,financial_data`) - ``:您的API客户端ID
- ``:您的API客户机密
环境变量配置
该应用程序支持多种环境变量格式以实现灵活性:
MongoDB配置
NEXT_PUBLIC_MCP_CONNECTION_STRING-MongoDB连接字符串NEXT_PUBLIC_MCP_API_CLIENT_ID-MCP服务器的API客户端IDNEXT_PUBLIC_MCP_API_CLIENT_SECRET-MCP服务器的API客户端机密
AWS配置
AWS_REGION或NEXT_PUBLIC_AWS_REGION-AWS区域(默认:us-east-1)AWS_PROFILE或NEXT_PUBLIC_AWS_PROFILE-AWS配置文件名称(默认:default)CHAT_COMPLETIONS_MODEL_ID或NEXT_PUBLIC_CHAT_COMPLETIONS_MODEL_ID-基岩模型IDAWS_SHARED_CREDENTIALS_FILE-AWS凭据文件的路径(在Docker中自动挂载)AWS_CONFIG_FILE-AWS配置文件的路径(在Docker中自动挂载)
该应用程序智能地检查标准和 NEXT_PUBLIC_ 前缀变量以实现最大兼容性。
使用Docker运行演示
1.克隆存储库
git clone
cd leafy-bank-capitalmarkets-mcp2.配置环境变量
创建一个 .env 项目根目录中的文件(不在src目录中):
# MongoDB MCP Server Configuration
NEXT_PUBLIC_MCP_CONNECTION_STRING=
NEXT_PUBLIC_MCP_API_CLIENT_ID=
NEXT_PUBLIC_MCP_API_CLIENT_SECRET=
# AWS Bedrock Configuration
CHAT_COMPLETIONS_MODEL_ID=anthropic.claude-3-sonnet-20240229-v1:0
AWS_REGION=us-east-1
AWS_PROFILE=default3.使用Docker Compose构建和运行
# Build the Docker image
make build
# Start the application
make up
# Or use docker-compose directly
docker-compose up --build4.访问应用程序
打开 http://localhost:8080 在您的浏览器中。
5.停止应用程序
# Stop the containers
make down
# Or use docker-compose directly
docker-compose downDocker配置详细信息
这 docker-compose.yml 文件:
- 装载您的AWS凭据以进行SSO身份验证
- 安装
mongodb-mcp-server包裹 - 配置Node.js环境
- 暴露web界面的端口8080
重要:应用程序完全在Docker中运行。不要试图逃跑 npm install 或 npm start 当地。
📡 API终点
POST/api/mcp/反应剂
使用ReAct代理处理问题。
请求:
{
"question": "What is the latest BTC price?"
}答复:
{
"success": true,
"question": "What is the latest BTC price?",
"toolCalls": [
{
"name": "mcp_find",
"arguments": {
"database": "agentic_capital_markets",
"collection": "binanceCryptoData",
"filter": { "symbol": "BTC" },
"projection": { "symbol": 1, "close": 1, "timestamp": 1, "_id": 0 },
"sort": { "timestamp": -1 },
"limit": 1
}
}
],
"toolResults": [
{
"tool": "mcp_find",
"arguments": {...},
"result": {...}
}
],
"finalAnswer": "The latest BTC price is $119,415.55 as of 7/28/2025, 1:59:00 AM.",
"timestamp": "2025-07-31T09:46:11.000Z",
"status": {
"health": {...},
"toolCalls": {...},
"consoleLogs": {...},
"availableTools": [...]
}
}GET/api/mcp/工具调用
获取有关MCP工具调用的实时信息。
GET/api/mcp/控制台日志
获取MCP服务器通信日志。
GET/api/mcp/health
使用MCP服务器状态进行健康检查。
GET/api/mcp/基岩状态
检查AWS Bedrock客户端状态,并可选择测试连接。
查询参数:
test=true-对AWS基岩进行实际连接测试
答复:
{
"timestamp": "2025-07-31T09:46:11.000Z",
"status": {
"initialized": true,
"region": "us-east-1",
"modelId": "anthropic.claude-3-haiku-20240307-v1:0"
},
"connectionTest": {
"success": true,
"message": "Connection successful"
},
"environment": {
"nodeEnv": "production",
"awsRegion": "us-east-1",
"hasAwsProfile": true
}
}GET/api/mcp/aws调试
调试AWS凭据和配置问题。
答复:
{
"success": true,
"message": "AWS credentials working!",
"environment": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "default"
},
"credentialFileExists": true,
"configFileExists": true,
"modelsFound": 12
}GET/api/mcp/状态?重置=真
获取系统状态,并可选择重置MCP服务器以进行新演示。
查询参数:
reset=true-重置MCP服务器实例
GET/api/mcp/tools
列出所有可用的MCP工具。
答复:
{
"count": 3,
"tools": [
{
"name": "find",
"description": "Find documents from MongoDB collections..."
},
{
"name": "aggregate",
"description": "Perform aggregation operations..."
},
{
"name": "list-collections",
"description": "List collections in a database..."
}
]
}🎯 演示场景
场景1:基础价格查询
- 选择:
"What is the latest available BTC close price?" - 观看ReAct Agent分析问题
- 查看MCP工具调用实时执行
- 查看解析后的答案+原始MCP响应
- 观察显示通信的控制台日志
场景2:价格分析
- 选择:
"Show me the highest price of ETH close price over the last 14 days" - 观看ReAct Agent选择
aggregate工具 - 查看聚合管道查找最大值
- 查看最高价及其日期
- 监控控制台日志中的性能
场景3:多工具分析
- 选择:
"Compare BTC and ETH prices over the last week" - 观看ReAct Agent进行多个工具调用
- 查看两种加密货币的数据
- 查看综合比较分析
- 了解ReAct Agent如何组合工具
场景4:数据库探索
- 选择:
"List collections in the database" - 请参阅重新代理选择
list-collections工具 - 查看可用的数据库集合
- 了解MCP工具功能
场景5:自定义查询
- 键入您自己的问题:
"What was the average closing price of BTC last week?" - 观看ReAct Agent了解您的自定义查询
- 请选择合适的MCP工具(可能
aggregate) - 查看计算出的平均价格
- 体验自然语言处理的灵活性
🔍 教育价值
此演示演示了:
ReAct代理权益
- 数据库查询的自然语言 转换
- 智能刀具选择 基于上下文
- 复杂查询分解 进入多个工具调用
- 实时推理和行动 过程
MCP协议优势
- 标准化工具界面 用于数据库访问
- 没有直接的数据库依赖关系 在应用中
- 实时通信 使用数据库服务器
- 透明的工具调用 用于调试
生产准备就绪
- 只读模式 为了安全
- 流程生命周期管理
- 综合录井 监测
- 优雅的错误处理
🛡 安全功能
- 只读数据库访问 -无写入操作
- 进程分离 -MCP服务器在单独的进程中运行
- 无直接凭据 在应用程序代码中
- 超时保护 -防止挂起请求
- AWS SSO身份验证 -安全进入基岩
📈 性能监控
- 工具调用时间 -跟踪MCP服务器性能
- ReAct代理响应时间 -监控AI处理速度
- 响应解析 -监控成功率
- 误差跟踪 -快速识别问题
- 实时统计 -实时性能仪表板
🔄 未来的增强功能
- 其他MCP工具 支持(数据库统计等)
- 更多数据源 (股票、加密货币、新闻)
- 高级查询解析 对于复杂的问题
- 用户认证 以及个性化
- 导出功能 用于分析结果
- 自定义ReAct代理提示 对于特定域
📝 故障排除
Docker问题
# Check if containers are running
docker ps
# View container logs
docker logs leafy-bank-capitalmarkets-mcp-app-1
# Rebuild if needed
docker-compose down
docker-compose build --no-cache
docker-compose upAWS SSO问题
# On your HOST machine (not in Docker):
# Check SSO login status
aws sts get-caller-identity --profile default
# Re-login if needed
aws sso login --profile default
# Verify Bedrock access
aws bedrock list-foundation-models --region us-east-1 --profile default备注:AWS凭据从您的主机装载到Docker容器中。在启动Docker之前,请确保您已通过主机上的SSO登录。
MCP服务器问题
- 连接被拒绝:检查中的MongoDB Atlas连接字符串
.env - 认证失败:验证API凭据是否正确
- 未返回数据:确保仅查询支持的资产
- 检查日志:使用
docker logs查看详细的MCP服务器输出
常见Docker问题
- 端口已在使用中:另一个服务正在使用端口8080
- 权限不足:检查Docker守护进程是否正在运行
- 未找到AWS凭据:确保
~/.aws主机上存在目录 - 未加载环境变量:检查
.env文件位于项目根目录中
开发人员工具和调试
1.AWS调试端点
# Test AWS credentials and configuration
curl http://localhost:8080/api/mcp/aws-debug2.基岩状态检查
# Check Bedrock client status
curl http://localhost:8080/api/mcp/bedrock-status
# Test actual Bedrock connection
curl http://localhost:8080/api/mcp/bedrock-status?test=true3.MCP服务器重置
# Reset MCP server for a fresh demo
curl http://localhost:8080/api/mcp/status?reset=true4.查看可用工具
# List all available MCP tools
curl http://localhost:8080/api/mcp/tools5.实时监控
- 打开浏览器DevTools查看控制台日志
- 监视API调用的“网络”选项卡
- 检查控制台日志面板中的MCP通信
- 查看执行跟踪的工具调用面板
📚 其他资源
使用游标设置MongoDB MCP服务器
想在自己的开发工作流程中使用MongoDB MCP Server吗?看看这个优秀的视频教程:
本视频提供了使用Cursor设置MongoDB MCP服务器的清晰分步指南。演示后分享它是完美的,因为它展示了MCP在高级开发工具中的真正潜力。
了解更多
- **** -正式执行和文件
- MongoDB MCP服务器公告 -MongoDB MCP实现的完整细节
- 模型上下文协议文档 -了解有关MCP标准的更多信息
📄 许可证
看 许可证 文件以获取详细信息。
