ServeMyAPI

Um servidor pessoal para armazenar e acessar chaves de API de forma segura usando o Keychain do macOS.

Documentação

ServeMyAPI

smithery badge

Um servidor MCP (Model Context Protocol) pessoal para armazenar e acessar chaves de API com segurança em vários projetos usando o Keychain do macOS.

🔒 SEGURANÇA EM PRIMEIRO LUGAR: O ServeMyAPI foi projetado para rodar LOCALMENTE na sua máquina. As chaves de API NUNCA são transmitidas pela internet e NUNCA devem ser implantadas em serviços de nuvem. Leia as diretrizes críticas de segurança antes de usar.

Suporte Multiplataforma: O ServeMyAPI agora inclui uma camada de abstração de armazenamento que permite suporte a múltiplas plataformas:

  • macOS: Usa o Keychain nativo (padrão)
  • Windows/Linux: Usa armazenamento de arquivos criptografados
  • Docker: Usa automaticamente armazenamento de arquivos criptografados
  • Memória: Disponível para testes e armazenamento temporário

Visão Geral

O ServeMyAPI permite armazenar chaves de API com segurança no Keychain do macOS e acessá-las por meio de uma interface MCP consistente. Isso facilita:

  • Armazenar chaves de API com segurança (elas nunca ficam visíveis em arquivos .env ou de configuração)
  • Acessar as mesmas chaves em vários projetos
  • Usar linguagem natural para armazenar e recuperar chaves (quando usado com LLMs como Claude)
  • Fornecer chaves diretamente ao seu assistente de IA quando ele precisar acessar serviços

Por que usar o ServeMyAPI em vez de arquivos .ENV?

Usar o ServeMyAPI em vez de arquivos .ENV tradicionais resolve vários problemas comuns:

  1. Conflitos de Segurança com o GitHub:

    • Arquivos .ENV precisam ser excluídos dos repositórios Git por segurança (via .gitignore)
    • Isso cria um problema de "contexto oculto", onde configurações importantes ficam invisíveis para colaboradores e LLMs
    • Novos desenvolvedores frequentemente têm dificuldade em configurar as variáveis de ambiente corretas
  2. Desafios de Integração com LLMs:

    • LLMs como o Claude não conseguem acessar diretamente seus arquivos .ENV devido a restrições de segurança
    • Quando LLMs precisam de chaves de API para concluir tarefas, muitas vezes são necessários workarounds manuais
    • O ServeMyAPI permite que seu assistente de IA solicite chaves por meio de linguagem natural
  3. Consistência entre Projetos:

    • Com arquivos .ENV, normalmente é necessário duplicar chaves de API em vários projetos
    • Quando as chaves mudam, é preciso atualizar vários arquivos
    • O ServeMyAPI fornece um local de armazenamento central acessível a partir de qualquer projeto

Essa abordagem oferece o melhor dos dois mundos: armazenamento seguro de credenciais sensíveis sem sacrificar a visibilidade e a acessibilidade para suas ferramentas de IA.

Recursos

  • Armazenamento seguro de chaves de API no Keychain do macOS
  • Ferramentas MCP simples para armazenar, recuperar, listar e excluir chaves
  • Interface CLI conveniente para gerenciamento de chaves no terminal
  • Suporte para transportes stdio e HTTP/SSE (com autenticação)
  • Compatível com qualquer cliente MCP (Claude Desktop, etc.)
  • Recursos de Segurança Aprimorados:
    • Validação de entrada para prevenir ataques de path traversal
    • Armazenamento de arquivos criptografados para implantações Docker
    • Autenticação por token Bearer para endpoints HTTP
    • Limitação de taxa e gerenciamento de sessão
    • Cabeçalhos de segurança e proteção CORS
    • Registro seguro com redação automática de dados sensíveis

Instalação

# Clone the repository
git clone https://github.com/yourusername/servemyapi.git
cd servemyapi

# Install dependencies
npm install

# Build the project
npm run build

Uso

Interface CLI

