语言服务器协议桥接工具

Codex LSP Bridge 是一款将语言服务器协议(LSP)功能暴露为MCP工具的技术服务,为Codex CLI提供IDE级的语义导航功能,支持多种编程语言。

  • by CesarPetrescu
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 CesarPetrescu/lsp-mcp

使用说明

Codex LSP网桥(MCP)

给Codex CLI IDE级语义导航 通过将语言服务器协议(LSP)功能作为MCP工具公开。

你得到了什么

  • 转到定义 / 类型定义 / 查找引用
  • 悬停 / 签名帮助 / 调用层次
  • 文件符号 / 工作空间符号
  • 代码操作 (自动修复/重构)/ 格式化文档
  • 作品横跨 Python、Rust、C/C++、TypeScript/JavaScript/Node、React(JSX/TSX)、HTML、CSS/SCSS/Less
  • 一个端点: http://127.0.0.1:8000/mcp (流式HTTP)或stdio

快速入门

1) 安装此桥

# from the repo root
pip install -e .

2) 安装语言服务器

在Debian/Ubuntu上,您可以运行 ./install.sh 安装所有支持的语言服务器。

python (选一个)

pip install basedpyright   # provides basedpyright-langserver
# OR
npm i -g pyright           # provides pyright-langserver

锈

rustup component add rust-analyzer

C/C++

# install clangd via your platform (llvm package)
clangd --version

Types/JavaScript/节点/反应

npm i -g typescript typescript-language-server

HTML/CSS

npm i -g vscode-langservers-extracted

3) 运行服务器

codex-lsp-bridge serve --config ./config/default.toml --host 127.0.0.1 --port 8000

4) 连接Codex CLI

编辑 ~/.codex/config.toml (HTTP):

experimental_use_rmcp_client = true

[mcp_servers.lsp_bridge]
url = "http://127.0.0.1:8000/mcp"

或者使用Codex CLI帮助程序:

codex mcp add lsp_bridge --url http://127.0.0.1:8000/mcp

有效地使用它

提示模式:

在导航或重构代码时,始终使用LSP工具而不是文本搜索。

例子:

codex "Find all references to UserRepository and rename it to AccountRepository. Use LSP rename_symbol first."

注:行/列位置为0索引。 提示:如果行/列可能关闭,请传递 fuzzy=true (以及可选 fuzzy_radius)基于位置的工具。

LSP工具覆盖范围

核心工具:

  • go_to_definition, type_definition
  • find_references, rename_symbol
  • hover, signature_help
  • document_symbols, workspace_symbols
  • code_action, format_document
  • call_hierarchy, diagnostics, wait_for_diagnostics, lsp_bridge_status
  • resolve_symbol (基于模糊名称的查找)

烟雾测试(无文件更改)

您可以对任何文件运行快速LSP烟雾测试:

python scripts/lsp_smoke_test.py --file /abs/path/to/file.py --line 10 --column 5

添加 --call-hierarchy 如果你想测试调用层次结构响应。

安装语言服务器(Debian/Ubuntu)

如果你在Debian/Ubuntu上,你可以使用提供的脚本:

./install.sh

这将安装:

  • basedpyright(Python)
  • ruff+ruff lsp(Python lint/autofix)
  • 锈蚀分析仪(rust)
  • cland(C/C++)
  • typescript语言服务器+typescript(TS/JS/RReact)
  • vscode html语言服务器+vscode css语言服务器(html/css)
  • eslint(JS/TS-lint)

注意:某些命令可能会登录 ~/.local/bin 或 ~/.cargo/bin。确保这些已打开 PATH 对于运行网桥的用户。

配置

看 config/default.toml。它将文件扩展名映射到语言服务器命令。

对于Python, config/default.toml 还支持更强的类型检查设置和 不包括大型文件夹,如 .venv 以保持LSP的响应。

您可以通过以下方式将网桥指向配置文件:

export CODEX_LSP_BRIDGE_CONFIG=/path/to/config.toml

MCP设置(HTTP与stdio)

HTTP(网桥单独运行):

experimental_use_rmcp_client = true

[mcp_servers.lsp_bridge]
url = "http://127.0.0.1:8000/mcp"

Stdio(Codex生成网桥,无HTTP):

[mcp_servers.lsp_bridge]
command = "/absolute/path/to/codex-lsp-bridge"
args = ["serve", "--transport", "stdio", "--config", "/absolute/path/to/config/default.toml"]

多项目行为

  • 每个工具调用都包括一个 file_path.
  • 桥接器通过从该文件向上移动并查找以下标记来检测工作空间根 .git, package.json, Cargo.toml等等。
  • 它启动了一个LSP (language, workspace_root) 因此多个repo不会相互污染。
  • 建议使用绝对路径;相对路径解决了桥梁的 default_root.

您还可以通过传递以下命令来强制工作区根 workspace_root 任何基于文件的工具调用。

自动修复+棉绒+强力型

这 code_action 当语言服务器支持时,该工具会返回快速修复和重构。 为了获得每种语言的最佳效果:

  • Python:类型为basedpyright/pyright。对于lint+autofix,考虑切换到 ruff-lsp 或 pylsp 使用ruff/black插件。
  • types/JavaScript:类型来自 typescript-language-server 和你的 tsconfig.json (使用 strict: true 对于强壮的类型)。对于lint/autofix,请使用ESLint及其LSP服务器。
  • Rust:Rust分析器提供强大的类型和代码操作(例如导入/快速修复)。
  • C/C++:cland提供诊断和一些修复;精度取决于 compile_commands.json.

系统提示代码段

看 SYSTEM_PROMPT_SNIPPET.md 对于一个简短的片段,你可以将其附加到你的AI系统提示中,这样它总是更喜欢LSP工具。

安全说明

  • 本地最安全:网桥读取您的repo文件并启动本地二进制文件。
  • 如果远程部署,则仅在服务器可以访问同一仓库并使用身份验证对其进行保护的情况下进行部署。