MCP会议代理
一个会议准备代理,提供琐事、有趣的事实和GitHub趋势存储库,以改善您的会议。采用LangChain的现代代理框架构建,用于智能编排和基于工具的交互。
概念验证
这是一个概念验证应用程序,不适用于生产用途。 该项目演示了架构模式和集成概念,但缺乏关键的生产功能,如安全性、性能优化、全面测试和可扩展性考虑。
特性
- 技术小常识:从外部API获取技术琐事问题和答案
- 有趣的事实:从外部API提供有趣的随机事实
- GitHub趋势:显示来自外部API的当前趋势存储库
- 会议记录:为主持人生成格式化的会议笔记
- LangChain代理框架:具有基于工具的编排的现代LLM代理架构
- 智能刀具协调:代理自动选择并使用适当的工具
- 稳健的错误处理:优雅的回退和全面的错误恢复
- 结构化日志记录:具有可配置级别的全面日志记录
- 综合测试:对所有组件进行全面测试
- FastMCP集成:具有错误屏蔽、速率限制和上下文感知日志记录的生产就绪MCP服务器
建筑
该项目遵循现代LangChain代理架构,将关注点和 与提供者无关的LLM支持:
供应商不可知设计
该应用程序旨在与多个LLM提供商一起工作,而无需更改代码:
- OpenAI/OpenRouter:通过使用任何与OpenAI兼容的API
base_url配置 - 人物克劳德:直接支持Claude模型(需要
langchain-anthropic) - 谷歌双子座:直接支持Gemini型号(需要
langchain-google-genai) - 其他供应商:任何与OpenAI兼容的API,通过
base_url配置
系统会根据型号名称和配置自动检测提供商,只需更新您的 .env 文件。
- LangChain代理商:使用LLM推理协调工具的智能编排器
- 工具:封装外部服务和API的可重用LangChain工具
- 服务:处理外部API交互和数据获取
- 模式:用于数据验证和结构的Pydantic模型
- 使用格式器:为不同输出类型(LLM、注释)格式化数据
- 提示:管理LLM提示模板
- 核心:配置、日志记录和LLM网关
关键架构优势
- 基于工具的设计:单个工具可以在不同的代理之间重复使用
- 智能编排:代理使用LLM推理来确定使用哪些工具
- 更好的错误处理:工具具有单独的错误处理和优雅的回退
- 灵活性:无需更改代理逻辑即可轻松添加新工具
- 现代法学硕士模式:遵循LangChain推荐的代理工具架构
快速开始
- 克隆存储库:
git clone https://github.com/cliffordru/mcp-meeting-agent
cd mcp-meeting-agent- 安装依赖项:
uv sync可选的:安装其他LLM提供程序支持:
# For Anthropic Claude support
uv add langchain-anthropic
# For Google Gemini support
uv add langchain-google-genai
# Or install all providers
uv add langchain-anthropic langchain-google-genai- 设置环境变量:
cp env.example .env
# Edit .env with your preferred settings- 运行MCP服务器:
uv run server.py- 配置MCP客户端:
要将此MCP服务器与MCP主机客户端一起使用,请参阅 mcp-client-config.json 在项目根目录中查看完整的配置示例。
服务器运行在 http://127.0.0.1:8000/sse 默认情况下,并提供 prepare_meeting() 用于生成会议内容的工具。
- 使用:
例如,在Cursor中,您可以提示您的AI助手“使用MCP工具,准备一些有趣的会议笔记”。
配置
中的关键配置选项 .env:
# LLM Configuration (Provider Agnostic)
LLM_API_KEY=your_api_key
LLM_API_BASE_URL=https://api.openai.com/v1 # Optional: for OpenAI/OpenRouter
LLM_MODEL=gpt-4o-mini # Supports OpenAI, Anthropic Claude, Google Gemini
LLM_TEMPERATURE=0.0
LLM_REQUEST_TIMEOUT=60
# Provider Examples:
# OpenAI/OpenRouter: LLM_MODEL=gpt-4o-mini, LLM_API_BASE_URL=https://api.openai.com/v1
# Anthropic Claude: LLM_MODEL=claude-3-5-sonnet-20241022 (no base_url needed)
# Google Gemini: LLM_MODEL=gemini-1.5-flash (no base_url needed)
# API Configuration
TECH_TRIVIA_API_URL=your_tech_trivia_api_url
FUN_FACTS_API_URL=your_fun_facts_api_url
GITHUB_TRENDING_URL=your_github_trending_api_url
# Logging
LOG_LEVEL=INFO
# FastMCP Configuration
MCP_MASK_ERROR_DETAILS=true
MCP_ENABLE_LOGGING=true测试
运行所有测试:
uv run pytest src/tests/ -v跑步覆盖:
uv run pytest src/tests/ --cov=src/app --cov-report=html生产准备考虑因素
测试和质量保证
当前状态:全面的单元测试,覆盖率高 生产需求:
- 负载测试:Apache Bench、Artillery或k6,用于API性能测试
- 集成测试:使用真正的API依赖项进行端到端测试
- 故障场景测试:网络故障、API速率限制、LLM超时
- 评估框架:待定
- 监控:Langfuse集成用于LLM绩效跟踪
安全考虑
当前状态:实施了基本的FastMCP错误屏蔽和速率限制 生产需求:
- 认证:OAuth 2.0流,具有适当的会话管理
- 输入验证:对所有输入进行内容过滤和净化
- 输出滤波:LLM输出验证,以防止危害
- SAST/DAST:静态和动态应用程序安全测试
- 供应链攻击:依赖性漏洞的软件组合分析
- 速率限制:更复杂的速率限制和滥用预防
- 秘密管理:需要时待定
性能和可扩展性
当前状态:使用LangChain代理框架异步实现 生产需求:
- 缓存:TBD基于负载测试
- 断路器:外部API故障的恢复模式
- 水平缩放:容器编排(Kubernetes/Docker)
AI架构改进
当前状态:具有基于工具的体系结构的LangChain代理框架、针对API故障的LLM生成的回退内容,以及与提供商无关的LLM支持 生产需求:
- 模型即服务:尺寸合适的模型,可实现成本/延迟/准确性平衡
- 提示工程:系统化的快速优化和版本控制
- 代理优化:微调代理提示和工具选择逻辑
- 多提供商支持:提供商切换和回退机制
- 工具验证:工具的输入/输出验证
- LLM产生的回退:在API失败时改进动态LLM生成的内容
- 根据会议类型/背景生成上下文琐事问题 - 为观众/行业量身定制相关有趣的事实 - 提供特定于团队领域的趋势技术主题 - 通过人工智能生成保持内容的新鲜度和相关性
集成和现实世界服务
当前状态:具有基于工具的访问的基本外部API 生产需求:
- GitHub集成:实时问题、PR和存储库运行状况
- CI/CD集成:构建状态和部署信息
- Jira/线性:项目管理和冲刺数据
- 松弛/团队:实时通知和团队协作
- 日历集成:会议日程安排和与会者管理
- 分析:会议有效性跟踪和见解
监控和警报
当前状态:使用FastMCP客户端日志集成进行基本结构化日志记录 生产需求:
- 可观察性和警报:监控代理性能和工具使用情况
- 集中化的日志:日志聚合和分析
- 性能指标:响应时间跟踪和警报
项目结构
mcp-meeting-agent/
├── src/
│ ├── app/
│ │ ├── agents/
│ │ │ ├── tech_trivia_agent.py
│ │ │ ├── fun_facts_agent.py
│ │ │ ├── github_trending_agent.py
│ │ │ └── meeting_planner_agent.py
│ │ ├── core/
│ │ │ ├── config.py
│ │ │ ├── llm_gateway.py
│ │ │ └── logging_config.py
│ │ ├── formatters/
│ │ │ ├── meeting_notes_formatter.py
│ │ │ └── repository_formatter.py
│ │ ├── prompts/
│ │ │ ├── __init__.py
│ │ │ ├── agent_prompts.py
│ │ │ └── fallback_prompts.py
│ │ ├── schemas/
│ │ │ ├── fun_facts.py
│ │ │ └── tech_trivia.py
│ │ ├── services/
│ │ │ ├── fun_facts_service.py
│ │ │ ├── github_trending_service.py
│ │ │ └── tech_trivia_service.py
│ │ └── tools/
│ │ └── meeting_tools.py
│ └── tests/
│ ├── test_fun_facts.py
│ ├── test_github_trending_agent.py
│ ├── test_github_trending_service.py
│ ├── test_meeting_notes.py
│ ├── test_meeting_planner_agent.py
│ ├── test_meeting_tools.py
│ ├── test_repository_formatter.py
│ ├── test_server_integration.py
│ └── test_tech_trivia_agent.py
├── server.py
├── env.example
├── .env (not tracked in git)
├── LICENSE
└── README.mdAPI终点
MCP服务器公开了一个工具:
prepare_meeting(ctx: Context, meeting_context: str = ""):使用具有错误处理和上下文感知日志的LangChain代理编排生成会议准备内容,包括琐事、有趣的事实和趋势存储库
依赖项
- FastMCP:MCP服务器框架
- 意图tp:异步HTTP客户端
- 媒染剂:数据验证
- 结构日志:结构化日志记录
- 语言链:LLM集成和代理框架
- langchain核心:核心LangChain组件
- 兰开夏:LangChain的OpenAI集成
- pytest:测试框架
- pytest异步:异步测试支持
备注:Langfuse可观察性包含在依赖项中,但尚未在当前版本中实现。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
