Skip links

Como Construir um Servidor MCP com Vector Store: Integrando Documentação 3D no Cursor

O desenvolvimento de ferramentas de IA cada vez mais eficientes tem revolucionado o workflow de programadores em todo o mundo. Uma das combinações mais poderosas é a integração de servidores MCP (Message Context Protocol) com vector stores, permitindo que IDEs como o Cursor acessem documentação atualizada e relevante sem sair do ambiente de codificação. Neste artigo, vamos explorar como configurar um servidor MCP com Typescript que utiliza a feature de busca em arquivos do OpenAI, e como isso pode transformar sua experiência de desenvolvimento.

O Poder do Gemini 2.5 na Criação de Servidores MCP

O Google recentemente lançou o Gemini 2.5, um modelo de IA com capacidades impressionantes para raciocínio e desenvolvimento de código. Este modelo tem se destacado nos benchmarks de codificação, superando concorrentes como o GPT-4o e Claude 3.5 Sonnet. Com uma pontuação média de codificação de 85.8, o Gemini 2.5 prova ser uma ferramenta valiosa para desenvolvedores que buscam assistência em projetos complexos.

Utilizando o Google AI Studio com o modelo Gemini 2.5 Pro experimental, podemos criar um servidor MCP que integra um vector store da OpenAI, permitindo acesso a documentações específicas diretamente no Cursor.

Preparando o Terreno: Criando um Vector Store

Antes de mergulharmos no código, precisamos preparar nosso vector store que servirá como base de conhecimento para nosso servidor MCP. Neste exemplo, usaremos documentação do Three.js, uma popular biblioteca JavaScript para criação de gráficos 3D.

Passo a Passo para Criar um Vector Store na OpenAI

  1. Acesse o dashboard da OpenAI e navegue até a seção “Storage”
  2. Clique em “Create” e dê um nome ao seu vector store (ex: “3js_docs”)
  3. Clique em “Add Files” e faça upload dos arquivos da documentação
  4. Configure as opções avançadas:
    • Tamanho do chunk: 2000
    • Overlap: 400
  5. Finalize o processo e guarde o ID do vector store para uso posterior

A criação do vector store é rápida e, uma vez concluída, você terá um ID único que será utilizado para acessar essa base de conhecimento a partir do seu servidor MCP.

Construindo o Servidor MCP em TypeScript

Agora que temos nossa base de conhecimento pronta, vamos criar o servidor MCP que conectará o Cursor a esse vector store. Siga os passos abaixo para configurar tudo corretamente:

Iniciando o Projeto

Primeiro, precisamos configurar a estrutura básica do nosso projeto:

  1. Crie um novo diretório para o projeto e abra-o no Cursor
  2. Inicialize o projeto Node.js com: npm init -y
  3. Instale as dependências necessárias:
    npm install @cursor/mcp-server-sdk openai dotenv typescript @types/node --save

Estrutura de Arquivos

Seu projeto deve seguir esta estrutura de arquivos:

  • src/
    • index.ts
    • types.ts
  • .env
  • config.json
  • .gitignore
  • package.json
  • tsconfig.json

Configurando os Arquivos

Vamos configurar cada arquivo necessário para nosso servidor MCP:

1. .env – Para armazenar suas credenciais:

OPENAI_API_KEY=sua_chave_api_aqui
VECTOR_STORE_ID=seu_vector_store_id_aqui

2. .gitignore – Para evitar commits de arquivos sensíveis:

node_modules/
.env
build/

3. config.json – Configuração básica do servidor:

{
  "name": "OpenAI File Search",
  "version": "1.0.0",
  "description": "Query OpenAI file search vector store for relevant context"
}

4. types.ts – Definições de tipos para o projeto:

export interface FileSearchParams {
  query: string;
  maxChunks?: number;
}

export interface FileSearchResult {
  chunks: string[];
  metadata?: {
    source: string;
    score: number;
  }[];
}

