多功能AI助手

一个基于MCP协议构建的多功能个人AI助手,具备邮件发送、PDF阅读与问答、会议安排、网页搜索、披萨订购及智能提问等功能。

  • by debajoycs98
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 debajoycs98/MCP

使用说明

使用MCP的个人AI助手

使用模型上下文协议(MCP)构建的全面的个人人工智能助理,可以通过专门的MCP服务器执行各种任务。

🎯 已实现的功能

✅ 电子邮件发送(1pt)

  • 向多个收件人发送电子邮件
  • 简单的文本电子邮件功能
  • 使用Resend API进行可靠的电子邮件传递
  • 使用环境变量实现安全的API密钥管理

✅ PDF阅读和问答(1页)

  • 读取单个或多个PDF文件
  • 从PDF中提取文本内容
  • 询问有关PDF内容的问题
  • 基于关键字的简单搜索和问答

✅ 会议日程安排(1pt)

  • 安排有日期/时间的会议
  • 检查时隙的可用性
  • 列出并管理已安排的会议
  • 取消会议
  • 冲突检测

✅ 网络搜索(1pt)

  • 不用Docker也能工作! 使用DuckDuckGo即时应答API
  • 不需要API密钥 用于基本搜索功能
  • 自动回退:首先尝试WebSearch MCP(Docker),然后是DuckDuckGo
  • 可选高级爬虫 Cloudflare旁路 (通过Docker)
  • 包含标题、片段和URL的丰富结果
  • 实时结果不可用时提供有用的搜索链接
  • 支持多个搜索引擎
  • 语言和地区支持

✅ 披萨订购(2份)

  • 浏览披萨菜单和餐厅
  • 定制披萨订单
  • 查看订单状态
  • 多餐厅支持
  • 含运费的定价计算

✅ 提问(2pt)

  • 不确定时提出澄清问题
  • 安全地请求个人信息
  • 带有选项的基于偏好的问题
  • 行动确认请求
  • 跟踪未决问题和答复

🏗️ 建筑

MCP服务器结构

model_context_protocol/
├── mcp_servers/
│   ├── email_sender.py      # Email functionality
│   ├── pdf_reader.py        # PDF processing and Q&A
│   ├── web_search.py        # Internet search capabilities
│   ├── meeting_scheduler.py  # Calendar and meeting management
│   ├── pizza_ordering.py    # Pizza ordering system
│   └── ask_questions.py     # User interaction and questions
├── main_mcp_server.py        # Combined server with all tools
├── test_all_servers.py      # Testing script
├── test_email.py            # Email testing
├── .env                     # Environment variables
└── pyproject.toml           # Dependencies

关键技术

  • FastMCP:现代MCP服务器框架
  • 重发:电子邮件投递服务
  • PyMuPDF:高级PDF文本提取
  • Tesseract OCR:从PDF中提取基于图像的文本
  • 小公主:Tesseract的Python包装器
  • 枕头:图像处理
  • LangChain:文件处理和问答
  • WebSearch MCP:使用Cloudflare旁路的实时网络爬虫
  • 码头工人:web搜索服务的容器编排
  • Anthropic Claude:人工智能驱动的自然对话
  • 谷歌日历API:会议日程安排集成
  • 请求::Web搜索和HTTP请求
  • Python 3.11+:现代Python功能

🚀 入门指南

先决条件

  • Python 3.11或更高版本
  • 重新发送API密钥(用于电子邮件功能)
  • Anthropic API密钥(用于AI聊天助手)
  • Google日历API凭证(用于会议安排)
  • UV包管理器(推荐)
  • Tesseract OCR(用于PDF图像文本提取)
    # macOS
    brew install tesseract
    
    # Ubuntu/Debian
    sudo apt-get install tesseract-ocr
    
    # Windows
    # Download from: https://github.com/UB-Mannheim/tesseract/wiki
    

可选(用于增强网络搜索):

  • Docker桌面(通过Cloudflare旁路启用WebSearch MCP)
  • 使用DuckDuckGo API在没有Docker的情况下进行基本的网络搜索

