Cloudflare MCP Server
Implante um servidor MCP remoto e sem autenticação no Cloudflare Workers.
Documentação
MCP Memory
MCP Memory é um MCP Server que dá aos MCP Clients (Cursor, Claude, Windsurf e outros) a capacidade de lembrar informações sobre usuários (preferências, comportamentos) entre conversas. Ele usa tecnologia de busca vetorial para encontrar memórias relevantes com base no significado, não apenas em palavras-chave. É construído com Cloudflare Workers, D1, Vectorize (RAG), Durable Objects, Workers AI e Agents.
📺 Vídeo
🚀 Experimente
https://memory.mcpgenerator.com/
🛠️ Como Implantar Seu Próprio MCP Memory
Opção 1: Implantação com Um Clique do Seu Próprio MCP Memory na Cloudflare
Na seção Create Vectorize, escolha:
- Dimensions: 1024
- Metric: cosine
Clique no botão "Create and Deploy"
No painel da Cloudflare, vá para "Workers & Pages" e clique em Visit

Opção 2: Use este template
- Clique no botão "Use this template" no topo deste repositório
- Clone seu novo repositório
- Siga as instruções de configuração abaixo
Opção 3: Criar com a CLI da Cloudflare
npm create cloudflare@latest --git https://github.com/puliczek/mcp-memory
🔧 Configuração (Apenas Opções 2 e 3)
- Instale as dependências:
npm install
- Crie um índice Vectorize:
npx wrangler vectorize create mcp-memory-vectorize --dimensions 1024 --metric cosine
- Instale o Wrangler:
npm run dev
- Implante o worker:
npm run deploy
🧠 Como Funciona

