godoc-mcp-server

Servidor MCP para fornecer pacotes golang e suas informações do pkg.go.dev

Documentação

godoc-mcp-server

Busca pacotes Go e suas documentações em pkg.go.dev, fornecendo as informações para o LLM como um servidor MCP

Instalação

Você pode baixar o binário compilado na página de releases.

Ou você pode instalá-lo a partir do código-fonte, compilando você mesmo:

go install github.com/yikakia/godoc-mcp-server/cmd/godoc-mcp-server@latest

Uso

Basta usar seu cliente para fazer a requisição. Ele opera via stdio

Todo

  • localCache
    • usar um cache local para evitar pesquisar toda vez (de usuário do reddit)
  • searchPackage
    • importado por quantos pacotes
  • getPackageInfo
    • fixme: subpacote precisa de novo adaptador
    • obter exemplos
  • release
    • usar github actions para publicar para múltiplas plataformas

Experiência de Desenvolvimento

A descrição é muito importante; ao descrever o parâmetro, deve-se informar ao cliente como usar a saída de uma ferramenta e alterar o formato para corresponder à entrada de outra ferramenta.

Por exemplo, a saída de searchPackage contém o nome do subpacote, mas não contém o nome do pacote. Então, se quiser que o LLM use getPackageInfo para obter as informações do subpacote, escrevi a descrição para o parâmetro packageName sobre como usá-lo em conjunto com searchPackage:

nome do pacote para pesquisa. se você usou searchPackages antes, e o usuário quiser obter as informações do subpacote, você deve concatená-los. por exemplo, quando o usuário consultar mcp, e ele retornar packageName: github.com/mark3labs/mcp-go/mcp e subpacote client, então se o usuário quiser obter as informações do pacote client, você deve definir o packageName para github.com/mark3labs/mcp-go/mcp/client em vez de client

Ao usar essa descrição detalhada, o LLM informará alguns nomes de subpacotes após a pesquisa. Você pode simplesmente dizer a ele qual pacote deseja obter as informações, ou qual pacote e o nome do subpacote; ele combinará ambos e chamará getPackageInfo para obter as informações.

Então talvez devêssemos tornar a descrição configurável pelo usuário, para tornar a ferramenta mais útil e eficiente.

Uso como Biblioteca

A API Go exportada deste módulo deve atualmente ser considerada instável e sujeita a mudanças que quebram compatibilidade. No futuro, podemos oferecer estabilidade; por favor, abra uma issue se houver um caso de uso em que isso seria valioso.

Licença

Este projeto está licenciado sob os termos da licença de código aberto MIT. Consulte MIT para os termos completos.