使用说明
使用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> minuteslist meetings [date]cancel meeting <meeting_id>check availability <date> <time> [duration]
🍕 披萨命令
show pizza menushow restaurantsorder 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)-阅读多个PDFask_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
📝 实现细节
设计决策
- 模块化架构:每个功能都是一个单独的MCP服务器
- FastMCP框架:现代高效的MCP服务器实施
- 基于环境的配置:安全的API密钥管理
- 全面的错误处理:用户友好的错误消息
- 可扩展设计:易于添加新工具和功能
主要特点
- 异步/等待:现代Python异步编程
- 类型提示:完整类型注释可提高代码质量
- 文档:所有功能的综合文档字符串
- 测试:所有组件的自动化测试
- 安全:安全处理敏感信息
🚀 未来的增强功能
- 矢量数据库集成,实现更好的PDF问答
- 用于会议日程安排的日历集成
- 披萨订单的付款处理
- 高级网页抓取功能
- 机器学习有助于更好地理解问题
📄 提交
该项目包括:
- ✅ 所有MCP服务器的完整源代码
- ✅ 全面的文件
- ✅ 测试脚本和验证
- ✅ 环境配置
- ✅ 依赖关系和设置说明
已准备好提交,满足所有要求!
