MCP 与 LSP

OpenCode 通过 MCP(Model Context Protocol) 扩展外部工具,通过 LSP(Language Server Protocol) 获取实时语言诊断。


MCP 概述

MCP 让 Agent 调用数据库、浏览器、Slack、自定义 API 等,而无需把逻辑写进 OpenCode 本体。

配置位置:

  • 全局:~/.config/opencode/opencode.jsonmcp 字段
  • 项目:项目根 opencode.json

配置 MCP Server

stdio 本地进程

{
  "mcp": {
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed"]
    }
  }
}

SSE / HTTP 远程服务

{
  "mcp": {
    "my-api": {
      "type": "sse",
      "url": "https://mcp.example.com/sse"
    }
  }
}

TUI 中可用 /connect 交互式添加 Provider;MCP 通常在配置文件中维护。


MCP 与权限

MCP 工具名通常带 server 前缀。可在 permission 中控制:

{
  "permission": {
    "mcp": {
      "*": "ask",
      "filesystem_*": "allow"
    }
  }
}

安全建议:

  • 只启用项目需要的 MCP
  • 对写操作、网络 MCP 默认 ask
  • 审查 MCP Server 源码与权限范围

常用 MCP 场景

场景MCP 示例
文档检索内部 wiki / Notion MCP
数据库Postgres MCP(只读账号)
浏览器Playwright / Puppeteer MCP
设计稿Figma MCP

Explore Subagent + MCP 只读查询,可避免 Build 误改生产数据。


LSP 集成

OpenCode 可连接语言服务器,在编辑后获取 diagnostics(错误、警告),供 Agent 自我修正。

启用

opencode.json

{
  "lsp": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"]
    },
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"]
    }
  }
}

需本机已安装对应 LSP 二进制。

与 Agent 的配合

  1. Agent 修改 foo.ts
  2. LSP 返回 type error
  3. Agent 读取 diagnostic 继续修复

这比纯靠模型「猜」类型错误更可靠。

LSP 权限

permission.lsp 控制是否允许调用 LSP 工具,默认通常为 allow


MCP vs LSP

MCPLSP
协议Model Context ProtocolLanguage Server Protocol
典型用途外部系统、浏览器、DB语言诊断、补全
配置mcplsp
谁提供社区/自建 Server语言官方/社区 LSP

两者可同时启用,互补而非替代。


故障排查

现象检查
MCP 工具不出现JSON 语法、type/command 是否正确
MCP 启动失败终端手动跑 command+args
LSP 无诊断which typescript-language-server、项目是否有 tsconfig
权限一直弹窗将常用只读 MCP 设为 allow

下一步