多服务器集成智能数据处理系统

一个全面的模型上下文协议(MCP)实现,通过LangChain代理集成多个数据源和服务,用于智能数据处理和存储。

  • by vamsivenkat987
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 vamsivenkat987/langchain_mcp_server

使用说明

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兼容的终结点)

🛠️ 安装

  1. 克隆存储库:
git clone https://github.com/vamsivenkat987/langchain_mcp_server.git
cd langchain_mcp_server/mcp
  1. 安装依赖项:
pip install langchain-mcp-adapters langchain-openai elasticsearch pymongo kiteconnect requests
  1. 启动所需服务:
# 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代理遵循以下工作流程:

  1. 流程用户查询:了解用户的要求
  2. 调用适当的工具:
    • 天气查询→ get_alerts(state)
    • 库存查询→ get_holdings()
  3. 提供自然反应:用通俗易懂的语言回答用户的问题
  4. 存储数据:自动将对话和数据保存到Elasticsearch

📊 数据存储

Elasticsearch指数

  • conversations -用户查询和人工智能响应
  • weather -天气警报数据
  • stocks -股票投资组合信息
  • customer_data -客户信息

MongoDB集合

  • conversations -聊天记录
  • customers -客户数据

🔐 安全功能

  • 凭据存储在 .netrc 文件(不在代码中)
  • SSL证书支持
  • 环境变量配置
  • 安全的API令牌处理

🔍 查询示例

  • “给我纽约的最新天气警报”
  • “我持有的股票是什么?”
  • “我的股票投资组合和纽约的天气有什么关系吗?”
  • “显示加利福尼亚州的天气并保存数据”

🐛 故障排除

常见问题

  1. Elasticsearch连接错误

    • 确保Elasticsearch正在运行 localhost:9200
    • 检查服务是否可用: curl http://localhost:9200
  2. Kite Connect身份验证

    • 在中验证API凭据 .netrc
    • 检查访问令牌是否有效(令牌每天过期)
  3. MCP服务器错误

    • 检查服务器日志以获取详细的错误消息
    • 确保安装了所有依赖项
  4. LLM超时错误

    • 增加超时时间 mcp_client.py
    • 尝试使用流媒体而不是 ainvoke

📝 API 文档

天气服务器

  • 端点:美国国家气象局API
  • 速率限制:不需要身份验证
  • 数据格式:JSON天气警报

股票服务器

  • 端点:Kite Connect API
  • 认证:API密钥+机密+访问令牌
  • 速率限制:根据Zerodha限制
  • 数据格式:损益组合持股

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

🆘 支持

对于问题和疑问:

  • 在GitHub上创建问题
  • 检查故障排除部分
  • 查看服务器日志以获取详细的错误信息

🔄 版本历史记录

  • v1.0.0 -多服务器MCP集成的初始版本
  • v1.1.0版本 -添加了自动数据存储并改进了错误处理
  • v1.2.0版本 -增强的身份验证和安全功能