Cryptocurrency Price Service

Fornece informações de preço de criptomoedas em tempo real usando a API do CoinMarketCap.

Documentação

MseeP.ai Security Assessment Badge

Servidor MCP em Python - Cryptocurrency Price Service

Este projeto implementa um servidor MCP (Model Context Protocol) que fornece informações de preços de criptomoedas. O servidor é construído usando Python e o framework MCP para criar uma API que pode ser consumida por diferentes clientes.

Docker

Docker build: docker build -t mcp/python-server-mcp -f Dockerfile .

Adicione o seguinte ao seu arquivo mcp.json:

{
  "mcpServers": {
    "python-server-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "8000:8000",
        "-e",
        "ENVIRONMENT",
        "-e",
        "COINMARKETCAP_API_KEY",
        "mcp/python-server-mcp"
      ],
      "env": {
        "ENVIRONMENT": "PRODUCTION",
        "COINMARKETCAP_API_KEY": "your-api-key",
      }
    }
  }
}

Funcionalidades

  • Recuperação de preços de criptomoedas em tempo real
  • Configuração baseada em ambiente (desenvolvimento, produção, staging, local)
  • Integração com a API CoinMarketCap
  • Implantação em contêiner Docker

Requisitos

  • Python 3.12+
  • uv (gerenciador de pacotes e ambiente virtual)
  • Docker (opcional, para execução em contêiner)

Instalação

Usando uv (recomendado)

# Clone the repository
git clone <repository-url>
cd PythonServerMcp

Criar e ativar ambiente virtual com uv

uv venv
source .venv/bin/activate

Instalar dependências

uv sync

Configuração

  1. Crie um arquivo .env na raiz do projeto com as seguintes variáveis:
ENVIRONMENT=DEV  # Options: LOCAL, DEV, STAGING, PROD
COINMARKETCAP_API_KEY=your_api_key_here
  1. Você também pode criar arquivos de ambiente específicos para cada ambiente:
    • .dev.env - Para ambiente de desenvolvimento
    • .staging.env - Para ambiente de staging
    • .prod.env - Para ambiente de produção

Uso

Execução Local

python main.py

Isso iniciará o servidor MCP que escutará solicitações através da entrada/saída padrão (stdio).

Usando Docker

# Build the image
docker build -t test-mcp -f Dockerfile --platform linux/amd64 .

# Run the container
docker run -it test-mcp

Estrutura do Projeto

.
├── main.py
└── src
    ├── __init__.py
    ├── core
    │   ├── common
    │   │   ├── crypto_schema.py
    │   │   └── schema.py
    │   ├── config.py
    │   ├── settings
    │   │   ├── __init__.py
    │   │   ├── base.py
    │   │   ├── development.py
    │   │   ├── environment.py
    │   │   ├── local.py
    │   │   ├── production.py
    │   │   └── staging.py
    │   └── utils
    │       ├── datetime.py
    │       ├── extended_enum.py
    │       ├── filename_generator.py
    │       ├── passwords.py
    │       ├── query_utils.py
    │       └── redis.py
    ├── mcp_server.py
    ├── resources
    │   ├── __init__.py
    │   └── coinmarketcap_resource.py
    ├── server.py
    ├── services
    │   ├── __init__.py
    │   └── coinmarketcap_service.py
    └── tools
        ├── __init__.py
        └── prices.py

Desenvolvimento

Adicionando Novas Ferramentas ao Servidor MCP

Para adicionar uma nova ferramenta ao servidor MCP, siga estes passos:

  1. Defina a função no arquivo src/__init__.py
  2. Registre a ferramenta na função main()
  3. Documente a ferramenta com docstrings

Exemplo:

@server.add_tool
def my_new_tool(parameter1: str, parameter2: int) -> str:
    """
    Description of what the tool does.
    
    Args:
        parameter1: Description of parameter 1
        parameter2: Description of parameter 2
        
    Returns:
        Description of what is returned
    """
    # Tool implementation
    return result