O ServeMyAPI vem com uma interface de linha de comando para gerenciamento rápido de chaves diretamente do seu terminal:

# Install the CLI globally
npm run build
npm link

# List all stored API keys
api-key list

# Get a specific API key
api-key get github_token

# Store a new API key
api-key store github_token ghp_123456789abcdefg

# Delete an API key
api-key delete github_token

# Display help
api-key help

Executando como servidor stdio

Esta é a maneira mais simples de usar o ServeMyAPI como servidor MCP, especialmente ao trabalhar com o Claude Desktop:

npm start

Executando como servidor HTTP

Para aplicações que exigem acesso HTTP:

node dist/server.js

Isso iniciará o servidor na porta 3000 (ou na porta especificada na variável de ambiente PORT).

⚠️ AVISO IMPORTANTE DE SEGURANÇA

NÃO USE A VERSÃO HOSPEDADA NO SMITHERY para armazenar chaves de API reais. A implantação no Smithery existe apenas para fins de demonstração. Usá-la iria:

  1. Transmitir suas chaves de API pela internet (mesmo com HTTPS, isso viola o princípio de manter as chaves locais)
  2. Armazenar suas chaves no servidor de outra pessoa (a infraestrutura do Smithery)
  3. Potencialmente expor suas chaves ao operador do serviço ou em caso de violação

O ServeMyAPI foi projetado para rodar LOCALMENTE na sua máquina apenas. Todo o modelo de segurança depende de as chaves nunca saírem do seu ambiente local.

Configurando Clientes MCP

O ServeMyAPI funciona com qualquer cliente compatível com MCP. Arquivos de configuração de exemplo são fornecidos no diretório examples.

Claude Desktop

Para usar o ServeMyAPI com o Claude Desktop:

  1. Localize ou crie o arquivo de configuração do Claude Desktop:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %AppData%\Claude\claude_desktop_config.json
  2. Adicione o ServeMyAPI à seção mcpServers (você pode copiar de examples/claude_desktop_config.json):

    {
      "mcpServers": {
        "serveMyAPI": {
          "command": "node",
          "args": [
            "/ABSOLUTE/PATH/TO/servemyapi/dist/index.js"
          ]
        }
      }
    }
    
  3. Substitua /ABSOLUTE/PATH/TO/servemyapi pelo caminho real da sua instalação do ServeMyAPI.

  4. Reinicie o Claude Desktop.

Windsurf

Para usar o ServeMyAPI com o Windsurf:

  1. Abra o editor Windsurf e navegue até as Configurações
  2. Adicione o ServeMyAPI à sua configuração de servidor MCP usando o exemplo em examples/windsurf_config.json
  3. Adapte os caminhos para a sua instalação local

Ferramentas MCP

O ServeMyAPI expõe as seguintes ferramentas:

store-api-key

Armazena uma chave de API no keychain.

Parâmetros:

  • name: O nome/identificador da chave de API
  • key: A chave de API a ser armazenada

Exemplo (do Claude):

Using serveMyAPI, store my API key ABC123XYZ as "OpenAI API Key"

get-api-key

Recupera uma chave de API do keychain.

Parâmetros:

  • name: O nome/identificador da chave de API a ser recuperada

Exemplo (do Claude):

Using serveMyAPI, get the API key named "OpenAI API Key"

delete-api-key

Exclui uma chave de API do keychain.

Parâmetros:

  • name: O nome/identificador da chave de API a ser excluída

Exemplo (do Claude):

Using serveMyAPI, delete the API key named "OpenAI API Key"

list-api-keys

Lista todas as chaves de API armazenadas.

Nenhum parâmetro necessário.

Exemplo (do Claude):

Using serveMyAPI, list all my stored API keys

Opções de Armazenamento

O ServeMyAPI seleciona automaticamente o melhor provedor de armazenamento para sua plataforma:

Detecção de Plataforma

  • macOS: Keychain (padrão)
  • Windows: Armazenamento de arquivos criptografados
  • Linux: Armazenamento de arquivos criptografados
  • Docker: Armazenamento de arquivos criptografados

