使用说明
LangChain MCP多服务器集成
一个全面的模型上下文协议(MCP)实现,将多个数据源和服务与LangChain代理集成在一起,用于智能数据处理和存储。
🚀 特性
- 多服务器架构:天气、股票、MongoDB和Elasticsearch服务器
- AI代理集成:智能使用所有可用工具的LangChain代理
- 自动数据存储:对话和数据自动存储在Elasticsearch中
- 实时数据:实时天气警报和股票投资组合数据
- 安全配置:通过管理凭据
.netrc文件
📋 先决条件
- Python 3.8+
- Elasticsearch正在运行
localhost:9200 - MongoDB正在运行
localhost:27017(可选) - Kite Connect API股票数据账户
- LLM API访问(与OpenAI兼容的终结点)
🛠️ 安装
- 克隆存储库:
git clone https://github.com/vamsivenkat987/langchain_mcp_server.git
cd langchain_mcp_server/mcp
- 安装依赖项:
pip install langchain-mcp-adapters langchain-openai elasticsearch pymongo kiteconnect requests
- 启动所需服务:
# Start Elasticsearch
docker run -d -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.11.0
# Start MongoDB (optional)
docker run -d -p 27017:27017 mongo:latest
⚙️ 配置
创建一个 .netrc 项目目录中的文件:
machine llm.model
login your_api_key_here
password https://your-llm-endpoint-here
machine stocks.data
login your_kite_api_key
password your_kite_api_secret
account your_kite_access_token
🏃♂️ 用法
快速开始
python3 mcp_client.py
独立服务器测试
# Test weather server
python3 weather_server.py
# Test stock server
python3 stocks_server.py
# Test Elasticsearch server
python3 elastic_search_server.py
# Test MongoDB server
python3 mongo_server.py
🔧 可用工具
天气服务器(weather_server.py)
get_alerts(state)-获取美国某个州的活跃天气警报- 使用美国国家气象局API
股票服务器(stocks_server.py)
get_holdings()-从Kite Connect检索当前股票投资组合- 需要有效的Kite Connect会话
Elasticsearch服务器(elastic_search_server.py)
add_document(document, index, doc_id)-在Elasticsearch中存储文档- 自动生成时间戳和UUID
- 字符串输入的JSON解析
MongoDB服务器(mongo_server.py)
add_conversation_data(user_content, ai_content)-存储对话add_customer_data(name, age)-存储客户信息
📁 项目结构
mcp/
├── mcp_client.py # Main LangChain agent client
├── weather_server.py # Weather alerts MCP server
├── stocks_server.py # Stock portfolio MCP server
├── elastic_search_server.py # Elasticsearch MCP server
├── mongo_server.py # MongoDB MCP server
├── test_elastic_search.py # Elasticsearch testing utilities
├── test_kite.py # Kite Connect authentication flow
├── test_mcp.py # MCP server testing
├── .netrc # API credentials (create this)
├── oneEGaDCA.crt # SSL certificate
└── README.md # This file
🤖 AI代理工作流
LangChain代理遵循以下工作流程:
- 流程用户查询:了解用户的要求
- 调用适当的工具:
- 天气查询→
get_alerts(state) - 库存查询→
get_holdings()
- 天气查询→
- 提供自然反应:用通俗易懂的语言回答用户的问题
- 存储数据:自动将对话和数据保存到Elasticsearch
📊 数据存储
Elasticsearch指数
conversations-用户查询和人工智能响应weather-天气警报数据stocks-股票投资组合信息customer_data-客户信息
MongoDB集合
conversations-聊天记录customers-客户数据
🔐 安全功能
- 凭据存储在
.netrc文件(不在代码中) - SSL证书支持
- 环境变量配置
- 安全的API令牌处理
🔍 查询示例
- “给我纽约的最新天气警报”
- “我持有的股票是什么?”
- “我的股票投资组合和纽约的天气有什么关系吗?”
- “显示加利福尼亚州的天气并保存数据”
🐛 故障排除
常见问题
-
Elasticsearch连接错误
- 确保Elasticsearch正在运行
localhost:9200 - 检查服务是否可用:
curl http://localhost:9200
- 确保Elasticsearch正在运行
-
Kite Connect身份验证
- 在中验证API凭据
.netrc - 检查访问令牌是否有效(令牌每天过期)
- 在中验证API凭据
-
MCP服务器错误
- 检查服务器日志以获取详细的错误消息
- 确保安装了所有依赖项
-
LLM超时错误
- 增加超时时间
mcp_client.py - 尝试使用流媒体而不是
ainvoke
- 增加超时时间
📝 API 文档
天气服务器
- 端点:美国国家气象局API
- 速率限制:不需要身份验证
- 数据格式:JSON天气警报
股票服务器
- 端点:Kite Connect API
- 认证:API密钥+机密+访问令牌
- 速率限制:根据Zerodha限制
- 数据格式:损益组合持股
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
🆘 支持
对于问题和疑问:
- 在GitHub上创建问题
- 检查故障排除部分
- 查看服务器日志以获取详细的错误信息
🔄 版本历史记录
- v1.0.0 -多服务器MCP集成的初始版本
- v1.1.0版本 -添加了自动数据存储并改进了错误处理
- v1.2.0版本 -增强的身份验证和安全功能