
Construindo um Servidor MCP com Common Lisp
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:
- Use
openrpc-server:define-apipara definir sua API - Use
40ants-mcp/tools:define-toolpara definir ferramentas - Retorne instâncias de
text-contentpara 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
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

Agentes de IA Escolhem Ferramentas de Forma Aleatória
O artigo discute a implementação do XAIP, um sistema de pontuação de confiança para servidores MCP, que melhora a seleção de ferramentas por agentes de IA, reduzindo chamadas desnecessárias.

MCPNest - Criei um marketplace de servidores MCP em 7 dias.
Um engenheiro de plataforma criou o MCPNest, um marketplace para servidores MCP, em apenas 7 dias, com mais de 7.500 servidores indexados e várias funcionalidades inovadoras.

MCP em Escala: Controle de Acesso, Governança de Custos e Redução de 92% nos Custos de Tokens
O artigo discute os custos de tokens em integrações MCP em larga escala e apresenta a abordagem do Bifrost para otimizar o uso de tokens e implementar controle de acesso eficaz.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.