Complete template for creating MCP (Model Control Protocol) servers with data loader architecture and PostgreSQL support.
This template follows a modular architecture that allows creating MCP servers for different domains with ease. The architecture is composed of the following layers:
- Centralized Configuration: All server configurations are maintained in a single location (
CONFIG) - Environment Variables: Support for different environments (development, production)
- Database Connection: Configuration for PostgreSQL with seed data initialization
- Contexts: Models to represent different data contexts
- Jobs: Models for data loader job management
- Seed Data: Initial data for database initialization
- ORM Connection: Integration with PostgreSQL using SQLAlchemy
- MCP Server: Main server instance
- Decorators: Tools for defining tools, resources and prompts
- Connection Management: Connection verification (e.g., IB - Interactive Brokers)
- Lifecycle Management: Server startup and shutdown
- Job Manager: Complete system for creating, executing and monitoring jobs
- Job Types: Support for different job types (ingestion, processing, etc.)
- Job Status: Complete job status management
- Parameters: Support for custom parameters in jobs
- Main Tools: Basic context and management functionalities
- Data Loader Tools: Specific operations for data loader jobs
- Specific Tools: Domain-specific functionalities
- Resources: Direct access to server information
- Prompts: Usage guides and documentation
CONFIG = {
"host": "127.0.0.1",
"port": 8080,
"transport": "tcp",
"ib_enabled": False,
"database_url": "postgresql://user:password@localhost/mcp_db",
"data_loader_enabled": True,
"max_concurrent_jobs": 5
}- Context: Representa diferentes contextos de dados
- Job: Representa jobs de data loader com status e parâmetros
create_job(): Cria novos jobsget_job(): Obtém job específicoupdate_job_status(): Atualiza status de jobslist_jobs(): Lista todos os jobsget_jobs_by_type(): Filtra jobs por tipo
todo_method(): Método placeholder para implementações específicasget_context_info(): Obter informações de contextosearch_context(): Buscar contextoslist_contexts(): Listar todos os contextostrigger_job(): Executar jobs de data loaderget_job_status(): Obter status de jobcancel_job(): Cancelar job
server_status(): Status do servidorserver_health(): Saúde do servidorserver_capabilities(): Capacidades do servidor
usage_guide(): Guia de uso do servidordata_loader_guide(): Guia de uso do data loader
- Configuração: Atualize a string de conexão do PostgreSQL em
CONFIG["database_url"] - Personalização: Modifique o método
todo_methodpara implementar funcionalidades específicas - Extensão: Adicione novos modelos e ferramentas conforme necessário
- Execução:
python final_mcp_template.py
.
├── final_mcp_template.py # Template principal
├── README.md # Documentação
└── (outros arquivos de template)
- Data Loader Completo: Sistema completo de gerenciamento de jobs
- PostgreSQL: Suporte a banco de dados relacional
- Seed Data: Dados iniciais para inicialização
- MCP Compatível: Totalmente compatível com protocolo MCP
- Extensível: Fácil de estender para novos domínios
- Seguro: Sistema de gerenciamento de conexões e erros
# Executar o servidor
python final_mcp_template.py
# O servidor estará disponível em:
# http://127.0.0.1:8080Para criar um novo MCP server baseado neste template:
- Atualize as configurações no arquivo
CONFIG - Modifique o método
todo_methodpara implementar lógica específica - Adicione novos modelos no sistema de dados conforme necessário
- Crie novas ferramentas usando o decorator
@server.tool - Adicione novos recursos usando o decorator
@server.resource - Crie novos prompts usando o decorator
@server.prompt
- Python 3.7+
- mcp
- SQLAlchemy
- PostgreSQL
- Docker e Docker Compose (opcional, para execução em container)
Para executar o servidor MCP em um container Docker:
- Construir a imagem:
docker-compose build- Iniciar os serviços:
docker-compose up -d- Verificar o status:
docker-compose ps-
Acessar o servidor: O servidor estará disponível em:
http://localhost:8080 -
Para parar os serviços:
docker-compose down.
├── final_mcp_template.py # Template principal
├── README.md # Documentação
├── Dockerfile # Dockerfile para container
├── docker-compose.yml # Compose para múltiplos containers
├── requirements.txt # Dependências Python
├── .env # Variáveis de ambiente
└── logs/ # Diretório para logs