5. index.ts – O coração do nosso servidor MCP:

import { MCPServer } from '@cursor/mcp-server-sdk';
import { FileSearchParams, FileSearchResult } from './types';
import OpenAI from 'openai';
import * as dotenv from 'dotenv';

dotenv.config();

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

const vectorStoreId = process.env.VECTOR_STORE_ID;

if (!process.env.OPENAI_API_KEY || !vectorStoreId) {
  throw new Error('OPENAI_API_KEY and VECTOR_STORE_ID must be set in .env file');
}

const server = new MCPServer();

server.addTool({
  name: '3js_docs_search',
  description: 'Search the Three.js documentation for relevant information',
  parameters: {
    type: 'object',
    properties: {
      query: {
        type: 'string',
        description: 'The search query to find information in the Three.js documentation'
      },
      maxChunks: {
        type: 'number',
        description: 'Maximum number of chunks to return',
        default: 5
      }
    },
    required: ['query']
  },
  handler: async (params: FileSearchParams): Promise => {
    try {
      const { query, maxChunks = 5 } = params;
      
      const response = await openai.fileSearch.create({
        file_search_id: vectorStoreId,
        query,
        max_chunks: maxChunks,
      });

      return {
        chunks: response.chunks.map(chunk => chunk.text),
        metadata: response.chunks.map(chunk => ({
          source: chunk.source || 'unknown',
          score: chunk.score
        }))
      };
    } catch (error) {
      console.error('Error searching files:', error);
      throw error;
    }
  }
});

server.start();
console.log('MCP Server started successfully');

Compilação e Configuração Final

Agora precisamos compilar e configurar nosso servidor para que o Cursor possa reconhecê-lo:

  1. Adicione scripts ao package.json:
    "scripts": {
      "build": "tsc",
      "start": "node build/index.js"
    }
            
  2. Configure o tsconfig.json:
    {
      "compilerOptions": {
        "target": "ES2020",
        "module": "CommonJS",
        "outDir": "./build",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true
      },
      "include": ["src/**/*"]
    }
            
  3. Compile o projeto:
    npm run build
  4. Crie um link NPM para o projeto:
    npm link

Conectando o Servidor MCP ao Cursor

O último passo é configurar o Cursor para reconhecer e utilizar nosso servidor MCP:

  1. Crie um diretório .cursor na raiz do seu projeto
  2. Dentro deste diretório, crie um arquivo mcp.json com o seguinte conteúdo:
    {
      "servers": [
        {
          "name": "3js_docs_search",
          "entrypoint": "./build/index.js",
          "env": {
            "OPENAI_API_KEY": "sua_chave_api_aqui",
            "VECTOR_STORE_ID": "seu_vector_store_id_aqui"
          }
        }
      ]
    }
            
  3. Reinicie o Cursor
  4. Acesse as configurações do Cursor e ative a opção MCP

Pronto! Agora você tem um servidor MCP completamente funcional que permite consultar a documentação do Three.js diretamente do seu ambiente de desenvolvimento.

Testando o Servidor MCP

Para testar se tudo está funcionando corretamente, abra o chat do Cursor e faça uma pergunta sobre o Three.js, como “Como criar fog em Three.js?”. O Cursor utilizará seu servidor MCP para buscar informações relevantes na documentação e fornecer uma resposta detalhada com referências diretas à documentação oficial.

Este fluxo de trabalho é extremamente valioso, pois:

  • Elimina a necessidade de alternar entre a IDE e a documentação
  • Fornece informações atualizadas, já que você pode atualizar seu vector store
  • Melhora a precisão das respostas do assistente de IA ao fornecer contexto específico
  • Acelera seu processo de desenvolvimento com informações relevantes e imediatas

Ampliando as Possibilidades

O exemplo que construímos utiliza a documentação do Three.js, mas você pode adaptar esta abordagem para qualquer biblioteca ou framework que seja relevante para seus projetos. Basta criar um vector store com a documentação desejada e ajustar o servidor MCP de acordo.

