open-context

Um servidor MCP de alto desempenho que fornece documentação atualizada para Go, npm, Python, Rust, Docker, Kubernetes, Terraform e mais — obtida de fontes oficiais, não de dados de treinamento.

Documentação

Open Context

CI Go Report Card License: MIT Stars MCP

open-context MCP server

Um servidor MCP (Model Context Protocol) de alto desempenho que fornece documentação atualizada para linguagens de programação, frameworks e ferramentas. Construído em Go para velocidade e simplicidade.

O que é o Open Context?

O Open Context busca e armazena em cache documentação de fontes oficiais, tornando-a instantaneamente disponível para assistentes de IA como o Claude. Em vez de depender de dados de treinamento desatualizados, tenha acesso em tempo real a:

  • Go: Documentação da biblioteca padrão, pacotes de terceiros, notas de versão
  • JavaScript/TypeScript: Pacotes npm, Node.js, React, versões do Next.js
  • Python: Pacotes PyPI com instruções de instalação e metadados do pacote
  • Rust: Pacotes do crates.io com informações de versão e links de documentação
  • Ferramentas de DevOps: Docker, Kubernetes, Helm, Terraform, Ansible, Jenkins, GitHub Actions
  • E mais: Fácil de estender com qualquer linguagem ou framework

Principais Recursos

  • Sempre Atualizado: Busca em fontes oficiais (pkg.go.dev, registro npm, PyPI, crates.io, GitHub releases, GitHub API, Docker Hub)
  • Cache Inteligente: Cache local com TTL configurável (padrão: 7 dias)
  • Rápido e Leve: Escrito em Go, inicia em milissegundos
  • Dois Modos de Transporte: stdio para uso local, HTTP para servidores remotos
  • Nativo MCP: Integração perfeita com Claude Desktop, Cursor e Claude Code

Início Rápido

1. Instalação

Usando Homebrew (macOS/Linux):

brew tap incu6us/homebrew-tap
brew install open-context

Usando o script de instalação:

curl -fsSL https://raw.githubusercontent.com/incu6us/open-context/master/install.sh | bash

Ou compile a partir do código-fonte:

git clone https://github.com/incu6us/open-context
cd open-context
go build -o open-context

Pré-requisitos para compilar: Go 1.25 ou superior

2. Configure Seu Cliente MCP

Escolha seu cliente e siga as instruções de configuração:

Claude Desktop
  1. Encontre seu arquivo de configuração:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Adicione open-context:

    {
      "mcpServers": {
        "open-context": {
          "command": "/path/to/open-context"
        }
      }
    }
    
  3. Reinicie o Claude Desktop

Cursor
  1. Vá para Configurações > Ferramentas e Integrações > Servidores MCP

  2. Adicione esta configuração:

    {
      "open-context": {
        "command": "/path/to/open-context"
      }
    }
    
  3. Reinicie o Cursor

Claude Code

Opção A: Binário local (transporte stdio)

claude-code mcp add open-context /path/to/open-context

Opção B: Servidor remoto (transporte HTTP)

  1. Inicie o servidor na sua máquina remota:

    ./open-context --transport http --host 0.0.0.0 --port 9011
    
  2. Instale via CLI do Claude:

    claude mcp add --transport http open-context http://your-server.com:9011
    

3. Comece a Usar

Na sua conversa com o Claude, basta digitar:

use open-context for go

ou

create dockerfile using latest alpine image. use open-context

O Claude buscará e usará automaticamente a documentação para responder suas perguntas!


Opções de Instalação

Homebrew (macOS/Linux)

brew tap incu6us/homebrew-tap
brew install open-context

Script de Instalação Rápida

O script de instalação automatiza tudo:

curl -fsSL https://raw.githubusercontent.com/incu6us/open-context/master/install.sh | bash

Instalação Manual

# Clone repository
git clone https://github.com/incu6us/open-context
cd open-context

# Option 1: Build manually
go build -o open-context

# Option 2: Use make
make build
# Or: make setup (builds + shows next steps)