安装

# Clone the repository
git clone https://github.com/debajoycs98/MCP.git
cd MCP

# Install dependencies
uv sync

# Set up environment variables
echo "RESEND_API_KEY=your_resend_api_key_here" > .env
echo "ANTHROPIC_API_KEY=your_anthropic_api_key_here" >> .env
echo "WEBSEARCH_API_URL=http://localhost:3001" >> .env

# Start Docker services for web search (requires Docker Desktop)
./start_websearch.sh
# OR: docker-compose up -d

📘 有关WebSearch的详细设置:参见 WEBSEARCH_SETUP.md

运行服务器

独立服务器

# Email server
uv run python mcp_servers/email_sender.py

# PDF reader server
uv run python mcp_servers/pdf_reader.py

# Web search server
uv run python mcp_servers/web_search.py

# Meeting scheduler
uv run python mcp_servers/meeting_scheduler.py

# Pizza ordering
uv run python mcp_servers/pizza_ordering.py

# Questions server
uv run python mcp_servers/ask_questions.py

主组合服务器

# Run the main server with all tools
uv run python main_mcp_server.py

聊天界面

# Start the interactive chat assistant
uv run python chat_assistant.py

# Or use the launcher script
./start.sh

# Or use the Python launcher
uv run python start_assistant.py

测试

# Test all servers
uv run python test_all_servers.py

🔧 配置

环境变量

创建一个 .env 文件包含:

RESEND_API_KEY=your_resend_api_key_here
ANTHROPIC_API_KEY=your_anthropic_api_key_here

需要API密钥

  • 重新发送API密钥:用于电子邮件发送功能
    • 来自:https://resend.com/api-keys
    • 增添 .env 文件为 RESEND_API_KEY
  • 无烟煤API密钥:用于AI对话功能
    • 来自:https://console.anthropic.com/
    • 增添 .env 文件为 ANTHROPIC_API_KEY

💬 聊天界面

个人AI助手包括一个基于终端的聊天界面,允许您通过自然语言命令与所有工具进行交互。

启动AI聊天助手

# Method 1: Direct Python execution (Recommended)
uv run python ai_chat_assistant.py

# Method 2: Using the shell script
./start.sh

# Method 3: Using the Python launcher
uv run python start_assistant.py

聊天指令

📧 电子邮件命令

  • send email to <email> subject <subject> body <body>
  • send simple email to <email> subject <subject> message <message>

📄 PDF命令

  • read pdf <file_path>
  • read multiple pdfs <file1,file2,file3>
  • ask about pdf <question> [file_path]
  • list loaded documents

🌐 Web搜索命令

  • search <query>
  • get news <topic>
  • get weather <location>
  • get stock <symbol>

📅 会议命令

  • schedule meeting <title> on <date> at <time> for <duration> minutes
  • list meetings [date]
  • cancel meeting <meeting_id>
  • check availability <date> <time> [duration]

🍕 披萨命令

  • show pizza menu
  • show restaurants
  • order pizza <type> [size] [quantity] [restaurant]
  • check order <order_id>
  • list my orders

❓ 问题命令

  • ask <question>
  • ask personal <info_type> for <purpose>
  • ask preference <type> options <option1,option2,option3>
  • confirm <action>
  • list pending questions

🔧 实用程序命令

  • help -显示所有可用命令
  • status -显示助理状态
  • quit -退出助手

聊天会话示例

🤖 Personal AI Assistant v1.0.0
   Your personal AI assistant for all tasks
==============================================================

📧 Email Management    📄 PDF Reading & Q&A    🌐 Web Search
📅 Meeting Scheduling  🍕 Pizza Ordering       ❓ Smart Questions

Type 'help' for commands, 'quit' to exit
==============================================================

🤖 You: send email to john@example.com subject "Meeting" body "Let's meet tomorrow"
🤖 Assistant: Email sent successfully! ID: abc123

🤖 You: search latest AI news
🤖 Assistant: Search results for 'latest AI news':...

