Como criar um servidor MCP rápido com Python

Última atualização: 14/06/2025

Neste guia, vamos criar um servidor FastMCP simples em Python. Ele terá uma ferramenta que envia um ping a um servidor para verificar se está ativo e respondendo.

Preparando o ambiente ​

Estou criando este servidor MCP com FastMCP no Linux, mas ele também deve funcionar no Windows e no macOS. Para começar, instale o Python 3.8 ou posterior. Confira a versão e crie o ambiente:

bash
uv init mcp
uv venv
source .venv/bin/activate
uv pip install fastmcp[streamable-http]

Criando o servidor MCP ​

Substitua o conteúdo de mcp/main.py no diretório do projeto pelo código a seguir:

python
import subprocess
import os
import re
from fastmcp import FastMCP

mcp = FastMCP("hello_world", stateless_http=True)

@mcp.tool()
async def ping_server(host: str) -> str:
    """Ping the server to check whether it's running and responding to pings.
    Args:
        host (str): The DNS or host address of the server.
    Returns:
        str: A message indicating the server status.
    """
    # Do a shell command with ping to check if the server is running
    try:
        # Make sure to sanitize host input to avoid command injection
        if not host:
            return "Host is required!"
        if not isinstance(host, str):
            return "Host must be a string!"
        if re.match(r'^[a-zA-Z0-9.-]+$', host) is None:
            return "Invalid host format! Please provide a valid DNS or IP address."

        # Execute the ping command
        # Note: The ping command syntax differs between Windows and Unix-like systems

        # This example will work on Unix-like systems (Linux, macOS)
        is_windows = os.name == 'nt'
        if is_windows:
            output = subprocess.check_output(["ping", "-n", "1", host], stderr=subprocess.STDOUT)
        else:
            output = subprocess.check_output(["ping", "-c", "1", host], stderr=subprocess.STDOUT)

        return "Server is running!"
    except subprocess.CalledProcessError:
        return "Server is not reachable!"


if __name__ == "__main__":
    # Initialize and run the server
    mcp.run(transport='streamable-http', port=7001, path="/mcp/")

Inicie o servidor MCP com:

bash
uv run mcp/main.py

Agora, no VS Code, adicione o servidor MCP ao workspace. Clique em Add MCP Server no canto inferior esquerdo da janela ou abra a paleta de comandos (Ctrl+Shift+P ou Cmd+Shift+P no macOS) e digite Add MCP Server.

Quando o VS Code solicitar o endereço do servidor, informe http://localhost:7001/mcp/ e clique em Add. O servidor MCP será adicionado ao workspace.

Você também pode adicionar o servidor manualmente editando o arquivo .vscode/mcp.json do workspace. Inclua esta entrada na lista servers:

json
{
    "servers": {
        "MyServerMCP": {
            "type": "http",
            "url": "http://localhost:7001/mcp/"
        }
    }
}

Ao abrir .vscode/mcp.json, você verá uma configuração semelhante a esta, com botões para iniciar ou parar o servidor:

Iniciando ou parando o servidor MCP no VS Code

Testando o servidor MCP ​

Abra a janela de Chat, selecione Agent (atualmente abaixo da janela de Chat) e pergunte ao agente se o servidor está ativo. Confira o resultado:

Janela de Chat do VS Code com resposta positiva

Conclusão ​

Neste guia, criamos um servidor FastMCP simples em Python com uma ferramenta para enviar ping a um servidor e verificar seu estado. Você pode ampliar o servidor com outras ferramentas e funcionalidades. O FastMCP facilita a criação e a implantação de servidores MCP.