Instalar via go install

go install github.com/incu6us/open-context@latest

O binário estará em $GOPATH/bin/open-context (geralmente ~/go/bin/open-context).


Configuração

O Open Context cria um arquivo de configuração em ~/.open-context/config.yaml na primeira execução.

Configuração de Cache

# How long to keep cached documentation
# Formats: "7d" (days), "24h" (hours), "30m" (minutes), "0" (never expire)
cache_ttl: 7d

Exemplos de configuração:

  • Trabalho offline: cache_ttl: 0 (nunca expira)
  • Atualizações diárias: cache_ttl: 24h
  • Atualizações semanais: cache_ttl: 7d (padrão)

Editar Configuração

# Use your preferred editor
nano ~/.open-context/config.yaml
code ~/.open-context/config.yaml
vim ~/.open-context/config.yaml

As alterações entram em vigor na próxima inicialização do servidor.


Uso

Modos de Servidor

Transporte stdio (padrão) - Para clientes MCP locais:

./open-context

Transporte HTTP - Para acesso remoto ou clientes baseados em HTTP:

# Default (localhost:9011)
./open-context --transport http

# Custom host and port
./open-context --transport http --host 0.0.0.0 --port 3000

# Short flags
./open-context -t http -H 0.0.0.0 -p 9011

Endpoints HTTP:

  • GET /health - Verificação de saúde
  • POST /message - Mensagens MCP JSON-RPC
  • GET /sse - Fluxo de eventos do servidor (Server-Sent Events)

Gerenciamento de Cache

# Clear cache (full flag)
./open-context --clear-cache

# Clear cache (short alias)
./open-context --cc

Isso remove ~/.open-context/cache/. Os dados serão buscados novamente no próximo uso.

Outros Comandos

# Show help
./open-context --help

# Show version
./open-context --version

Usando com o Claude

Ativação Simples

Após configurado, ative a documentação na sua conversa:

use open-context for go
use open-context for typescript
use open-context

O Claude automaticamente:

  1. Descobrirá a documentação disponível
  2. Usará as ferramentas apropriadas
  3. Buscará informações de fontes oficiais
  4. Armazenará resultados em cache localmente

Exemplos de Consultas

Documentação de pacote Go:

What's new in Go 1.21?
Show me how to use github.com/gin-gonic/gin

Pacotes npm:

Get the latest version of express
Show me React 18 features

Ferramentas de DevOps:

What's in Kubernetes 1.28?
Show me Terraform 1.6 changes
Get the golang:1.25-alpine Docker image details

Veja USING_PROMPTS.md para mais exemplos.


Ferramentas Disponíveis

O servidor fornece 15 ferramentas MCP para buscar documentação:

Ferramentas de Documentação

FerramentaDescrição
open-context_search_docsPesquisar em toda a documentação
open-context_get_docsObter tópico específico de documentação
open-context_list_docsListar toda a documentação disponível

Buscadores de Versão e Pacotes

FerramentaO que BuscaExemplo
open-context_get_go_infoVersões e pacotes GoGo 1.21, github.com/gin-gonic/gin
open-context_get_npm_infoPacotes npmexpress, react
open-context_get_python_infoPacotes Python (PyPI)requests, django, numpy
open-context_get_rust_infoCrates Rust (crates.io)serde, tokio, actix-web
open-context_get_node_infoVersões do Node.js20.0.0, 18.17.0
open-context_get_typescript_infoVersões do TypeScript5.0.0, 4.9.5
open-context_get_react_infoVersões do React18.0.0, 17.0.2
open-context_get_nextjs_infoVersões do Next.js14.0.0, 13.5.0
open-context_get_ansible_infoVersões do Ansible2.15.0
open-context_get_terraform_infoVersões do Terraform1.6.0
open-context_get_jenkins_infoVersões do Jenkins2.420
open-context_get_kubernetes_infoVersões do Kubernetes1.28.0
open-context_get_helm_infoVersões do Helm3.13.0
open-context_get_docker_imageImagens do Docker Hubgolang:1.25-alpine
open-context_get_github_actionGitHub Actionsactions/checkout, docker/setup-buildx-action