Configuração Manual

Você pode substituir a detecção automática:

# Force a specific storage type
export SERVEMYAPI_STORAGE_TYPE=file  # or 'keychain', 'memory'

# Configure file storage location
export STORAGE_DIR=/path/to/secure/directory

Tipos de Armazenamento

  1. Armazenamento em Keychain (somente macOS)

    • Segurança nativa do nível do sistema operacional
    • Nenhuma criptografia necessária
    • Requer permissão do usuário no primeiro uso
  2. Armazenamento em Arquivo (multiplataforma)

    • Criptografia AES-256-GCM
    • Derivação de chave PBKDF2
    • Armazena em ~/.servemyapi/keys.json.enc por padrão
    • Requer a variável de ambiente ENCRYPTION_KEY
  3. Armazenamento em Memória (testes)

    • Somente em memória
    • Dados perdidos ao reiniciar
    • Útil para testes e desenvolvimento

Segurança

Recursos Principais de Segurança

  • Armazenamento Ciente da Plataforma: Seleciona automaticamente armazenamento seguro para cada plataforma
  • Armazenamento no Keychain do macOS: As chaves de API são armazenadas no Keychain do macOS com segurança nativa do nível do sistema operacional
  • Armazenamento de Arquivos Criptografados: Suporte multiplataforma com criptografia AES-256-GCM
  • Criptografia Docker: Ao rodar em Docker, as chaves são criptografadas usando AES-256-GCM com derivação de chave PBKDF2
  • Autenticação: Endpoints HTTP/SSE exigem autenticação por token Bearer
  • Validação de Entrada: Validação rigorosa previne ataques de path traversal e injeção
  • Limitação de Taxa: Protege contra abuso com limites de requisições configuráveis
  • Registro Seguro: Redação automática de dados sensíveis em todas as saídas de log

Segurança do Servidor HTTP

Ao usar o transporte HTTP/SSE:

# Set authentication key
export SERVEAPI_AUTH_KEY="your-secure-api-key"

# Set encryption key for Docker
export ENCRYPTION_KEY="your-encryption-key"

# Configure CORS origins
export ALLOWED_ORIGINS="https://app1.com,https://app2.com"

Inclua o token Bearer nas requisições:

Authorization: Bearer your-secure-api-key

Melhores Práticas

  1. Sempre use HTTPS em produção - Implante atrás de um proxy reverso com TLS
  2. Defina chaves de autenticação fortes - Use openssl rand -base64 32 para gerar
  3. Execute como não-root - A imagem Docker usa automaticamente um usuário restrito
  4. Rotação regular de chaves - Atualize periodicamente suas chaves de autenticação e criptografia
  5. Monitore logs de acesso - Observe padrões suspeitos ou tentativas não autorizadas

Para configuração detalhada de segurança, consulte docs/SECURITY.md.

Roadmap

Os planos futuros para o ServeMyAPI incluem:

  • Ferramenta de Scanner de Código: Uma ferramenta que escaneia automaticamente seu código em busca de endpoints de API, URLs sensíveis e variáveis de ambiente, e então sugere nomes para armazená-los no Keychain. Isso permitiria que desenvolvedores continuassem usando arquivos .ENV em seu fluxo de trabalho regular, garantindo que as credenciais também estejam disponíveis para LLMs e outras ferramentas quando necessário.

  • Suporte Multiplataforma: Investigando opções seguras de armazenamento de credenciais para Windows e Linux para tornar o ServeMyAPI mais amplamente acessível.

  • Integração com Frameworks Populares: Fornecendo integração fácil com frameworks como Next.js, Express e outros.

  • Interface para Gerenciamento de Chaves: Uma interface web simples para gerenciar suas chaves de API armazenadas diretamente.

Sinta-se à vontade para sugerir recursos adicionais ou contribuir com o roadmap abrindo uma issue ou pull request.

Desenvolvimento

# Run in development mode with hot reload
npm run dev

# Use the CLI during development
npm run cli list

# Lint the code
npm run lint

# Build for production
npm run build

Licença

MIT