AI助手开发框架

一个基于LangGraph和模型上下文协议(MCP)的模块化、可扩展AI助手,能够通过自然语言与Salesforce、GitHub和本地文件系统等多种系统交互。

  • by RoshanRN14
  • HTML
  • 本地部署
  • 更新于
在 GitHub 查看 RoshanRN14/MCP-Enabled-Chatbot

使用说明

🤖 MCP驱动的人工智能助手

模块化、可扩展 使用LangGraph和模型上下文协议(MCP)构建的AI助手 可以与多个系统交互,例如 赛富时, GitHub,以及 本地文件系统 --通过自然语言。

该项目演示了如何构建 工具感知、有状态的AI代理 即:

  • 智能选择工具
  • 避免不必要的工具调用
  • 安全处理大型刀具输出
  • 随着新MCP服务器的添加,可以清晰地扩展

✨ 主要特点

  • 🧠 工具感知推理 使用LangGraph

  • 🔌 多MCP支持

    • Salesforce MCP
    • GitHub MCP
    • 文件系统MCP
  • 🔄 有状态的对话 具有线程持久性

  • 🛑 安全处理大输出 (文件系统保护、截断)

  • 💬 自然反应 (除非请求,否则没有原始JSON)

  • 🌐 简洁的用户界面 (单人 index.html,无前端框架)

  • 🧩 易于扩展 --添加新的MCP服务器而不重写逻辑


🏗️ 架构概述

User
 ↓
Frontend (index.html)
 ↓
Flask API
 ↓
LangGraph State Machine
 ↓
LLM (OpenAI / Gemini)
 ↓
MCP Tool Nodes
 ├── Salesforce MCP
 ├── GitHub MCP
 └── Filesystem MCP

关键设计原则:

  • 前端与MCP无关
  • 后端决定何时使用工具
  • 工具输出在到达用户之前进行总结
  • 无边界工具(文件系统)被沙盒化

📁 项目结构

.
├── app_flask.py                  # Flask backend
├── mcp_chatbot_backend.py        # LangGraph + MCP logic
├── templates/index.html          # Frontend UI (single file)
├── chatbot.db                    # SQLite checkpointer (auto-created)
├── .env                          # Environment variables
└── README.md

🚀 支持的MCP服务器

☁️ Salesforce MCP

示例:

  • 获取Salesforce用户名
  • 列出组织
  • 使用SOQL查询帐户
  • 部署/检索元数据

🐙 GitHub MCP

示例:

  • 搜索存储库
  • 从存储库读取文件
  • 创建问题并提取请求
  • 列出提交和问题

⚠️ GitHub MCP做 不 暴露经过身份验证的用户身份(who am I)通过设计。

📁 文件系统MCP

示例:

  • 列出目录
  • 读/写文件
  • 搜索文件
  • 显示目录结构(有安全限制)

有意限制大型文件系统输出,以避免令牌溢出。


🛡️ 安全与设计选择

  • ❌ 无原始文件系统转储
  • ❌ 没有无限的目录树
  • ❌ 问候语中没有工具垃圾邮件
  • ✅ 基于意图的工具门控
  • ✅ 大响应的输出截断
  • ✅ 为缩小查询范围提供明确的用户指导

🧪 示例提示

Hello
What can you help me with?
Get my Salesforce username
Show my Salesforce accounts
Search GitHub repositories for langgraph
List top-level folders in this directory
Search files named *.py

🛠️ 安装说明

1.️⃣ 克隆存储库

git clone https://github.com/your-username/mcp-ai-assistant.git
cd mcp-ai-assistant

2.️⃣ 创建虚拟环境

python -m venv .venv
source .venv/bin/activate   # macOS/Linux
.venv\Scripts\activate      # Windows

3.️⃣ 安装依赖项

pip install -r requirements.txt

4.️⃣ 配置环境变量

创建一个 .env 文件:

OPEN_AI_API_KEY=your_openai_key
GITHUB_TOKEN=your_github_pat

Salesforce身份验证通过Salesforce CLI处理(sf).


5.️⃣ 对Salesforce进行身份验证(Salesforce MCP需要)

Salesforce MCP使用 Salesforce命令行界面(sf) 用于身份验证。 您必须至少对一个Salesforce组织进行身份验证,然后MCP工具才能访问Salesforce数据。


🔹 步骤1:安装Salesforce CLI

使用npm安装Salesforce CLI:

npm install -g @salesforce/cli

验证安装:

npx sf --version

🔹 步骤2:登录您的Salesforce组织

使用基于浏览器的登录进行身份验证:

npx sf org login web

这将:

  • 打开默认浏览器
  • 提示您登录Salesforce
  • 在本地存储经过身份验证的组织,以供CLI和MCP使用

这适用于 开发者, 沙盒,以及 生产 orgs。


🔹 步骤3:验证经过身份验证的组织

列出所有已登录的组织:

npx sf org list

该组织标记为 默认/目标组织 将由Salesforce MCP自动使用。


🔹 步骤4:(可选)设置默认目标组织

如果多个组织都经过身份验证,请明确地将其中一个设置为默认值:

npx sf config set target-org=your_username@force.com --global

验证:

npx sf config list

🔹 步骤5:确认Salesforce MCP访问权限

身份验证后,Salesforce MCP可以访问您的组织。 您可以通过运行一个简单的查询或询问助手来验证这一点:

What's my Salesforce username?
List all Salesforce accounts

如果身份验证成功,将返回来自Salesforce组织的真实数据。


⚠️ 常见问题

❌ sf 未识别

  • 安装后重新启动终端
  • 确保npm全局二进制文件在您的PATH中

❌ 浏览器登录失败

❌ MCP身份验证错误

  • 跑 npx sf org list 确认登录
  • 使用重新验证 npx sf org login web

🔐 安全说明

  • 管理Salesforce凭据 完全通过Salesforce CLI
  • 此项目中未存储凭据
  • Salesforce MCP使用您的本地CLI身份验证上下文

Salesforce CLI身份验证完成后,Salesforce MCP工具即可使用。


6.️⃣ 运行聊天机器人

python app_flask.py

🧩 扩展助手

添加新的MCP服务器很简单:

  1. 添加到 MCP_SERVERS 在 mcp_chatbot_backend.py
  2. 重新启动后端
  3. (可选)更新侧边栏UI以反映新服务器

无需更改路由逻辑。


📌 已知限制

  • GitHub MCP不公开经过身份验证的用户身份
  • 出于安全考虑,有意限制文件系统操作
  • 大型输出被汇总或截断
  • 这是一个单用户演示设置(不是多租户)

🧠 为什么这个项目很重要

这个项目超越了“与工具聊天”的演示和展示:

  • 如何构建 真实代理状态
  • 如何控制 工具爆炸
  • 如何设计 MCP不可知系统
  • 如何安全地将强大的工具暴露给LLM

这为以下方面奠定了坚实的基础:

  • 内部开发人员助理
  • 运维副驾驶
  • 企业AI工具
  • agent体系结构研究

📜 许可证

MIT许可证——可以自由使用、修改和扩展。