Todas as ferramentas automaticamente:

  • Buscam de fontes oficiais
  • Armazenam resultados em cache localmente
  • Retornam documentação formatada em markdown
  • Incluem exemplos de instalação/uso

Para documentação detalhada das ferramentas, veja a Referência de Ferramentas abaixo.


Tópicos Avançados

Adicionando Documentação Personalizada

Você pode adicionar documentação personalizada para qualquer linguagem ou framework.

1. Crie a estrutura de diretórios:

mkdir -p data/jenkins/topics

2. Crie o arquivo de metadados (data/jenkins/metadata.json):

{
  "name": "jenkins",
  "displayName": "Jenkins",
  "description": "Jenkins CI/CD automation documentation"
}

3. Adicione tópicos de documentação (data/jenkins/topics/pipeline-basics.json):

{
  "id": "pipeline-basics",
  "title": "Jenkins Pipeline Basics",
  "description": "Introduction to Jenkins declarative pipelines",
  "keywords": ["pipeline", "jenkinsfile", "ci", "cd"],
  "content": "# Jenkins Pipeline Basics\n\n[Your markdown content here]"
}

4. Reinicie o servidor

Veja data/README.md para o guia completo de formato de documentação.

Desenvolvimento

Execute os testes:

# Quick automated test
./test.sh

# Unit tests
go test ./...

# With race detector
go test -race ./...

Adicione uma nova ferramenta MCP:

  1. Adicione a definição da ferramenta em server/server.go → handleToolsList()
  2. Implemente o handler em server/server.go → handleToolCall()
  3. Adicione o método do provedor em docs/provider.go (se necessário)

Estrutura do projeto:

open-context/
├── main.go              # Entry point & CLI
├── server/
│   ├── server.go        # MCP protocol & tool handlers
│   └── http.go          # HTTP transport
├── docs/
│   └── provider.go      # Documentation search & retrieval
├── fetcher/             # External source fetchers
│   ├── go_fetcher.go
│   ├── npm_fetcher.go
│   └── ...
├── cache/               # Cache management
└── data/                # Local documentation storage

Referência de Ferramentas

open-context_search_docs

Pesquise tópicos de documentação em todas as linguagens.

Parâmetros:

  • query (obrigatório): Consulta de pesquisa
  • language (opcional): Filtrar por linguagem (ex.: "go", "typescript")

Exemplo:

Search for "goroutines" in Go documentation

open-context_get_docs

Obtenha documentação detalhada para um tópico específico.

Parâmetros:

  • id (opcional): ID do tópico dos resultados da pesquisa
  • language (opcional): Linguagem de programação
  • topic (opcional): Nome do tópico (alternativa ao ID)

Exemplo:

Get documentation for topic "basics" in Go

open-context_list_docs

Liste todas as linguagens e tópicos de documentação disponíveis.

Exemplo:

List all available documentation

open-context_get_go_info

Busque informações de versão do Go ou documentação de pacotes.

Parâmetros:

  • type (obrigatório): "version" ou "library"
  • version (condicional): Versão do Go (ex.: "1.21") para versões, ou versão da biblioteca
  • importPath (condicional): Caminho de importação (ex.: "github.com/gin-gonic/gin") para bibliotecas

Exemplos:

Get information about Go version 1.21
Get information about github.com/gin-gonic/gin
Get information about github.com/spf13/cobra version v1.8.0

Fontes:

  • Versões: notas de versão do go.dev
  • Bibliotecas: documentação de pacotes do pkg.go.dev

Veja GO_VERSION_LIBRARY_FEATURE.md para detalhes.

open-context_get_npm_info

Busque informações de pacotes npm.

Parâmetros:

  • packageName (obrigatório): Nome do pacote (ex.: "express", "react")

Fonte: registro npm

open-context_get_python_info

