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密钥)
- 选择 “模拟模式” (默认)
- 在聊天输入框中输入问题类型
- 该机器人使用基于规则的逻辑来检测意图并调用MCP工具
- 回复格式自然
示例问题:
- “告诉我关于INSTRAT360的情况”
- “谁是员工?”
- “给我看看那些项目”
- “找一位人工智能专家”
OpenAI模式(需要API密钥)
- 选择 “OpenAI 模式”
- 输入OpenAI API密钥
- 问题类型
- 该机器人使用GPT-3.5-turbo进行自然语言理解
- 当需要时,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") |
