Home
Login

Um gateway e registro de protocolo de contexto de modelo (MCP) rico em recursos, fornecendo gerenciamento unificado de ferramentas, recursos e prompts, suportando a conversão de API REST para protocolo MCP, com segurança e observabilidade.

Apache-2.0Python 0.6kIBMmcp-context-forge Last Updated: 2025-06-24

Apresentação Detalhada do Projeto MCP Context Forge

Visão Geral do Projeto

MCP Context Forge é um gateway de Protocolo de Contexto de Modelo (MCP) rico em recursos, impulsionado por FastAPI e de código aberto da IBM, que unifica e federa ferramentas, recursos, prompts, servidores e gateways pares, encapsulando qualquer API REST como uma ferramenta ou servidor virtual compatível com MCP. O projeto suporta a exposição de todas as funcionalidades através de protocolos de transporte HTTP/JSON-RPC, WebSocket, Server-Sent Events (SSE) e stdio, e oferece uma rica UI de gerenciamento interativa, empacotada como um contêiner, suportando qualquer banco de dados suportado pelo SQLAlchemy.

Funcionalidades Principais

1. Funcionalidade de Gateway de Protocolo

  • Arquitetura de Gateway Verdadeira: Centraliza o registro de ferramentas, recursos e prompts, mantendo o padrão oficial do protocolo MCP 2025-03-26
  • Federação Multi-Servidor: Unifica múltiplos servidores MCP em um único endpoint – descobrindo automaticamente nós pares (mDNS ou configuração explícita), verificando a saúde e mesclando suas funcionalidades
  • Serviços Virtualizados: Virtualiza serviços não-MCP como "servidores virtuais", permitindo registrar qualquer API REST ou endpoint de função e expô-los sob a semântica MCP

2. Funcionalidade de Adaptação de API

  • Adaptador REST para MCP: Adapta qualquer API REST/HTTP para uma ferramenta MCP, suportando validação de entrada JSON-Schema, políticas de repetição/limitação de taxa e chamadas JSON-RPC transparentes
  • Conversão de Protocolo: Suporta a conversão entre vários protocolos de transporte (stdio, SSE, Streamable HTTP)

3. Implantação e Gerenciamento

  • UI de Gerenciamento Completa: Fornece protocolos de transporte ricos, pipelines de experiência de desenvolvimento pré-construídos e observabilidade de nível de produção
  • Funcionalidades de Nível Empresarial: Inclui autenticação e autorização, cache, verificações de saúde, coleta de métricas e outras funcionalidades completas

Arquitetura do Sistema

O projeto adota um design de arquitetura modular:

┌─────────────────┐    ┌──────────────────┐
│  🖥️ Admin UI    │    │  🔐 Autenticação e Autorização │
│  Interface de Gerenciamento │    │  JWT + Basic     │
└─────────────────┘    └──────────────────┘
         │                        │
         └────────┬─────────────────┘
                  │
    ┌─────────────▼─────────────────┐
    │        🚪 Núcleo do Gateway MCP        │
    │     Inicialização do Protocolo Ping Concluída      │
    │        Gerenciador de Federação              │
    │   Protocolos de Transporte HTTP WS SSE Stdio  │
    └─────────────┬─────────────────┘
                  │
    ┌─────────────▼─────────────────┐
    │           Camada de Serviço               │
    │  🧰 Serviço de Ferramentas  📁 Serviço de Recursos      │
    │  📝 Serviço de Prompts  🧩 Serviço de Servidores    │
    └─────────────┬─────────────────┘
                  │
    ┌─────────────▼─────────────────┐
    │          Camada de Persistência              │
    │    💾 Banco de Dados SQLAlchemy       │
    │    ⚡ Cache Redis/Memory       │
    └───────────────────────────────┘

Características Técnicas

Protocolos e Transportes Suportados

  • Suporte Completo ao MCP 2025-03-26: initialize, ping, notify, completion, sampling (SSE), e fallback JSON-RPC
  • Multi-Protocolo de Transporte: HTTP/JSON-RPC, WebSocket (ping/pong), SSE (unidirecional + canal de retorno), stdio
  • Conversão de Protocolo: Suporta a conversão perfeita entre diferentes protocolos de transporte

Federação e Descoberta

  • Descoberta Automática: Suporta descoberta de gateway par mDNS ou configuração explícita
  • Verificação de Saúde: Verificações de saúde periódicas, suportando failover
  • Mesclagem Transparente: Mescla registros remotos de forma transparente em um diretório unificado

Gerenciamento de Recursos

  • URIs Modelados: Suporta URIs de recursos parametrizados
  • Cache Inteligente: Mecanismo de cache LRU+TTL, detecção de tipo MIME
  • Assinatura em Tempo Real: Suporta assinatura em tempo real de alterações de recursos via SSE