Algumas ideias de aplicações incluem:

  • Documentação de APIs específicas da sua empresa
  • Guias de estilo e padrões de código internos
  • Documentação técnica de frameworks como React, Vue, Angular, etc.
  • Tutoriais e exemplos de código relevantes para seu domínio

Experimente hoje mesmo! Configure seu próprio servidor MCP com vector store e transforme sua experiência de desenvolvimento com acesso instantâneo à documentação relevante diretamente no Cursor.

Dê o Próximo Passo com Este Conhecimento

Agora que você domina a criação de servidores MCP com vector stores, explore ainda mais esse potencial! Experimente criar vector stores para diferentes bibliotecas e frameworks relevantes para seus projetos. Compartilhe suas configurações com sua equipe para melhorar a produtividade coletiva.

Lembre-se que a integração entre IDEs inteligentes como o Cursor e bases de conhecimento personalizadas representa o futuro do desenvolvimento de software. Ao adotar essas ferramentas agora, você se posiciona na vanguarda da produtividade e inovação.

Pronto para experimentar? Comece hoje mesmo criando seu próprio servidor MCP e veja como isso pode transformar seu fluxo de trabalho de desenvolvimento!

Perguntas Frequentes

O que exatamente é um servidor MCP e por que ele é útil para desenvolvedores?
Um servidor MCP (Message Context Protocol) é uma interface que permite a comunicação entre IDEs inteligentes (como o Cursor) e ferramentas externas ou bases de conhecimento. Ele funciona como uma ponte que possibilita que assistentes de IA dentro dessas IDEs acessem informações específicas e executem ações personalizadas.

Para desenvolvedores, os servidores MCP são extremamente úteis porque permitem integrar documentações técnicas, bases de conhecimento proprietárias, APIs externas e outras ferramentas diretamente no fluxo de trabalho de desenvolvimento. Isso elimina a necessidade de alternar constantemente entre aplicações, aumentando significativamente a produtividade e permitindo que os assistentes de IA ofereçam respostas mais precisas e contextualizadas.

Um dos maiores benefícios é a capacidade de manter o assistente de IA atualizado com as mais recentes documentações e convenções de código específicas do seu projeto ou empresa, algo que os modelos genéricos de IA não conseguem fazer nativamente.

Como os vector stores funcionam e por que são importantes para busca de documentação?
Vector stores são bancos de dados especializados que armazenam representações numéricas (embeddings) de textos, imagens ou outros dados. No contexto de documentação técnica, cada trecho de documento é convertido em um vetor multidimensional que captura seu significado semântico.

Quando você faz uma busca, sua consulta também é convertida em um vetor, e o sistema identifica os trechos de documentação mais semanticamente similares através de cálculos de proximidade no espaço vetorial. Isso permite buscas por significado, não apenas por palavras-chave.

A importância dos vector stores para busca de documentação está em sua capacidade de compreender o contexto e a intenção por trás das consultas. Por exemplo, se você buscar “como criar um efeito de névoa”, um vector store pode retornar documentação sobre “fog” em Three.js, mesmo que sua consulta não contenha essa palavra específica. Isso resulta em respostas mais relevantes e úteis quando comparado a buscas tradicionais baseadas em palavras-chave.

Além disso, ao integrar vector stores com IDEs via servidores MCP, você cria um sistema que fornece exatamente a documentação relevante no momento em que é necessária, sem precisar interromper seu fluxo de trabalho.

Quais são as vantagens do Gemini 2.5 em comparação com outros modelos de IA para desenvolvimento?
O Gemini 2.5 oferece várias vantagens significativas para desenvolvedores em comparação com outros modelos de IA:

Desempenho superior em codificação: Com uma pontuação média de 85.8 em benchmarks de codificação, o Gemini 2.5 supera modelos concorrentes como GPT-4o e Claude 3.5 Sonnet. Isso se traduz em código mais preciso, eficiente e alinhado com as melhores práticas.

