使用说明
🤖 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中
❌ 浏览器登录失败
- 确保允许弹出窗口
- 尝试手动登录 https://login.salesforce.com
❌ 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服务器很简单:
- 添加到
MCP_SERVERS在mcp_chatbot_backend.py - 重新启动后端
- (可选)更新侧边栏UI以反映新服务器
无需更改路由逻辑。
📌 已知限制
- GitHub MCP不公开经过身份验证的用户身份
- 出于安全考虑,有意限制文件系统操作
- 大型输出被汇总或截断
- 这是一个单用户演示设置(不是多租户)
🧠 为什么这个项目很重要
这个项目超越了“与工具聊天”的演示和展示:
- 如何构建 真实代理状态
- 如何控制 工具爆炸
- 如何设计 MCP不可知系统
- 如何安全地将强大的工具暴露给LLM
这为以下方面奠定了坚实的基础:
- 内部开发人员助理
- 运维副驾驶
- 企业AI工具
- agent体系结构研究
📜 许可证
MIT许可证——可以自由使用、修改和扩展。
