基于LangGraph和MCP的GENIE-AI代理框架
使用LangGraph.js、LangChain和模型上下文协议(MCP)构建强大的AI代理。 GENIE是一个生产就绪的全栈框架,用于创建智能AI应用程序。它结合了 Next.js 15 和 LangGraph.js 用于前端代理编排,以及 Python FastMCP服务器 和 50+内置工具 包括计算器、转换器、可视化和开发工具。
🎯 为什么是GENIE?
- 多模型支持:与合作 谷歌双子座, OpenAI GPT-4, 安thropic克劳德,以及任何与LangChain兼容的LLM
- 50+MCP工具:用于计算、数据转换、web工具、代码分析和交互式图表的预构建实用程序
- 交互式可视化:饼图、条形图、折线图和二维码直接在聊天中呈现
- 多代理架构:LangGraph的主管模式,用于协调专门的子代理
- 企业认证:NextAuth.js与谷歌OAuth、Azure AD和可定制的提供商
- MongoDB集成:用于查询和存储数据的内置数据库工具
- 可扩展:易于添加自定义MCP工具和新的AI代理
📂 项目结构
该项目分为两个主要部分:
genie_client/:Next.js 15前端,支持LangGraph.js、LangChain、TanStack查询和Tailwind CSSgenie_server/:Python后端,带FastMCP、MongoDB集成和50多种实用工具
✨ 主要特点
🔐 认证
使用以下方式实现安全用户身份验证 NextAuth.js,支持多个提供商:
- 谷歌OAuth:使用Google帐户轻松登录。
- Azure AD:企业级认证。
- 可定制的:可以添加其他提供程序
app/api/auth/[...nextauth]/route.ts.
🔌 模型上下文协议(MCP)集成
该项目完全拥抱 模型上下文协议 对于标准化的工具使用:
- FastMCP服务器:The
genie_server运行FastMCP实例(server.py)展示50多种生产就绪工具。 - 工具选择前端(LangGraph代理)动态发现并选择这些MCP工具来满足用户请求,从而实现解耦和可扩展的架构。
- 交互式可视化:图表(饼图、条形图、直线图、甜甜圈图)、美人鱼图、统计仪表板和二维码在聊天响应中内联呈现。
📊 可用的MCP工具
🔢 Analytics Tools
| 工具 | 说明 |
|---|---|
calculate_metrics | 根据访问量和转化率计算转化率 |
analyze_sentiment_keyword | 分析文本中的积极情绪关键字 |
💰 Finance Tools
| 工具 | 说明 |
|---|---|
get_stock_price | 获取股票代码的模拟股票价格 |
🗄️ Data Tools
| 工具 | 说明 |
|---|---|
get_userData | 查询MongoDB数据库以获取用户文档 |
📈 Visualization Tools
| 工具 | 说明 |
|---|---|
generate_pie_chart | 创建带有标签和值的交互式饼图 |
generate_bar_chart | 创建垂直/水平条形图 |
generate_line_chart | 为趋势创建多系列折线图 |
generate_doughnut_chart | 创建甜甜圈图(带中心孔的饼图) |
generate_comparison_chart | 创建比较两个数据集的分组条形图 |
generate_mermaid_diagram | 创建流程图、序列图等 |
generate_stats_dashboard | 使用趋势和指标创建KPI仪表板 |
🛠️ Utility Tools
| 工具 | 说明 |
|---|---|
generate_password | 通过强度分析生成安全的随机密码 |
generate_uuid | 生成UUID v1(基于时间)或v4(随机) |
hash_text | 使用MD5、SHA1、SHA256或SHA512对文本进行哈希 |
encode_base64 | 将文本编码为Base64或将Base64解码为文本 |
word_count | 获取字数、阅读时间和文本统计信息 |
calculate_percentage | 计算一个值占总数的百分比 |
calculate_discount | 计算折扣金额和最终价格 |
calculate_tip | 使用可选的账单拆分计算小费 |
calculate_bmi | 根据体重/身高计算体重指数 |
calculate_loan | 计算每月付款和利息总额 |
convert_temperature | 在摄氏度、华氏度、开尔文之间转换 |
convert_length | 在公制和英制长度单位之间转换 |
convert_weight | 公制和英制重量单位之间的转换 |
convert_data_size | 在B、KB、MB、GB、TB、PB之间转换 |
get_current_datetime | 使用时区偏移获取当前日期/时间 |
calculate_date_difference | 计算两个日期之间的天数/周数/月数 |
add_days_to_date | 在日期中增减天数 |
format_json | 美化和验证JSON字符串 |
generate_lorem_ipsum | 生成占位符Lorem Ipsum文本 |
🌐 Web Tools
| 工具 | 说明 |
|---|---|
parse_url | 将URL解析为组件(域、路径、参数) |
build_url | 根据基、路径和查询参数构建URL |
encode_url | URL编码或解码字符串 |
extract_emails | 从文本中提取所有电子邮件地址 |
extract_urls | 从文本中提取所有URL |
validate_email | 通过详细反馈验证电子邮件格式 |
generate_qr_data | 生成二维码数据(在UI中呈现) |
extract_hashtags | 从文本中提取#标签 |
extract_mentions | 从文本中提取@提及 |
analyze_domain | 分析域名(TLD、子域等) |
slugify | 将文本转换为URL友好的slug |
💻 Developer Tools
| 工具 | 说明 |
|---|---|
test_regex | 测试正则表达式模式并显示所有匹配项 |
convert_color | 在HEX、RGB和HSL格式之间转换 |
generate_color_palette | 生成互补/类似/三元调色板 |
escape_string | 转义HTML、JSON、正则表达式、SQL或URL |
diff_text | 比较两个文本并显示差异 |
minify_json | 通过删除空格来缩小JSON |
count_code_lines | 计算代码、注释和空行 |
generate_color_from_text | 从任何文本生成一致的颜色 |
📝 及时管理
- 保存和重复使用:用户可以将当前的聊天上下文或特定指令保存为可重复使用的提示。
- 数据库存储:提示存储在数据库中,便于通过
PromptSaveDialog.
🤖 多代理和自定义代理聊天
- 主管模式:用途
langgraph-supervisor组建一支由专业子代理组成的团队。 - 海关代理:用户可以使用特定的系统提示、模型和允许的工具定义和配置自定义子代理。
- 智能路由:主管代理分析用户查询,并将其路由到最合适的子代理进行处理。
📄 文档和图像分析
- 文件上传:支持通过上传各种文件类型
api/upload终点。 - 图像分析:图像经过处理(base64编码)并传递给具有视觉能力的模型进行分析。
- 文档分析:从文档(PDF、DOCX等)中提取文本,为AI代理提供上下文。
� 截图
Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5 Screenshot 6 Screenshot 7 Screenshot 8 Screenshot 9 Screenshot 10 Screenshot 11 Screenshot 12 Screenshot 13
�🚀 入门指南
按照以下说明在本地设置和运行项目。
先决条件
确保已安装以下内容:
- Node.js (v18+推荐)
- pnpm (包管理器)
- python (v3.10+)
- MongoDB (在默认端口上本地运行
27017)
______________________________________________________________________
🐍 后端设置(genie_server)
- 导航到服务器目录:
cd genie_server- 创建并激活虚拟环境:
# Windows
python -m venv .venv
.venv\Scripts\activate
# macOS/Linux
python3 -m venv .venv
source .venv/bin/activate- 安装依赖项:
pip install -r requirements.txt- 启动MCP服务器:
python server.py_该服务器充当可流式传输的MCP服务器(HTTP/SSE)。_
______________________________________________________________________
⚛️ 前端设置(genie_client)
- 导航到客户端目录:
cd genie_client- 安装依赖项:
pnpm install- 设置环境变量:
- 复制 .env.example 到 .env. - 根据需要配置API密钥(Google GenAI、OpenAI等)。
- 运行开发服务器:
pnpm dev- 打开 http://localhost:3000 在浏览器中查看应用程序。
🔌 MCP配置
要将前端连接到后端MCP服务器,请执行以下操作:
- 打开应用程序
http://localhost:3000. - 点击 设置图标 在标题中点击“配置MCP”以打开MCP服务器列表。
- 点击 “添加服务器” 并输入以下详细信息:
- 名字: Genie Server (或您喜欢的任何名称) - 类型: http - 统一资源定位符: http://localhost:8000/mcp
- 点击 “保存”。客户端现在将能够发现和使用中定义的工具
genie_server/server.py.
MCP服务器配置示例
Next.js MCP服务器(stdio)
{
"mcpServers": {
"next-devtools": {
"type": "stdio",
"command": "npx",
"args": ["-y", "next-devtools-mcp@latest"]
}
}
}HTTP API服务器(genie_Server)
{
"mcpServers": {
"genie-server": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}\[!注意\] MCP工具 genie_server/app/tools/ 提供生产就绪功能,包括计算器、转换器、文本分析、可视化和开发工具。您可以使用自己的业务逻辑或集成来扩展它们。🛠️ 技术栈
客户端
- 框架: Next.js 15 (应用路由器)
- 样式: Tailwind CSS & Shadcn用户界面
- 状态管理: TanStack 查询
服务器
- 核心python
- 协议: 模型上下文协议(MCP) 通过
FastMCP - 数据库: MongoDB (通过
pymongo)
� 致谢
特别感谢以下项目的基础代码和灵感:
