一个统一的MCP(模型上下文协议)服务器,通过集成语言服务协议提供多种编程语言的高级代码操作和分析能力。
请参阅 examples/ 中每个支持语言配置的工作示例。
# tsgo(推荐)
npm add -D @mizchi/lsmcp @typescript/native-preview
npx @mizchi/lsmcp init -p tsgo
claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo
# 使用手动 --bin
claude mcp add lsmcp npx -- -y @mizchi/lsmcp --bin="<lsp-command>"
<details>
<summary>📖 使用Claude的示例用法</summary>
1. get_project_overview # 了解代码库
2. search_symbols # 找到你需要的内容
3. get_symbol_details # 深入了解符号
初始探索:
get_project_overview - 首先使用的工具以理解任何代码库list_dir - 浏览目录结构get_symbols_overview - 文件符号的高层次视图查找代码:
search_symbols - 主要搜索函数、类、接口lsp_get_document_symbols - 列出特定文件中的所有符号lsp_get_workspace_symbols - 替代整个工作区的搜索理解代码:
get_symbol_details - 单次调用获取完整信息(推荐)lsp_get_definitions - 跳转到定义(使用 includeBody: true 获取完整代码)lsp_find_references - 查找所有使用情况lsp_get_hover - 快速类型信息代码质量:
lsp_get_diagnostics - 检查错误lsp_get_code_actions - 获取可用修复代码修改:
lsp_rename_symbol - 安全地重命名整个代码库中的符号lsp_format_document - 格式化代码replace_range / replace_regex - 文本替换1. 探索新的代码库
1. mcp__lsmcp__get_project_overview
→ 了解结构、主要组件、统计数据
2. mcp__lsmcp__search_symbols --kind "class"
→ 查找项目中的所有类
3. m_ _lsmcp__get_symbol_details --symbol "MainClass"
→ 深入了解特定类的实现
2. 调查一个错误
1. mcp__lsmcp__search_symbols --name "problematicFunction"
→ 定位该函数
2. mcp__lsmcp__get_symbol_details --symbol "problematicFunction"
→ 了解其类型、实现和使用情况
3. mcp__lsmcp__lsp_find_references --symbolName "problematicFunction"
→ 查看所有调用的地方
4. mcp__lsmcp__lsp_get_diagnostics --relativePath "path/to/file.ts"
→ 检查错误
3. 重构代码
1. mcp__lsmcp__search_symbols --name "oldMethodName"
→ 查找需要重构的方法
2. mcp__lsmcp__get_symbol_details --symbol "oldMethodName"
→ 了解当前实现和使用情况
3. mcp__lsmcp__lsp_rename_symbol --symbolName "oldMethodName" --newName "newMethodName"
→ 安全地在整个代码库中重命名
4. mcp__lsmcp__lsp_format_document --relativePath "path/to/file.ts"
→ 清理格式
4. 添加新功能
1. mcp__lsmcp__get_project_overview
→ 了解现有架构
2. mcp__lsmcp__search_symbols --kind "interface"
→ 查找相关的接口来实现
3. mcp__lsmcp__get_symbol_details --symbol "IUserService"
→ 了解接口需求
4. mcp__lsmcp__lsp_get_completion --line 50
→ 编写新代码时获取建议
备用工具(仅在必要时使用):
Read - 仅当需要查看非代码文件或LSMCP工具失败时Grep - 在文件中进行文本模式搜索Glob - 仅当LSMCP文件查找不起作用时LS - 仅当LSMCP失败时用于基本目录列表Bash 命令 - 仅用于非代码操作或故障排除仅在以下情况下使用标准工具:
您可以通过 .lsmcp/memories/ 访问存储的项目记忆。使用这些工具:
mcp__lsmcp__list_memories - 列出可用的记忆文件mcp__lsmcp__read_memory - 读取特定记忆内容mcp__lsmcp__write_memory - 创建或更新记忆mcp__lsmcp__delete_memory - 删除记忆文件记忆包含有助于保持一致性的项目上下文、约定和指南。
</details>lsmcp 包含内置预设,适用于流行的语言服务器:
tsgo - TypeScript(推荐)typescript - typescript-language-serverrust-analyzer - Rust 分析器moonbit - MoonBitfsharp - F#(fsautocomplete)deno - Deno TypeScript/JavaScriptgopls - Go(官方Go语言服务器)hls - Haskell 语言服务器(需要设置ghcup,参见 docs/HASKELL_SETUP.md)ocaml - OCaml 语言服务器.lsmcp/config.json
{
"$schema": "../node_modules/@mizchi/lsmcp/lsmcp.schema.json",
"preset": "tsgo",
"settings": {
"autoIndex": true,
"indexConcurrency": 10
}
}
对于完整的配置示例,请参见 examples/full-lsmcp-config.json。
lsmcp 提供全面的MCP工具,用于代码分析和操作:
注意:下面列出的工具名称是原始MCP工具名称(snake_case,例如 get_hover)。某些客户端会显示带有服务器限定前缀的名称(例如 mcplsmcpget_hover)。关于命名约定和模块边界,请参见 docs/TOOL_REFERENCE.md。
LSMCP 包含多项性能优化:
配置选项在 .lsmcp/config.json 中:
{
"indexConcurrency": 5,
"maxFileSize": 10485760,
"enableWatchers": true,
"memoryLimit": 1024
}
请参见 CONTRIBUTING.md 以获取详细的开发设置、测试说明和贡献指南。
# 快速开始
pnpm install
pnpm build
pnpm test
# 带有内存监控运行
node --expose-gc dist/lsmcp.js
LSMCP 有两个独立的日志系统,分别针对MCP服务器和LSP客户端:
启用MCP服务器调试输出,可通过环境变量:
MCP_DEBUG=1 lsmcp # 启用MCP服务器调试日志
LSMCP_DEBUG=1 lsmcp # 另一种方式(向后兼容)
单独启用LSP客户端调试输出:
LSP_DEBUG=1 lsmcp # 启用LSP客户端调试日志
同时启用MCP和LSP调试输出:
MCP_DEBUG=1 LSP_DEBUG=1 lsmcp
MIT - 详情请参见 LICENSE 文件。