找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5418

积分

0

好友

747

主题
发表于 1 小时前 | 查看: 3| 回复: 0

Gopls 内置了一个实验性的 Model Context Protocol (MCP) 服务器,允许它将自身的部分功能以 MCP 工具的形式暴露给 AI 助手使用。

一、如何运行 MCP 服务

Gopls 的 MCP 服务提供两种运行模式:附加模式 (Attached)独立模式 (Detached)

Gopls MCP服务器两种运行模式流程图

附加模式 (Attached Mode)

MCP Server 会接入你当前的 gopls 会话,并共享内存数据。在此模式下,MCP 能够看到你当前正在编辑、还没来得及保存的内容。如果你在 IDE 中编辑 Go 代码,并希望 AI 能够实时理解当前修改,可以选择此模式。

启动命令:使用 -mcp.listen 参数启动 gopls MCP

gopls serve -mcp.listen=localhost:8092

此命令将启动一个基于 HTTP 的 MCP 服务器,采用 SSE 传输协议。服务默认可在 http://localhost:8092/sessions/1 访问(如果 gopls 实例上只有一个会话的话)。

独立模式 (Detached Mode)

gopls 单独在后台运行,MCP Server 与 gopls 会话的当前内存数据没有接触。它只能读取已经保存到硬盘上的文件,看不到你修改后还没保存的部分。如果你希望 AI 对项目进行整体分析,或者处理已经提交的代码,推荐选择此模式。

启动命令:使用 -mcp 参数启动 gopls MCP

gopls mcp

此命令将运行一个独立的 gopls 实例,通过标准输入 (stdin) 和标准输出 (stdout) 提供 MCP 服务。

二、gopls 输出喂给模型的指令描述

gopls MCP Server 内置了一套用于 AI 模型调用的使用说明,描述了如何利用它提供的各种工具来操作 Go 代码。MCP 服务在初始化时会自动发布并通知,但如果你想自己了解,或者在手动 AI 中额外提供上下文加载,可以通过下面的命令导出其指令描述。

gopls mcp -instructions > /path/to/contextFile.md

终端运行gopls mcp -instructions命令导出上下文文件

三、gopls MCP Server 安全注意事项

gopls MCP Server 本质上是对 gopls 常规功能(通过 LSP 暴露)的一个封装。因此,gopls 的工具原本能够做什么,通过 MCP Server 调用也可以执行它正常情况下能做的任何操作,包括:

  • 从文件系统中读取文件,并把文件内容返回到工具结果中(比如在提供上下文的时候);
  • 执行 go 命令来加载包信息,这可能会导致调用 https://proxy.golang.org 下载 Go 模块,并且会写入 Go 的缓存;
  • 写入 gopls 的缓存或持久化配置文件;
  • 如果你已经开启了 Go 的遥测功能,会上传每周的遥测数据。

gopls MCP Server 不会执行任何在普通 IDE 会话中 gopls 原本不会执行的操作。和大多数 LSP Server 一样,gopls 通常不会直接修改你的源代码目录,但它会指示客户端进行编辑操作;同时它也不会随意发起网络请求,但它会向特定服务发起范围很窄的请求,比如 Go 模块镜像或 Go 漏洞数据库。因此,当通过 MCP Server 进行调用时,这些方面同样需要多加留意。

Gopls 的 MCP 支持是一个强大的实验性功能,它通过标准化的协议让 AI 助手能够深度理解和操作 Go 代码。主要价值在于:

  • 两种模式:我们可以根据需要选择是否让 AI 感知未保存的编辑。
  • 安全可控:其操作范围与标准 gopls LSP 服务器一致,不会带来额外的安全风险。
  • 专为 AI 优化:提供专门的指令上下文,帮助 AI 助手更有效地使用 Go 开发工具。

想了解更多 Go 开发工具与 AI 集成的实践?欢迎访问 云栈社区

https://go.dev/gopls/features/mcp




上一篇:Go周报2026-17:标准库UUID提案通过,TinyGo 0.41发布,Gopls支持MCP
下一篇:Go 加密函数性能优化:逃逸分析让函数提速20%
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-27 19:44 , Processed in 0.973655 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表