-
Armazenando Memórias:
- Seu texto é processado pelo Cloudflare Workers AI usando o modelo open-source
@cf/baai/bge-m3para gerar embeddings - O texto e seu embedding vetorial são armazenados em dois lugares:
- Cloudflare Vectorize: Armazena os embeddings vetoriais para busca por similaridade
- Cloudflare D1: Armazena o texto original e metadados para persistência
- Um Durable Object (MyMCP) gerencia o estado e garante consistência
- O framework Agents lida com a comunicação do protocolo MCP
- Seu texto é processado pelo Cloudflare Workers AI usando o modelo open-source
-
Recuperando Memórias:
- Sua consulta é convertida em um vetor usando Workers AI com o mesmo modelo
@cf/baai/bge-m3 - O Vectorize realiza busca por similaridade para encontrar memórias relevantes
- Os resultados são classificados por pontuação de similaridade
- O banco de dados D1 fornece o texto original para os vetores correspondentes
- O Durable Object coordena o processo de recuperação
- Sua consulta é convertida em um vetor usando Workers AI com o mesmo modelo
Esta arquitetura permite:
- Busca rápida por similaridade vetorial através do Vectorize
- Armazenamento persistente com D1
- Operações com estado via Durable Objects
- Interações padronizadas de IA através do Workers AI
- Conformidade com o protocolo via framework Agents
O sistema encontra informações conceitualmente relacionadas mesmo quando as palavras exatas não correspondem.
🔒 Segurança
O MCP Memory implementa várias medidas de segurança para proteger os dados do usuário:
- As memórias de cada usuário são armazenadas em namespaces isolados dentro do Vectorize para separação de dados
- Limitação de taxa integrada previne abuso (100 req/min - você pode alterá-la em wrangler.jsonc)
- A autenticação é baseada apenas no userId
- Embora isso seja suficiente para proteção básica devido à limitação de taxa
- Camadas adicionais de autenticação (como chaves de API ou OAuth) podem ser facilmente adicionadas se necessário
- Todos os dados são armazenados na infraestrutura segura da Cloudflare
- Todas as comunicações são protegidas com criptografia TLS padrão da indústria (fornecida automaticamente pela certificação SSL/TLS da Cloudflare)
💰 Informações de Custo - GRATUITO para a Maioria dos Usuários
O MCP Memory é gratuito para níveis normais de uso:
- O nível gratuito permite 1.000 memórias com ~28.000 consultas por mês
- Usa a cota gratuita da Cloudflare para Workers, Vectorize, Worker AI e banco de dados D1
Para mais detalhes sobre preços da Cloudflare, consulte:
- Preços do Vectorize
- Preços do Workers AI
- Preços do Workers
- Preços do Durable Objects
- Preços do Database D1
❓ Perguntas Frequentes
-
Posso usar memory.mcpgenerator.com para armazenar minhas memórias?
- Sim, você pode usar memory.mcpgenerator.com para armazenar e recuperar suas memórias
- O serviço é gratuito
- Suas memórias são armazenadas com segurança e acessíveis apenas a você
- Não posso garantir que o serviço estará sempre disponível
-
Posso hospedá-lo?
- Sim, você pode hospedar sua própria instância do MCP Memory gratuitamente na Cloudflare
- Você precisará de uma conta Cloudflare e dos seguintes serviços:
- Workers
- Vectorize
- D1 Database
- Workers AI
-
Posso executá-lo localmente?
- Sim, você pode executar o MCP Memory localmente para desenvolvimento
- Use
wrangler devpara executar o worker localmente - Você precisará configurar credenciais de desenvolvimento local para os serviços da Cloudflare
- Observe que alguns recursos como busca vetorial ou Workers AI exigem uma conexão com os serviços da Cloudflare
-
Posso usar hospedagem diferente?
- Não, o MCP Memory é especificamente projetado para a infraestrutura da Cloudflare
-
Por que você o construiu?
- Eu queria uma solução open-source
- O controle sobre meus próprios dados era importante para mim
-
Posso usá-lo para mais de uma pessoa?
- Sim, o MCP Memory pode ser integrado ao seu aplicativo para atender todos os seus usuários
- Cada usuário tem seu próprio espaço de memória isolado
-
Posso usá-lo para armazenar outras coisas além de memórias?
- Sim, o MCP Memory pode armazenar qualquer tipo de informação baseada em texto
- Alguns exemplos práticos:
- Base de Conhecimento: Armazene documentação técnica, procedimentos e guias de solução de problemas
- Comportamentos do Usuário: Acompanhe como os usuários interagem com recursos e padrões de uso comuns
- Notas de Projeto: decisões e atualizações do projeto
- A busca vetorial ajudará a encontrar itens relacionados independentemente do tipo de conteúdo
Cloudflare Browser Rendering Experiments & MCP Server
Este projeto demonstra como usar o Cloudflare Browser Rendering para extrair conteúdo web para contexto de LLM. Inclui experimentos com a REST API e a Workers Binding API, bem como uma implementação de servidor MCP que pode ser usada para fornecer contexto web a LLMs.
Estrutura do Projeto
cloudflare-browser-rendering/
├── examples/ # Example implementations and utilities
│ ├── basic-worker-example.js # Basic Worker with Browser Rendering
│ ├── minimal-worker-example.js # Minimal implementation
│ ├── debugging-tools/ # Tools for debugging
│ │ └── debug-test.js # Debug test utility
│ └── testing/ # Testing utilities
│ └── content-test.js # Content testing utility
├── experiments/ # Educational experiments
│ ├── basic-rest-api/ # REST API tests
│ ├── puppeteer-binding/ # Workers Binding API tests
│ └── content-extraction/ # Content processing tests
├── src/ # MCP server source code
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server implementation
│ ├── browser-client.ts # Browser Rendering client
│ └── content-processor.ts # Content processing utilities
├── puppeteer-worker.js # Cloudflare Worker with Browser Rendering binding
├── test-puppeteer.js # Tests for the main implementation
├── wrangler.toml # Wrangler configuration for the Worker
├── cline_mcp_settings.json.example # Example MCP settings for Cline
├── .gitignore # Git ignore file
└── LICENSE # MIT License
Pré-requisitos
- Node.js (v16 ou posterior)
- Uma conta Cloudflare com Browser Rendering habilitado
- TypeScript
- CLI do Wrangler (para implantar o Worker)
Instalação
- Clone o repositório:
git clone https://github.com/yourusername/cloudflare-browser-rendering.git
cd cloudflare-browser-rendering
- Instale as dependências:
npm install
Configuração do Cloudflare Worker
- Instale o pacote Cloudflare Puppeteer:
npm install @cloudflare/puppeteer
- Configure o Wrangler:
# wrangler.toml
name = "browser-rendering-api"
main = "puppeteer-worker.js"
compatibility_date = "2023-10-30"
compatibility_flags = ["nodejs_compat"]
[browser]
binding = "browser"
- Implante o Worker:
npx wrangler deploy
- Teste o Worker:
node test-puppeteer.js
Executando os Experimentos
Experimento Básico com REST API
Este experimento demonstra como usar a REST API do Cloudflare Browser Rendering para buscar e processar conteúdo web:
npm run experiment:rest
Experimento com Puppeteer Binding API
Este experimento demonstra como usar a Workers Binding API do Cloudflare Browser Rendering com Puppeteer para automação de navegador mais avançada:
npm run experiment:puppeteer
Experimento de Extração de Conteúdo
Este experimento demonstra como extrair e processar conteúdo web especificamente para uso como contexto em LLMs:
npm run experiment:content
Servidor MCP
O servidor MCP fornece ferramentas para buscar e processar conteúdo web usando Cloudflare Browser Rendering para uso como contexto em LLMs.
Compilando o Servidor MCP
npm run build
Executando o Servidor MCP
npm start
Ou, para desenvolvimento:
npm run dev
Ferramentas do Servidor MCP
O servidor MCP fornece as seguintes ferramentas:
fetch_page- Busca e processa uma página web para contexto de LLMsearch_documentation- Pesquisa a documentação da Cloudflare e retorna conteúdo relevanteextract_structured_content- Extrai conteúdo estruturado de uma página web usando seletores CSSsummarize_content- Resume conteúdo web para um contexto de LLM mais conciso
Configuração
Para usar seu endpoint do Cloudflare Browser Rendering, defina a variável de ambiente BROWSER_RENDERING_API:
export BROWSER_RENDERING_API=https://YOUR_WORKER_URL_HERE
Substitua YOUR_WORKER_URL_HERE pela URL do seu Cloudflare Worker implantado. Você precisará substituir este placeholder em vários arquivos:
- Nos arquivos de teste:
test-puppeteer.js,examples/debugging-tools/debug-test.js,examples/testing/content-test.js - Na configuração do servidor MCP:
cline_mcp_settings.json.example - No cliente do navegador:
src/browser-client.ts(como fallback se a variável de ambiente não estiver definida)
Integrando com o Cline
Para integrar o servidor MCP com o Cline, copie o arquivo cline_mcp_settings.json.example para o local apropriado:
cp cline_mcp_settings.json.example ~/Library/Application\ Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Ou adicione a configuração ao seu arquivo cline_mcp_settings.json existente.
Principais Aprendizados
- O Cloudflare Browser Rendering requer o pacote
@cloudflare/puppeteerpara interagir com o binding do navegador. - O padrão correto para usar o binding do navegador é:
import puppeteer from '@cloudflare/puppeteer'; // Then in your handler: const browser = await puppeteer.launch(env.browser); const page = await browser.newPage(); - Ao implantar um Worker que usa o binding do Browser Rendering, você precisa habilitar a flag de compatibilidade
nodejs_compat. - Sempre feche o navegador após o uso para evitar vazamentos de recursos.
cloudflare-api-mcp
Este é um servidor leve de Model Control Protocol (MCP) inicializado com create-mcp e implantado no Cloudflare Workers.
Este servidor MCP permite que agentes (como o Cursor) interajam com a Cloudflare REST API.
Ainda está em desenvolvimento; adicionarei mais ferramentas conforme eu precisar delas.
Ferramentas Disponíveis
Consulte src/index.ts para a lista atual de ferramentas. Cada método da classe é uma ferramenta MCP.
Instalação
- Execute o script de instalação automatizado para clonar este servidor MCP e implantá-lo na sua conta Cloudflare:
bun create mcp --clone https://github.com/zueai/cloudflare-api-mcp
-
Abra o
Cursor Settings -> MCP -> Add new MCP servere cole o comando que foi copiado para sua área de transferência. -
Envie sua chave de API e email da Cloudflare para os secrets do seu worker:
bunx wrangler secret put CLOUDFLARE_API_KEY
bunx wrangler secret put CLOUDFLARE_API_EMAIL
Desenvolvimento Local
Adicione sua chave de API e email da Cloudflare ao arquivo .dev.vars:
CLOUDFLARE_API_KEY=<your-cloudflare-api-key>
CLOUDFLARE_API_EMAIL=<your-cloudflare-api-email>
Implantação
- Execute o script de implantação:
bun run deploy
- Recarregue sua janela do Cursor para ver as novas ferramentas.
Como Criar Novas Ferramentas MCP
Para criar novas ferramentas MCP, adicione métodos à classe MyWorker em src/index.ts. Cada função se tornará automaticamente uma ferramenta MCP que seu agente pode usar.
Exemplo:
/**
* Create a new DNS record in a zone.
* @param zoneId {string} The ID of the zone to create the record in.
* @param name {string} The name of the DNS record.
* @param content {string} The content of the DNS record.
* @param type {string} The type of DNS record (CNAME, A, TXT, or MX).
* @param comment {string} Optional comment for the DNS record.
* @param proxied {boolean} Optional whether to proxy the record through Cloudflare.
* @return {object} The created DNS record.
*/
createDNSRecord(zoneId: string, name: string, content: string, type: string, comment?: string, proxied?: boolean) {
// Implementation
}
Os comentários JSDoc são importantes:
- A primeira linha se torna a descrição da ferramenta
- As tags
@paramdefinem os parâmetros da ferramenta com tipos e descrições - A tag
@returnespecifica o valor de retorno e o tipo