AI聊天机器人

一个集成Model Context Protocol (MCP)的AI聊天机器人,用于回答关于INSTRAT360公司的问题,支持自动调用MCP工具进行数据检索。

  • by Shoukhin1803078
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Shoukhin1803078/instrat360-mcp-task

使用说明

INSTRAT360 MCP聊天机器人项目

我创建了一个简单的聊天机器人AI助手用于 INSTRAT360(可译为“全向战略评估系统”或根据具体语境调整,若“INSTRAT360”是特定产品或系统的名称,则保留原名) 与……公司一起 模型上下文协议(MCP) 集成。聊天机器人可以使用MCP工具进行数据检索,回答有关INSTRAT360公司的相关问题。

特点/特性

  • 人工智能聊天机器人:

    • 与AI聊天,聊聊INSTRAT360公司
    • 在需要时自动调用MCP工具
    • 两种模式:模拟(无API密钥)和OpenAI(含API密钥)
    • 简洁的用户界面(为简化起见,我使用HTML、CSS、JS)
  • MCP 服务器 具备三大核心能力:

    • 资源公司信息、员工名单、项目列表
    • 工具5个可调用函数(公司概况、员工详情等)
    • 提示3个预定义的分析模板

我使用的技术:

  • **fastmcp(该词在中文中没有直接对应的翻译,因为它可能是一个特定领域或技术的专有名词,但根据字面意思,可以大致翻译为“快速多通道处理”或“快速多点连接”,具体翻译需根据上下文确定)**MCP服务器框架
  • **FastAPI(快速API)**网络框架
  • **Uvicorn(乌维康,但通常直接音译为“尤维康”或保持原英文名,因其是一个具体的软件或框架名称)**ASGI服务器
  • LangChain大语言模型(LLM)编排
  • **LangChain-OpenAI(或“LangChain与OpenAI的集成/结合”)**OpenAI集成
  • **httpx(注:这是一个技术术语或特定工具的名称,直接翻译为“httpx”即可,无需额外解释,因为其本身在技术领域内具有特定含义)**HTTP 客户端
  • python-dotenv环境变量管理

项目结构

instrat360-mcp-task/
├── requirements.txt          
├── README.md                
├── mcp_server/
│   └── mcp_server.py        # Here I define MCP server with resources, tools, prompts
└── web_server/
    ├── main.py              # FastAPI web server
    └── static/
        └── index.html       # Chat UI (HTML + CSS + JS)

安装说明

先决条件

  • 要求 Python 版本 >=3.12
  • uv(Python 包管理器)

步骤1:克隆仓库

git clone https://github.com/Shoukhin1803078/instrat360-mcp-task.git
cd instrat360-mcp-task

步骤2:创建虚拟环境并安装依赖项

uv venv
source .venv/bin/activate (For MAC)
.venv\Scripts\activate (For windows)
uv pip install -r requirements.txt

步骤3:运行MCP服务器

MCP服务器可以独立运行以进行测试:

cd mcp_server
uv run mcp_server.py

这将在默认端口上启动FastMCP服务器。

步骤4:在另一个终端中运行Web服务器

创建一个新的终端,然后进入web_server目录

cd web_server
python3 main.py

第五步:打开聊天机器人

打开浏览器并访问:

http://localhost:8000

示例输出


使用指南

模拟模式(无需API密钥)

  1. 选择 “模拟模式” (默认)
  2. 在聊天输入框中输入问题类型
  3. 该机器人使用基于规则的逻辑来检测意图并调用MCP工具
  4. 回复格式自然

示例问题:

  • “告诉我关于INSTRAT360的情况”
  • “谁是员工?”
  • “给我看看那些项目”
  • “找一位人工智能专家”

OpenAI模式(需要API密钥)

  1. 选择 “OpenAI 模式”
  2. 输入OpenAI API密钥
  3. 问题类型
  4. 该机器人使用GPT-3.5-turbo进行自然语言理解
  5. 当需要时,MCP工具会自动被调用

MCP(多点触控面板/或具体指代根据上下文而定)能力展示

1. 资源(只读数据端点)

@mcp.resource("company://info")
def get_company_resource():
    """Returns company information"""
    
@mcp.resource("company://employees")
def get_employees_resource():
    """Returns list of employees"""
    
@mcp.resource("company://projects")
def get_projects_resource():
    """Returns list of projects"""

2. 工具(可调用函数)

@mcp.tool()
def get_company_overview():
    """Get complete company overview"""
    
@mcp.tool()
def get_employee_details(name: str):
    """Get specific employee information"""
    
@mcp.tool()
def list_all_employees():
    """List all employees with roles"""
    
@mcp.tool()
def get_project_details(project_name: str):
    """Get specific project information"""
    
@mcp.tool()
def find_expert(skill: str):
    """Find employees by expertise area"""

3. 提示(预定义模板)

@mcp.prompt()
def company_analysis_prompt():
    """Template for company analysis"""
    
@mcp.prompt()
def employee_expertise_prompt():
    """Template for finding experts"""
    
@mcp.prompt()
def project_status_prompt():
    """Template for project reviews"""

环境变量(可选)

创建一个 .env 根目录中的文件:

OPENAI_API_KEY=""

MCP工具的调用方式

该系统使用 意图检测 自动调用正确的MCP工具:

用户查询 检测到的意图 调用的MCP工具
“告诉我关于INSTRAT360的信息” 公司简介 get_company_overview()
“员工都是谁?” 员工名单 list_all_employees()
“存在哪些项目?” 项目列表 返回所有项目
“寻找人工智能专家” 专家搜索 find_expert("AI")