Gerenciamento de Prompts

  • Templates Jinja2: Suporte a um poderoso motor de templates
  • Validação de Schema: Validação forçada de JSON-Schema
  • Suporte Multimodal: Suporta blocos de conteúdo multimodais
  • Controle de Versão: Gerenciamento de versão e funcionalidade de rollback

Gerenciamento de Ferramentas

  • Suporte a Múltiplos Tipos: MCP nativo ou ferramentas baseadas em REST
  • Validação de Entrada: Mecanismo completo de validação de entrada
  • Lógica de Repetição: Repetição inteligente e limitação de taxa/controle de concorrência

Funcionalidades de Gerenciamento e Monitoramento

Interface de Gerenciamento Web

  • Pilha de Tecnologia: HTMX + Alpine.js + Tailwind CSS
  • CRUD Completo: Gerenciamento completo de servidores, ferramentas, recursos, prompts, gateways, diretórios raiz e métricas
  • Monitoramento em Tempo Real: Monitoramento de status em tempo real e visualização de logs

Autenticação e Autorização

  • Múltiplos Métodos de Autenticação: Autenticação Basic, JWT Bearer, Autenticação de Cabeçalho Personalizado
  • Controle Granular: Controle de injeção de dependência para cada endpoint
  • Criptografia Segura: Armazenamento criptografado AES de cabeçalhos de autenticação de ferramentas

Persistência e Migração

  • Suporte a ORM: ORM SQLAlchemy assíncrono (SQLite, PostgreSQL, MySQL, etc.)
  • Migração Automática: Migração automática de banco de dados Alembic
  • Pool de Conexões: Configuração completa do pool de conexões de banco de dados

Sistema de Eventos e Observabilidade

  • Eventos Unificados: Encapsulamento de eventos unificados para fan-out WS/SSE
  • Filtragem no Lado do Servidor: Filtragem de eventos no lado do servidor e hooks de retorno
  • Logs Estruturados: Registro de logs JSON estruturados
  • Verificação de Saúde: Endpoint /health e decorador de métricas de latência
  • Métricas Completas: Coleta de métricas para cada manipulador

Experiência de Desenvolvimento

Ferramentas de Desenvolvimento

  • Alvos Makefile: Mais de 100 alvos de desenvolvimento pré-definidos
  • Qualidade do Código: Hooks pre-commit (ruff, black, mypy, isort)
  • Recarregamento em Tempo Real: Servidor de desenvolvimento suporta recarregamento em tempo real
  • Cobertura de Teste: Mais de 400 casos de teste
  • CI/CD: Insígnias de CI completas e processos automatizados

Opções de Implantação

  • Implantação em Contêiner: Suporte a Docker/Podman
  • Nativo da Nuvem: Suporte à implantação do IBM Cloud Code Engine
  • Múltiplos Ambientes: Configuração de ambientes de desenvolvimento, teste e produção
  • SSL/TLS: Suporte HTTPS completo

Opções de Configuração

Configuração Básica

# Configuração básica da aplicação
APP_NAME=MCP Gateway
HOST=0.0.0.0
PORT=4444
DATABASE_URL=sqlite:///./mcp.db
APP_ROOT_PATH=/gateway  # Prefixo de subcaminho opcional

Configuração de Autenticação

# Autenticação Basic (Interface de Gerenciamento e API)
BASIC_AUTH_USER=admin
BASIC_AUTH_PASSWORD=changeme

# Configuração JWT
JWT_SECRET_KEY=my-test-key
JWT_ALGORITHM=HS256
TOKEN_EXPIRY=10080  # Minutos

# Controle de Autenticação
AUTH_REQUIRED=true
AUTH_ENCRYPTION_SECRET=my-test-salt

Configuração de Federação

# Funcionalidade de Federação
FEDERATION_ENABLED=true
FEDERATION_DISCOVERY=false
FEDERATION_PEERS=["http://peer1:4444","http://peer2:4444"]
FEDERATION_TIMEOUT=30
FEDERATION_SYNC_INTERVAL=300

Início Rápido

Executando com Docker

docker run -d --name mcpgateway \
  -p 4444:4444 \
  -e HOST=0.0.0.0 \
  -e JWT_SECRET_KEY=my-secret-key \
  -e BASIC_AUTH_USER=admin \
  -e BASIC_AUTH_PASSWORD=changeme \
  -e AUTH_REQUIRED=true \
  -e DATABASE_URL=sqlite:///./mcp.db \
  ghcr.io/ibm/mcp-context-forge:latest

Desenvolvimento Local

# Crie um ambiente virtual e instale as dependências
make venv install serve

# Ou instale manualmente
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
uvicorn mcpgateway.main:app --host 0.0.0.0 --port 4444

Gerar Token de Autenticação

export MCPGATEWAY_BEARER_TOKEN=$(python3 -m mcpgateway.utils.create_jwt_token --username admin --exp 10080 --secret my-test-key)

