智能团队任务管理机器人

一个集成OpenAI代理和MCP协议的Microsoft Teams机器人,用于任务管理、认证和项目系统导航。

  • by ahsan0444
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ahsan0444/TeamsMCP

使用说明

OMG团队机器人与代理和MCP集成

一个由以下技术支持的智能Microsoft Teams机器人 OpenAI的代理SDK 和 模型上下文协议(MCP) 它使用户能够从Teams内部无缝地管理任务、验证和导航OMG项目管理系统。


🚀 特性

  • 智能代理 --使用OpenAI的代理SDK来解释用户意图,并决定何时使用MCP工具与一般知识。
  • MCP工具集成 --连接到OMG后端,用于身份验证、任务创建和站点切换等操作。
  • 自适应卡 --丰富的交互式卡片,用于登录、任务管理和网站选择。
  • 持久会话管理 --使用基于SQLite的存储维护用户会话和身份验证状态。
  • 多回合对话 --记住先前互动的上下文感知对话。

🧩 建筑

🔁 流程摘要

  1. User → 团队→ Bot: 用户发送消息或与自适应卡交互。

  2. 机器人↔ OpenAI代理: 这 AgentTeamsBot 将消息转发给OpenAI代理。 Agent处理上下文并将响应流式传输回机器人。

  3. 代理工具决策:

    • 如果 不需要工具,代理直接向团队发送消息或卡片。
    • 如果a 需要工具它调用相关的MCP工具(例如。, login, create_task, switch_site).
  4. MCP服务器↔ OMG后端: MCP服务器与OMG后端API双向通信,以执行请求的操作并返回结构化数据。

  5. 代理→ Bot → 团队: 代理将工具的结果格式化为对话或基于卡片的回复,机器人将其发布回团队。


⚙️ 设置

1.安装依赖项

pip install -r requirements.txt

2.配置环境变量

在您的 .env 文件:

变量 描述
MICROSOFT_APP_ID 机器人的Azure应用程序注册ID
MICROSOFT_APP_PASSWORD Bot的客户端机密
MICROSOFT_APP_TENANT_ID Azure AD租户ID
OPENAI_API_KEY OpenAI代理的API密钥
BOT_PORT 运行bot服务器的端口(默认值:8000)
BASE_URL OMG后端API URL
LOGIN_BASE_URL OMG登录端点
APP_BASE_URL 公共URL(例如ngrok隧道)

3.运行Bot

cd bot_app
python main.py

机器人将:

  1. 启动MCP服务器。
  2. 加载系统说明 prompts/system_instructions.md.
  3. 使用MCP工具初始化OpenAI代理。
  4. 在配置的端口上启动Teams机器人。

4.将机器人暴露在互联网上

使用 ngrok 或类似使您的机器人可访问:

ngrok http 8000

然后更新 APP_BASE_URL 在你的 .env 使用生成的公共URL创建文件。


5.配置Azure Bot服务

  1. 首选 Azure 门户→ 机器人服务→ 你的机器人

  2. 更新 消息传递端点 致:

    https://your-ngrok-url.ngrok-free.app/api/messages
    
  3. 保存更改。


💬 用法

🔐 认证

用户: “让我登录” → 机器人会出示一张登录卡。身份验证后,代理确认用户的站点和个人资料。

🧱 任务管理

用户: “创建一个名为网站重新设计的任务,明天到期” → Agent提取详细信息,填写卡片,请求确认,然后通过MCP创建任务。

🏢 站点切换

用户: “切换到伦敦网站” → Agent会列出可用站点,并在选择时切换当前上下文。

🧠 通用查询

用户: “我如何跟踪项目进度?” → 当不需要工具时,代理会使用一般知识进行响应。


🗂️ 项目结构

bot_app/
├── main.py                 # Application entry point
├── agent_bot.py            # Bot logic and event handling
├── mcp_server.py           # MCP tools for OMG backend
├── cards.py                # Adaptive Card factories
├── config.py               # Configuration and environment
├── session_manager.py      # SQLite-based session storage
└── prompts/
    └── system_instructions.md  # Agent’s behavior and decision guide

🧠 关键组件

代理团队Bot(agent_bot.py)

  • 处理团队消息、卡操作和流式代理响应
  • 团队和OpenAI代理之间的桥梁
  • 更新用户上下文和会话状态

OpenAI代理

  • 解析意图和上下文
  • 决定是否调用MCP工具
  • 生成自适应卡片提示和对话回复

MCP服务器(mcp_server.py)

  • 提供代理可调用的工具:

    • login
    • get_user_and_company_info
    • get_available_sites
    • switch_site
    • create_task
    • logout
  • 与OMG后端双向通信


🧩 对话流程示例

创建任务

  1. 用户:“为营销活动创建一个任务。”
  2. 代理人:“当然!我应该把它和哪个项目联系起来?”
  3. 用户:“项目7334。”
  4. 代理:[显示预先填写的任务创建卡]
  5. 用户:[提交表格]
  6. 代理:[显示带有任务ID和链接的任务确认卡]

切换站点

  1. 用户:“切换到伦敦办公室。”
  2. 代理人:[电话 get_available_sites]
  3. 代理:[显示下拉选择卡]
  4. 用户:[选择站点]
  5. 代理:[显示更新的公司信息]

🛠️ 发展

添加新的MCP工具

  1. 在中创建函数 mcp_server.py 随着 @mcp.tool() 装饰师。
  2. 在中添加工具映射 config.py 在...之下 TOOL_CONFIG.
  3. (可选)在中创建新的卡工厂 cards.py.
  4. 更新 system_instructions.md 如果代理人需要特殊处理。

修改代理行为

编辑 prompts/system_instructions.md 完善:

  • 意图检测逻辑
  • 工具调用规则
  • 鼓舞人心的风格和基调

🧾 故障排除

问题 可能的解决方法
Bot没有响应 确保 main.py 正在运行和 ngrok 隧道处于活动状态
MCP工具故障 验证中的后端URL和身份验证令牌 .env
代理未调用工具 确认 system_instructions.md 已加载并且 mcp_server 处于活动状态
登录错误 检查调试凭据和MCP工具响应

📜 许可证

专有的 --OMG项目管理系统的一部分。