返回市场
源码包语言服务器

源码包语言服务器

作者:leftspin2 星标更新:2025-05-28

项目介绍

MCP SourceKit-LSP

这是一个MCP(模型上下文协议)服务器,通过SourceKit-LSP为AI代理提供Swift代码智能。

功能

此MCP服务器向AI代理暴露SourceKit-LSP功能,使它们能够:

  • 导航Swift代码:查找定义、引用和实现
  • 理解类型:获取带有类型详情和文档的悬停信息
  • 搜索符号:在项目中查找类、方法和属性
  • 检查诊断信息:访问编译器错误和警告

安装

从npm(发布后)

npm install -g @leftspin/mcp-sourcekit-lsp

从GitHub

npm install -g github:leftspin/mcp-sourcekit-lsp

开发环境

git clone https://github.com/leftspin/mcp-sourcekit-lsp.git
cd mcp-sourcekit-lsp
npm install
npm run build

# 可选:设置开发通知(参见下文的开发环境)
cp .env.example .env
# 编辑.env文件以包含您的通知凭证

配置

Claude Desktop

在您的Claude Desktop配置文件中添加以下内容:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "sourcekit-lsp": {
      "command": "npx",
      "args": ["@leftspin/mcp-sourcekit-lsp"],
      "env": {
        "SOURCEKIT_LSP_PATH": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp"
      }
    }
  }
}

Claude Code

在Claude Code的MCP设置中添加此服务器:

  1. 打开Claude Code设置:Cmd+, (macOS) 或 Ctrl+, (Windows/Linux)
  2. 搜索"MCP"或导航到MCP部分
  3. 添加新的服务器配置:
{
  "name": "sourcekit-lsp",
  "command": "npx",
  "args": ["@leftspin/mcp-sourcekit-lsp"],
  "env": {
    "SOURCEKIT_LSP_PATH": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp"
  }
}

或者如果全局安装了:

{
  "name": "sourcekit-lsp", 
  "command": "mcp-sourcekit-lsp",
  "env": {
    "SOURCEKIT_LSP_PATH": "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp"
  }
}

环境变量

  • SOURCEKIT_LSP_PATH(可选):sourcekit-lsp二进制文件的路径。默认为PATH中的sourcekit-lsp
  • SOURCEKIT_BUILD_ARGS(可选):sourcekit-lsp的附加参数(例如,-Xswiftc -debug-info-format=dwarf)。

对于Xcode项目

如果您正在使用Xcode项目,可能需要指定构建参数:

export SOURCEKIT_BUILD_ARGS="-Xswiftc -sdk -Xswiftc /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk"

可用工具

swift-definition

查找符号的定义位置。

{
  "file": "/path/to/file.swift",
  "line": 10,
  "column": 5
}

swift-hover

获取符号的类型信息和文档。

{
  "file": "/path/to/file.swift",
  "line": 10,
  "column": 5
}

swift-references

查找所有对符号的引用。

{
  "file": "/path/to/file.swift",
  "line": 10,
  "column": 5
}

swift-symbols

在工作区中搜索符号。

{
  "query": "MyClass"
}

swift-diagnostics

获取文件的编译器诊断信息。

{
  "file": "/path/to/file.swift"
}

资源

swift-project-structure

提供Swift项目的结构概述,包括所有Swift文件及其组织方式。

swift-build-settings

显示当前的构建配置和编译器设置。

要求

  • Node.js 16或更高版本
  • SourceKit-LSP(随Xcode或Swift工具链提供)
  • 一个Swift项目(Swift包管理器或Xcode项目)

开发

设置

# 安装依赖
npm install

# 构建TypeScript
npm run build

# 开发监视模式
npm run watch

# 运行测试
npm test

# 使用MCP Inspector运行测试
npx @modelcontextprotocol/inspector

开发环境

该项目包含一个用于开发更新的通知系统。要使用它:

  1. 创建环境文件:

    cp .env.example .env
    
  2. 将您的凭证添加到.env文件中:

    # 用于开发通知的Pushover凭证(可选)
    PUSHOVER_TOKEN=your_pushover_app_token
    PUSHOVER_USER=your_pushover_user_key
    
  3. 获取Pushover凭证(可选):

    • pushover.net注册
    • 创建一个应用程序以获取您的应用令牌
    • 在您的账户设置中找到您的用户密钥

注意.env文件被自动忽略,以确保您的凭证安全。通知系统完全可选,仅用于开发便利。

测试

# 运行所有测试
npm test

# 在监视模式下运行测试
npm run test:watch

# 带覆盖率运行测试
npm run test:coverage

故障排除

SourceKit-LSP未找到

如果服务器找不到sourcekit-lsp,请设置SOURCEKIT_LSP_PATH环境变量:

常见位置:

  • Xcode/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/sourcekit-lsp
  • Swift工具链/Library/Developer/Toolchains/swift-latest.xctoolchain/usr/bin/sourcekit-lsp
  • Homebrew/opt/homebrew/bin/sourcekit-lsp

检查sourcekit-lsp是否可用:

which sourcekit-lsp
# 或尝试直接运行它
sourcekit-lsp --help

工具没有结果

  1. 先构建项目:SourceKit-LSP需要编译信息

    # 对于SPM项目
    swift build
    
    # 对于Xcode项目
    xcodebuild -project YourProject.xcodeproj -scheme YourScheme build
    
  2. 检查文件路径:确保文件路径是绝对路径且文件存在

  3. 验证工作区:从项目根目录运行MCP服务器

诊断信息未出现

  • 诊断信息由SourceKit-LSP异步发送
  • 没有错误/警告的文件将返回空的诊断信息
  • 大型项目可能需要更长时间进行分析

性能问题

  • SourceKit-LSP在大型项目上可能会消耗大量资源
  • 如需限制范围,请考虑使用SOURCEKIT_BUILD_ARGS
  • 关闭未使用的Xcode项目以释放SourceKit-LSP资源

架构

此MCP服务器作为AI代理与SourceKit-LSP之间的桥梁:

AI代理 <--[MCP]--> 此服务器 <--[LSP]--> SourceKit-LSP <--> Swift代码
  • MCP工具:AI代理的同步请求/响应
  • LSP通信:异步通知和请求
  • 缓存:诊断信息和文件状态缓存以实现即时响应

许可证

MIT

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支
  3. 为新功能添加测试
  4. 确保所有测试通过(npm test
  5. 提交拉取请求

查看工程计划以了解实施细节。