Busque informações de pacotes Python do PyPI.

Parâmetros:

  • packageName (obrigatório): Nome do pacote (ex.: "requests", "django", "numpy")
  • version (opcional): Versão específica (padrão: mais recente)

Fonte: PyPI (Python Package Index)

open-context_get_rust_info

Busque informações de crates Rust do crates.io.

Parâmetros:

  • crateName (obrigatório): Nome do crate (ex.: "serde", "tokio", "actix-web")
  • version (opcional): Versão específica (padrão: mais recente)

Fonte: crates.io

open-context_get_node_info

Busque informações de versão do Node.js.

Parâmetros:

  • version (obrigatório): Versão do Node.js (ex.: "20.0.0")

Fonte: GitHub releases

open-context_get_typescript_info

Busque informações de versão do TypeScript.

Parâmetros:

  • version (obrigatório): Versão do TypeScript (ex.: "5.0.0")

Fonte: GitHub releases

open-context_get_react_info

Busque informações de versão do React.

Parâmetros:

  • version (obrigatório): Versão do React (ex.: "18.0.0")

Fonte: GitHub releases

open-context_get_nextjs_info

Busque informações de versão do Next.js.

Parâmetros:

  • version (obrigatório): Versão do Next.js (ex.: "14.0.0")

Fonte: GitHub releases

open-context_get_ansible_info

Busque informações de versão do Ansible.

Parâmetros:

  • version (obrigatório): Versão do Ansible (ex.: "2.15.0")

Fonte: GitHub releases

open-context_get_terraform_info

Busque informações de versão do Terraform.

Parâmetros:

  • version (obrigatório): Versão do Terraform (ex.: "1.6.0")

Fonte: GitHub releases

open-context_get_jenkins_info

Busque informações de versão do Jenkins.

Parâmetros:

  • version (obrigatório): Versão do Jenkins (ex.: "2.420")

Fonte: GitHub releases

open-context_get_kubernetes_info

Busque informações de versão do Kubernetes.

Parâmetros:

  • version (obrigatório): Versão do Kubernetes (ex.: "1.28.0")

Fonte: GitHub releases

open-context_get_helm_info

Busque informações de versão do Helm.

Parâmetros:

  • version (obrigatório): Versão do Helm (ex.: "3.13.0")

Fonte: GitHub releases

open-context_get_docker_image

Busque informações de imagem Docker do Docker Hub.

Parâmetros:

  • image (obrigatório): Nome da imagem (ex.: "golang", "nginx", "myuser/myapp")
  • tag (obrigatório): Tag da imagem (ex.: "1.25-alpine", "latest")

Exemplo:

Get Docker image golang:1.25-alpine

Fonte: API do Docker Hub

open-context_get_github_action

Busque informações de GitHub Action da API do GitHub.

Parâmetros:

  • repository (obrigatório): Repositório GitHub no formato "owner/repo" (ex.: "actions/checkout", "docker/setup-buildx-action")
  • version (opcional): Versão/tag específica da action (padrão: release mais recente)

Exemplo:

Get GitHub Action actions/checkout
Get GitHub Action docker/setup-buildx-action with version v2.10.0

Fonte: API do GitHub


Roadmap

  • Busca de pacotes Go do pkg.go.dev
  • Transporte HTTP para servidores remotos
  • Buscadores de versão para ferramentas principais
  • Pacotes Python (PyPI)
  • Crates Rust (crates.io)
  • Documentação específica por versão
  • Interface web para navegar na documentação

Contribuindo

Contribuições são bem-vindas! Áreas onde você pode ajudar:

  • Adicionar novos fetchers de linguagem/framework
  • Melhorar a documentação
  • Adicionar cobertura de testes
  • Reportar bugs ou sugerir funcionalidades
  • Compartilhar seus casos de uso

Testes

Consulte TESTING.md para o guia completo de testes.

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes.

Agradecimentos

Inspirado por context7 da Upstash.


Perguntas? Abra uma issue no GitHub