使用说明
MCP PDF处理器
利用模型上下文协议 (MCP) 架构来处理 PDF、向量化内容并与 AI API 集成的应用程序。
建筑
- MCP 服务器处理PDF和管理矢量库(本地运行)
- MCP 客户端与服务器通信的接口
- API FastAPI用于外部交互的 REST 端点
- Qdrant语义搜索的矢量银行
- 人工智能与OpenAI GPT-4o-mini和Gemini Pro集成
配置
- 在文件中配置 API 密钥
.env:
OPENAI_API_KEY=sua-chave-openai
GEMINI_API_KEY=sua-chave-gemini
QDRANT_URL=http://localhost:6333
API_PORT=8000
- 参考问题:
docker-compose up -d
- 安装依赖关系 :
pip install -r requirements.txt
背板如果有版本冲突,请强制重新安装:
pip install -r requirements.txt --force-reinstall
docker-compose down && docker-compose up -d
使用
启动应用程序
python main.py
自动应用 :
- 处理文件夹中的所有 PDF
dados/ - 在 Qdrant 中检视并储存
- 在端口 8000 上启动 REST API
API的终点
GET / API信息
curl http://localhost:8000/
{"message": "MCP PDF Processor API", "version": "1.0.0"}
GET /health 应用程序状态
curl http://localhost:8000/health
{"status": "healthy", "qdrant_url": "http://localhost:6333"}
POST /process-pdf - 特定的PDF过程
curl -X POST "http://localhost:8000/process-pdf?pdf_path=dados/documento.pdf"
{"status": "success", "message": "Processado 45 chunks"}
POST /extract-text -从PDF中提取文本
curl -X POST "http://localhost:8000/extract-text?pdf_path=dados/documento.pdf"
{"status": "success", "text": "Texto completo do PDF..."}
POST /search -搜索文件
curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{"query": "RASEAM 2025", "limit": 3}'
{
"results": [
{
"id": "uuid",
"score": 0.95,
"text": "Texto do documento...",
"metadata": {"source": "dados/doc.pdf", "chunk_id": 0}
}
]
}
POST /search 用AI搜索
curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{"query": "RASEAM 2025", "limit": 3, "use_ai": "both"}'
{
"results": [...],
"ai_response": {
"openai": "Resposta do GPT-4o-mini...",
"gemini": "Resposta do Gemini Pro..."
}
}
POST /ai-query - 具有上下文的AI查询
curl -X POST http://localhost:8000/ai-query \
-H "Content-Type: application/json" \
-d '{"prompt": "Qual o tema principal?", "use_context": true, "model": "openai"}'
{
"response": {
"openai": "O tema principal é..."
}
}
Python 示例
import requests
# 1. Verificar status
response = requests.get("http://localhost:8000/health")
print(response.json())
# 2. Processar PDF
response = requests.post(
"http://localhost:8000/process-pdf",
params={"pdf_path": "dados/documento.pdf"}
)
print(response.json())
# 3. Buscar documentos
response = requests.post("http://localhost:8000/search", json={
"query": "RASEAM 2025",
"limit": 5
})
results = response.json()["results"]
print(f"Encontrados {len(results)} documentos")
# 4. Buscar com IA
response = requests.post("http://localhost:8000/search", json={
"query": "principais tópicos",
"limit": 3,
"use_ai": "both"
})
ai_responses = response.json()["ai_response"]
print(f"OpenAI: {ai_responses['openai']}")
print(f"Gemini: {ai_responses['gemini']}")
# 5. Consulta direta IA
response = requests.post("http://localhost:8000/ai-query", json={
"prompt": "Resuma os pontos principais",
"use_context": True,
"model": "both"
})
print(response.json()["response"])
直接使用 MCP 客户端
# exemplo_client_mcp.py
import asyncio
from src.mcp_client import MCPClient
async def main():
async with MCPClient() as client:
# Processar PDF
result = await client.process_and_store_pdf("dados/documento.pdf")
print(result)
# Buscar documentos
docs = await client.search_documents("sua consulta", limit=5)
print(f"Encontrados {len(docs)} documentos")
# Extrair texto
text = await client.extract_pdf_text("dados/documento.pdf")
print(f"Texto: {len(text)} caracteres")
asyncio.run(main())
测试API
python test_api.py
完整的 MCP 客户端示例
python exemplo_client_mcp.py
项目结构
ia_mcp/
├── dados/ # PDFs para processamento automático
├── src/
│ ├── api.py # FastAPI endpoints
│ ├── mcp_server.py # Servidor MCP (local)
│ ├── mcp_client.py # Cliente MCP
│ ├── ai_clients.py # Clientes OpenAI/Gemini
│ ├── pdf_processor.py # Processamento de PDF
│ ├── vector_store.py # Gerenciamento Qdrant
│ └── config.py # Configurações
├── docker-compose.yml # Qdrant v1.7.0 container
├── main.py # Ponto de entrada
├── test_api.py # Testes da API
├── exemplo_client_mcp.py # Exemplo cliente MCP
├── requirements.txt # Dependências (compatíveis)
└── .env # Variáveis de ambiente
测试版本
- Qdrant:v1.7.0(Docker+客户端)
- 快速API: ≥ 0.110.0
- 开放人工智能: ≥ 1.12.0
- 双子座: ≥ 0.4.0
- 主控程序: ≥ 1.0.0
故障排除
Qdrant 兼容错误
如果出现错误,如 'QdrantClient' object has no attribute 'search':
- 重新安装依赖关系:
pip install -r requirements.txt --force-reinstall
- 重新定义Qdrant:
docker-compose down
docker-compose up -d
- 重新启动应用程序:
python main.py
API 密钥错误
如果遇到认证错误 :
- 检查文件是否
.env存在 - 设置您的真实 OpenAI 和 Gemini 密钥
- 应用程序在没有密钥的情况下工作(带有信息消息)
PDF 处理错误
如果 PDF 无法处理:
- 检查文件是否存在于文件夹中
dados/ - 请确定 Qdrant 正在运行(
docker ps) - 测试端点
/health第一
功能
✅ 自动处理 启动时的 PDF ✅ 矢量化 com句子转换器 ✅ 语义搜索 com Qdrant ✅ 双 AI 集成 -OpenAI+双子座 ✅ 完整的 REST API com快速API ✅ MCP 架构 本地服务器/客户端 ✅ Chunking inteligente 来自文件 ✅ 上下文响应 达IA