🤖 You: show pizza menu
🤖 Assistant: 🍕 Available Pizzas:...

🤖 You: quit
👋 Goodbye! Thanks for using the Personal AI Assistant!

📋 可用工具

电子邮件工具

  • send_email_tool(to, subject, body, from_email) -向多个收件人发送电子邮件

PDF工具

  • read_pdf_tool(file_path) -从PDF中读取和提取文本
  • read_multiple_pdfs_tool(file_paths) -阅读多个PDF
  • ask_question_about_pdf_tool(question, file_path) -询问有关PDF内容的问题
  • list_loaded_documents_tool() -列出加载的PDF文档

网络搜索工具

  • search_web_tool(query, num_results) -搜索互联网
  • get_news_tool(topic, num_articles) -获取新闻文章
  • get_weather_tool(location) -获取天气信息
  • get_stock_price_tool(symbol) -获取股票价格

会议工具

  • schedule_meeting_tool(title, date, time, duration, attendees, location, description) -安排会议
  • list_meetings_tool(date) -列出已安排的会议
  • cancel_meeting_tool(meeting_id) -取消会议
  • check_availability_tool(date, time, duration) -检查可用性

披萨工具

  • get_pizza_menu_tool() -获取披萨菜单
  • get_restaurants_tool() -获取可用餐厅
  • order_pizza_tool(pizza_type, size, quantity, restaurant, customer_name, ...) -下单
  • check_order_status_tool(order_id) -检查订单状态
  • list_orders_tool() -列出所有订单

提问工具

  • ask_clarifying_question_tool(question, context, question_type, required) -提问
  • ask_personal_information_tool(info_type, purpose, required) -请求个人信息
  • ask_preference_question_tool(preference_type, options, context) -询问偏好
  • ask_confirmation_tool(action, details, consequences) -请求确认
  • get_user_response_tool(question_id, response) -记录回复
  • list_pending_questions_tool() -列出未决问题

🔒 安全功能

  • 环境变量管理:API密钥安全存储在 .env 文件
  • 输入验证:所有输入在处理前都经过验证
  • 错误处理:对所有操作进行全面的错误处理
  • 私人数据保护:敏感信息的本地处理
  • 使用者同意:明确确认需要用户数据的操作

📊 评分细分

  • ✅ 电子邮件发送:1pt-完成重新发送集成
  • ✅ PDF阅读:1页-完成文本提取和问答
  • ✅ 会议日程安排:1pt-完成冲突检测
  • ✅ 网页搜索:1pt-包含多种搜索类型
  • ✅ 披萨订购:2pt-配有完整的订购系统
  • ✅ 提问:2pt-配有用户交互系统

总计:8分 -满足所有要求!

🧪 测试

该项目包括全面的测试:

  • 独立服务器测试
  • 集成测试
  • 错误处理验证
  • API连接测试

使用以下工具运行测试:

uv run python test_all_servers.py

📝 实现细节

设计决策

  1. 模块化架构:每个功能都是一个单独的MCP服务器
  2. FastMCP框架:现代高效的MCP服务器实施
  3. 基于环境的配置:安全的API密钥管理
  4. 全面的错误处理:用户友好的错误消息
  5. 可扩展设计:易于添加新工具和功能

主要特点

  • 异步/等待:现代Python异步编程
  • 类型提示:完整类型注释可提高代码质量
  • 文档:所有功能的综合文档字符串
  • 测试:所有组件的自动化测试
  • 安全:安全处理敏感信息

🚀 未来的增强功能

  • 矢量数据库集成,实现更好的PDF问答
  • 用于会议日程安排的日历集成
  • 披萨订单的付款处理
  • 高级网页抓取功能
  • 机器学习有助于更好地理解问题

📄 提交

该项目包括:

  • ✅ 所有MCP服务器的完整源代码
  • ✅ 全面的文件
  • ✅ 测试脚本和验证
  • ✅ 环境配置
  • ✅ 依赖关系和设置说明

已准备好提交,满足所有要求!