Exemplos de Uso da API

Inicialização do Protocolo

curl -X POST -u admin:changeme \
  -H "Content-Type: application/json" \
  -d '{
    "protocol_version":"2025-03-26",
    "capabilities":{},
    "client_info":{"name":"MyClient","version":"1.0.0"}
  }' \
  http://localhost:4444/protocol/initialize

Registrar Ferramenta

curl -X POST -u admin:changeme \
  -H "Content-Type: application/json" \
  -d '{
    "name":"clock_tool",
    "url":"http://localhost:9000/rpc",
    "description":"Retorna a hora atual",
    "input_schema":{
      "type":"object",
      "properties":{"timezone":{"type":"string"}},
      "required":[]
    }
  }' \
  http://localhost:4444/tools

Criar Template de Prompt

curl -X POST -u admin:changeme \
  -H "Content-Type: application/json" \
  -d '{
    "name":"greet",
    "template":"Olá, {{ user }}!",
    "argument_schema":{
      "type":"object",
      "properties":{"user":{"type":"string"}},
      "required":["user"]
    }
  }' \
  http://localhost:4444/prompts

Implantação no IBM Cloud Code Engine

O projeto oferece suporte completo à implantação no IBM Cloud Code Engine:

Configuração do Ambiente

IBMCLOUD_REGION=us-south
IBMCLOUD_RESOURCE_GROUP=default
IBMCLOUD_PROJECT=my-codeengine-project
IBMCLOUD_CODE_ENGINE_APP=mcpgateway
IBMCLOUD_IMAGE_NAME=us.icr.io/myspace/mcpgateway:latest
IBMCLOUD_API_KEY=your_api_key_here

Comandos de Implantação

make ibmcloud-check-env      # Verifica as variáveis de ambiente
make ibmcloud-cli-install    # Instala o IBM Cloud CLI
make ibmcloud-login          # Faz login no IBM Cloud
make ibmcloud-ce-login       # Seleciona o projeto Code Engine
make ibmcloud-tag            # Marca a imagem do contêiner
make ibmcloud-push           # Envia para o IBM Container Registry
make ibmcloud-deploy         # Implanta no Code Engine

Estrutura do Projeto

mcpgateway/
├── admin.py                    # Rotas FastAPI e controlador da UI de gerenciamento
├── cache/
│   └── resource_cache.py      # Cache LRU+TTL na memória para recursos
├── config.py                  # Carregador de configurações Pydantic
├── db.py                      # Modelos SQLAlchemy ORM e configuração do banco de dados
├── federation/
│   ├── discovery.py           # Descoberta de gateway par
│   ├── forward.py             # Lógica de encaminhamento RPC
│   └── manager.py             # Coordenação de federação e verificação de saúde
├── handlers/
│   └── sampling.py            # Manipulador de requisições de amostragem de fluxo MCP
├── services/
│   ├── completion_service.py  # Lógica de conclusão de parâmetros de prompt e recurso
│   ├── gateway_service.py     # Registro e gerenciamento de gateway par
│   ├── prompt_service.py      # CRUD e renderização de templates de prompt
│   ├── resource_service.py    # Registro, recuperação, assinatura de recursos
│   ├── server_service.py      # Registro de servidor e monitoramento de saúde
│   └── tool_service.py        # Registro, invocação, métricas de ferramentas
├── transports/
│   ├── sse_transport.py       # Transporte de Server-Sent Events
│   ├── stdio_transport.py     # Transporte stdio
│   └── websocket_transport.py # Transporte WebSocket
└── utils/
    ├── create_jwt_token.py    # Ferramenta de geração e verificação de JWT
    └── verify_credentials.py # Dependência de autenticação FastAPI

Desenvolvimento e Contribuição

Configuração do Ambiente de Desenvolvimento

# Instale as dependências de desenvolvimento
make install-dev

# Execute a verificação de código
make lint

# Execute os testes
make test

# Execute os testes de cobertura
make coverage

Ferramentas de Qualidade de Código

O projeto integra várias ferramentas de qualidade de código:

  • Formatação: black, isort, autoflake
  • Análise Estática: mypy, pylint, pyright, pyre
  • Verificação de Segurança: bandit, pip-audit
  • Análise de Complexidade: radon, wily
  • Verificação de Dependências: fawltydeps, pip-licenses

Resumo

MCP Context Forge é uma solução de gateway de protocolo de contexto de modelo completa e pronta para produção, especialmente adequada para as necessidades de integração e gerenciamento de ferramentas de aplicações LLM de nível empresarial. Ele não apenas implementa a funcionalidade completa do protocolo MCP, mas também fornece ricas funcionalidades de extensão, como descoberta de federação, conversão de protocolo, serviços virtualizados, etc., tornando-o um componente de infraestrutura ideal para construir ecossistemas complexos de aplicações de IA.

Star History Chart