Voltar as noticias
Construindo um Servidor MCP com Common Lisp
MCP ProtocolMediaEN

Construindo um Servidor MCP com Common Lisp

Dev.to - MCP·10 de abril de 2026

Recentemente, eu queria aprender sobre MCP (Modelo de Protocolo de Contexto). Como alguém cujo idioma de programação padrão é Common Lisp, decidi naturalmente construir um servidor MCP usando Lisp.

Graças aos criadores do 40ants-mcp, a biblioteca fornece um padrão e uma estrutura de código que eu realmente gosto. No entanto, eu lutei significativamente com a instalação e o início. O que deveria ter levado minutos acabou levando dias.

Estou compartilhando minha experiência aqui para que outros que desejam construir servidores MCP em Common Lisp possam começar em minutos, não em dias como eu fiz.

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte instalado:

  • SBCL - Um compilador de Common Lisp de alto desempenho
  • Roswell - Um gerenciador de implementação de Common Lisp e executor de scripts
  • Quicklisp - O gerenciador de pacotes de fato para Common Lisp
  • Ultralisp - Uma distribuição de bibliotecas de Common Lisp orientada pela comunidade

Instalando Ultralisp

No SBCL com Quicklisp, você pode habilitar o Ultralisp fazendo:

(ql-dist:install-dist "http://dist.ultralisp.org/" :prompt nil)

(Como instalar SBCL e Quicklisp está no apêndice.)

O Problema: Carregando 40ants-mcp

Este é o problema que me custou dias: quando você tenta carregar 40ants-mcp com:

(ql:quickload :40ants-mcp)

Você pode encontrar erros. A solução é simples, mas não óbvia—carregue jsonrpc primeiro:

(ql:quickload :jsonrpc)
(ql:quickload :40ants-mcp)

Essa dependência não é resolvida automaticamente, o que foi a fonte da minha frustração.

Criando Seu Servidor MCP

Aqui está um exemplo mínimo do meu pacote mcp-exper:

(in-package :mcp-exper)

(openrpc-server:define-api (mi-tools :title "mi-tools"))

(40ants-mcp/tools:define-tool (mi-tools add) (a b)
  (:summary "apenas adicione")
  (:param a integer "a")
  (:param b integer "b")
  (:result text-content)
  (make-instance 'text-content :text (format nil "~a" (+ a b))))

(defun start-server ()
  (40ants-mcp/server/definition:start-server mi-tools))

Pontos-chave:

  1. Use openrpc-server:define-api para definir sua API
  2. Use 40ants-mcp/tools:define-tool para definir ferramentas
  3. Retorne instâncias de text-content para resultados de texto (MCP requer tipos de conteúdo específicos)

Executando o Servidor

Crie um script Roswell (mi-mcp-server.ros):

#!/bin/sh
#|-*- mode:lisp -*-|#
exec ros -Q -- $0 "$@"
|#
(progn
  (ros:ensure-asdf)
  #+quicklisp(ql:quickload '(:mcp-exper) :silent t))

(defun main (&rest argv)
  (declare (ignorable argv))
  (mcp-exper:start-server))

Teste Rápido

Execute diretamente com Roswell:

ros mi-mcp-server.ros

Instalação em Produção

Construa e instale como um executável:

ros build mi-mcp-server.ros
install -m 0755 mi-mcp-server $HOME/.local/bin/

Certifique-se de que $HOME/.local/bin esteja no seu PATH.

Integrando com Opencode

Para habilitar seu servidor MCP no opencode, adicione isso ao ~/.config/opencode/opencode.json:

{
    "mcp": {
        "mi-tools": {
            "type": "local",
            "command": ["mi-mcp-server"],
            "enabled": true
        
Contexto Triplo Up

O desenvolvimento de servidores MCP pode ser relevante para empresas que buscam integrar protocolos de contexto em suas aplicações. A experiência compartilhada pode ajudar profissionais a evitar erros comuns e acelerar o processo de implementação. Isso pode facilitar a adoção de novas tecnologias em ambientes corporativos.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.