Velocidade de processamento: O Gemini 2.5 se destaca pela rapidez com que processa solicitações complexas, permitindo um fluxo de trabalho mais ágil para desenvolvedores que precisam de respostas imediatas durante a codificação.

Contexto ampliado: O modelo suporta um contexto muito maior que versões anteriores, permitindo analisar e trabalhar com bases de código extensas em uma única interação, o que é crucial para projetos complexos ou refatorações de grande escala.

Capacidade de raciocínio avançada: O Gemini 2.5 demonstra uma compreensão mais profunda das intenções do desenvolvedor e do funcionamento de sistemas complexos, gerando soluções mais sofisticadas e adaptadas ao contexto específico do projeto.

Essas vantagens tornam o Gemini 2.5 particularmente valioso para tarefas como debugging de código complexo, otimização de performance, arquitetura de sistemas e integração de tecnologias diversas em um único projeto.

É possível usar esta abordagem com outros modelos de IA além do Gemini 2.5?
Sim, definitivamente é possível usar esta abordagem de servidores MCP com vector stores utilizando outros modelos de IA além do Gemini 2.5. A arquitetura e metodologia demonstradas neste artigo são compatíveis com diversos modelos de linguagem.

Para implementar com outros modelos, você precisaria ajustar principalmente a parte de consulta e processamento de dados. Por exemplo, se quisesse usar o GPT-4 da OpenAI, você manteria a mesma estrutura de servidor MCP, mas possivelmente ajustaria os prompts e a forma como as informações do vector store são processadas e apresentadas.

Outros modelos como Claude da Anthropic, LLaMA da Meta, ou Mistral AI também podem ser integrados seguindo princípios semelhantes. A principal diferença estaria nas bibliotecas específicas usadas para acessar cada modelo e possivelmente em como formatar as informações para obter resultados ótimos.

O valor fundamental desta abordagem — integrar bases de conhecimento específicas com IDEs inteligentes — permanece válido independentemente do modelo de IA utilizado, embora diferentes modelos possam oferecer vantagens específicas dependendo do tipo de documentação e contexto de desenvolvimento.

Quais outros tipos de aplicações os servidores MCP podem ter além de busca em documentação?
Os servidores MCP têm um potencial imenso além da busca em documentação, oferecendo várias aplicações que podem revolucionar fluxos de trabalho de desenvolvimento:

Integração com CI/CD: Servidores MCP podem conectar-se a pipelines de CI/CD, permitindo que você consulte ou acione builds, implantações e testes diretamente da sua IDE através de comandos em linguagem natural.

Análise de código personalizada: Além da documentação, você pode implementar ferramentas de análise estática de código que seguem as regras específicas da sua empresa, recebendo feedback instantâneo sobre questões de segurança, performance ou estilo.

Acesso a dados internos: Conecte-se a bancos de dados internos ou APIs da empresa para consultar informações de negócio, métricas ou dados de produtos sem sair da sua IDE.

Automação de tarefas repetitivas: Crie servidores MCP que automatizam tarefas como criação de boilerplates, geração de testes unitários, refatoração seguindo padrões específicos ou tradução de código entre linguagens.

Colaboração em tempo real: Implemente servidores MCP que facilitam a comunicação entre membros da equipe, compartilhando snippets de código, resolução de problemas colaborativa ou revisão de código dentro do ambiente de desenvolvimento.

Monitoramento e visualização: Integre ferramentas que mostram métricas de desempenho da aplicação, utilizações de recursos ou logs de erro em tempo real, auxiliando na depuração e otimização.

Essas aplicações transformam sua IDE em um centro de comando unificado para todo o ciclo de desenvolvimento, independentemente das ferramentas ou sistemas que sua organização utiliza.

Assista ao vídeo original

Este artigo foi baseado no vídeo abaixo. Se preferir, você pode assistir ao conteúdo original: