
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 Não Substituem APIs. Eles Exponham Como a Maioria das APIs Já é Frágil
O artigo discute como agentes de IA não substituem APIs, mas revelam suas fragilidades. Destaca a importância de um design de API robusto que suporte a orquestração probabilística introduzida pelos agentes.

kioku-mesh: memória compartilhada de longo prazo para agentes de IA
O kioku-mesh permite que agentes de IA compartilhem memória de longo prazo entre PCs, facilitando o trabalho colaborativo e a continuidade de projetos. Ideal para equipes que utilizam múltiplas máquinas.

Supercarregando o desenvolvimento do Adobe Commerce: introduzindo o servidor adobe-commerce-docs-mcp
O servidor adobe-commerce-docs-mcp conecta seu IDE à documentação oficial do Adobe, melhorando a eficiência no desenvolvimento do Adobe Commerce e Magento 2.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.