mcpField
C
Cursor Mcp For Java

Cursor Mcp For Java

本地服务
github.com/saikaNya开发工具11 周前更新

关于 Cursor Mcp For Java

Cursor Mcp For Java 是 VSCode/Cursor 插件,可将编辑器工作区作为 MCP 服务,供编码 Agent 查询项目、依赖库和 JDK 中的 Java 类及源码。它支持同时连接多个工作区,并根据活动窗口自动路由请求。

主要功能

  1. 01按名称搜索 Java 类型
  2. 02通过全限定名获取源码
  3. 03搜索项目、依赖和 JDK
  4. 04按方法名筛选源码
  5. 05自动路由多个工作区

适用场景

  1. 01查找项目代码未包含的依赖类
  2. 02查看 JDK 类的源码实现
  3. 03在多工作区项目中查询 Java 类型

MCP 相关

插件通过 Relay 将 MCP 客户端的 stdio 请求转发到 VSCode/Cursor 扩展,提供 `searchJavaTypes` 和 `getSourceCodeByFQN` 工具。多工作区模式会将请求路由到活动窗口对应的工作区。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"for-java": {
"command": "npx",
"args": [
"-y",
"vscode-as-mcp-server"
]
}
}
}
启动命令npx -y vscode-as-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmvscode-as-mcp-server

工具

10

收录的工具列表 · 更新于 3 周前

参数类型必填说明
commandstring是要执行的命令
customCwdstring否命令执行时可选的自定义工作目录
potentiallyDestructiveboolean否指示命令是否可能具有破坏性或会修改内容的标志。默认值为 true。对于只读命令(如 grep、find、ls),设置为 false 可跳过用户确认。可能修改文件或系统状态的命令应保持为 true。注意:用户可以通过 mcpServer.confirmNonDestructiveCommands 设置覆盖此行为。
backgroundboolean否指示命令是否应在后台运行且不等待完成的标志。为 true 时,命令启动后工具会立即返回。默认值为 false,即等待命令完成。
timeoutnumber否超时时间(毫秒)。超过此时间后,命令执行将被视为已完成并用于报告。实际上不会终止命令。默认值为 300000(5 分钟)。

详细介绍

原文在翻译后有更新,译文可能不是最新。

MCP Server For Java

⚠️ v0.0.3 重要更新

MCP 客户端配置需要从:

{
  "command": "npx",
  "args": ["vscode-as-mcp-server"]
}

或

{
  "url": "http://localhost:60100"
}

修改为:

{
  "command": "npx",
  "args": ["vscode-to-mcp-server"]
}

如果不修改配置,将无法自动在多工作区间切换,只能获取第一个打开的工作区的类。

简介

Cursor、Github Copilot、Windsurf 等基于 VSCode 开发的 AI Code Agent 在编写 Java 项目时,可以访问项目本身的源代码,但无法获取项目依赖的类定义与源码。

本插件将 VSCode/Cursor 转变为 MCP 服务器,让 AI Agent 能够:

  • 搜索 Java 类型:通过名称或部分名称在项目、外部依赖和 JDK 中搜索类 ————对应mcp工具searchJavaTypes
  • 获取源代码:通过全限定名获取任意可访问类的源码(包括依赖库和 JDK)————对应mcp工具getSourceCodeByFQN

获取类的定义

多工作区支持

  • v0.0.3 之前:通过点击状态栏在多个 VSCode/Cursor 工作区之间切换 MCP 服务器
  • v0.0.3 起:支持同时连接多个工作区,除非用户指定 AI Agent 会自动选择当前活动窗口对应的工作区

首次安装与设置

  1. 确认已经安装插件Extension Pack for Java微软插件商品版本或Open VSX 版本 且可正常运行java项目

  2. 下载安装本插件。

  3. 配置您的MCP客户端,重启并确认mcp工具加载完成:

    • 如Claude Desktop,Curosr,Winsurf,Vsocde,Cherry studio等客户端:添加以下内容到您的配置文件(claude_desktop_config.json)中:
    {
      "mcpServers": {
        "vscode-java": {
          "command": "npx",
          "args": [
            "vscode-to-mcp-server"
          ]
        }
      }
    }
    
  4. 打开一个java项目,并确保项目完全加载完毕 项目完全加载完毕

提高工具调用率(推荐配置)

为了让 AI Agent 更主动地调用本插件提供的工具,建议在系统提示词中添加以下内容(如果你没有更好或者更适合自己应用场景的提示词):

通过项目源代码找不到的类或类的定义或方法具体实现,且有类名或者部分类名时,可以使用工具 searchJavaTypes 与 getSourceCodeByFQN 判断其是否存在,或获取其源代码

💡 以 Cursor 为例,可以在 Settings → General → Rules for AI → User Rules 中添加

插件参数声明

参数类型默认值说明
mcpServer.maxOutputLengthnumber70000最大输出 Java 源代码字符数。当要获取的类的源代码超过此限制时会报错。不建议设置过大,过大会导致模型 input token 过大无法请求模型,或无法将类的源代码放入上下文中。
mcpServer.enableRelayVersionCheckbooleantrue是否启用 relay 版本更新检查和通知。设置为 false 可禁用版本更新提醒。

联系

非常欢迎大家对插件的问题,bug或新功能建议进行反馈! 🙇

更新日志

  • 0.0.7 多根工作区支持
  • 0.0.5 获取源码时,支持按方法名过滤
  • 0.0.4 支持获取工作区中存在的全限定名相同但版本不同的类
  • 0.0.3 mcp指令执行在多个工作区自动路由,无需手动切换
  • 0.0.2 修改了查询全限定名有时候会查出不符合条件的结果的bug

架构说明

整体架构
┌─────────────────────────────────────────────────────────────────────────────┐
│                              MCP 客户端                                      │
│                  (Claude Desktop / Cursor / Windsurf 等)                     │
└─────────────────────────────────────────────────────────────────────────────┘
                                    │
                                    │ stdio (JSON-RPC)
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                          Relay (vscode-to-mcp-server)                        │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │  - 接收 MCP 客户端请求                                                │    │
│  │  - 读取路由表,查找目标 Extension                                      │    │
│  │  - 通过 Socket 转发请求到 Extension                                   │    │
│  │  - 返回响应给 MCP 客户端                                              │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
                                    │
                   ┌────────────────┼────────────────┐
                   │                │                │
                   ▼                ▼                ▼
          ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
          │   Named Pipe │  │   Named Pipe │  │   Named Pipe │
          │  (Windows)   │  │  (Windows)   │  │  (Windows)   │
          │    或        │  │    或        │  │    或        │
          │ Unix Socket  │  │ Unix Socket  │  │ Unix Socket  │
          │   (其他)     │  │   (其他)     │  │   (其他)     │
          └──────────────┘  └──────────────┘  └──────────────┘
                   │                │                │
                   ▼                ▼                ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      VSCode/Cursor Extension 实例                            │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐                        │
│  │ 工作区 A    │   │ 工作区 B    │   │ 工作区 C    │   ...                  │
│  │ PID: 12345  │   │ PID: 23456  │   │ PID: 34567  │                        │
│  └─────────────┘   └─────────────┘   └─────────────┘                        │
│         │                │                │                                  │
│         ▼                ▼                ▼                                  │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                    Java Language Server (JDT.LS)                     │    │
│  │            搜索类型 / 获取源代码 / 解析 Java 项目                      │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
核心组件
组件包名说明
Extensionpackages/extensionVSCode/Cursor 插件,提供 MCP 服务器功能
Relaypackages/relay命令行中继程序,桥接 MCP 客户端与 Extension
Socket 通信机制
平台差异
平台通信方式路径格式
WindowsNamed Pipe (命名管道)\\.\pipe\vscode-mcp-{pid}
macOS/LinuxUnix Domain Socket~/.vscode-mcp-sockets/{pid}.sock
路由表

路由表文件存储在用户主目录:~/.vscode-mcp-router-v2.json

{
  "entries": [
    {
      "workspaces": ["d:\\project\\workspace-a"],
      "pid": 12345,
      "lastUpdated": 1700000000000
    }
  ]
}
通信协议
  • 格式: JSON-RPC 2.0
  • 分隔符: 换行符 \n
  • 超时: 连接 5秒 / 请求 30秒
请求头
Header说明
X-Relay-VersionRelay 版本号,用于兼容性检查
X-MCP-ClientMCP 客户端标识
数据流
1. MCP 客户端调用工具 (如 searchJavaTypes)
                    │
                    ▼
2. Relay 接收 stdio 请求
                    │
                    ▼
3. Relay 读取路由表,根据 workspacePaths 查找目标 PID
                    │
                    ▼
4. Relay 通过 Socket 发送 JSON-RPC 请求到 Extension
                    │
                    ▼
5. Extension 调用 Java Language Server 执行操作
                    │
                    ▼
6. Extension 返回结果给 Relay
                    │
                    ▼
7. Relay 返回结果给 MCP 客户端
关键文件
文件说明
extension/src/extension.ts插件入口,初始化 MCP 服务器
extension/src/mcp-server.tsMCP 服务器实现,注册工具
extension/src/sock-transport.tsSocket 服务端传输层
extension/src/utils/router-table.ts路由表管理(读写)
relay/src/index.tsRelay 入口,请求转发
relay/src/socket-client.tsSocket 客户端
relay/src/router-table.ts路由表读取(只读)

Java MCP 服务

⚠️ v0.0.3 重要更新

MCP 客户端配置需要从以下内容:

{
  "command": "npx",
  "args": ["vscode-as-mcp-server"]
}

或

{
  "url": "http://localhost:60100"
}

改为:

{
  "command": "npx",
  "args": ["vscode-to-mcp-server"]
}

如果不更新配置,自动多工作区切换将无法正常工作,并且只能访问第一个打开的工作区中的类。

概述

基于 VSCode 的 AI 编码 Agent(例如 Cursor、Github Copilot、Windsurf)可以访问 Java 项目自身的源代码,但无法检索项目依赖中的类定义和源代码。

此扩展可将 VSCode/Cursor 转换为 MCP 服务,让 AI Agent 能够:

  • 搜索 Java 类型:在项目、外部依赖和 JDK 中按类名或部分名称搜索类 — 对应的 MCP 工具为 searchJavaTypes
  • 获取源代码:按完全限定名获取任何可访问类的源代码(包括依赖库和 JDK)— 对应的 MCP 工具为 getSourceCodeByFQN

获取类型定义

多工作区支持

  • v0.0.3 之前:通过点击状态栏,在多个 VSCode/Cursor 工作区之间切换 MCP 服务
  • 从 v0.0.3 开始:支持同时连接多个工作区。除非用户指定,否则 AI Agent 会自动选择与当前活动窗口对应的工作区

安装与设置

  1. 确认已安装 Extension Pack for Java 插件(VS Marketplace 或 Open VSX),并且可以正常运行 Java 项目

  2. 下载并安装此扩展。

  3. 配置 MCP 客户端,重启并确认已加载 MCP 工具:

    • 对于 Claude Desktop、Cursor、Winsurf、VSCode、Cherry studio 等客户端:将以下内容添加到配置文件(claude_desktop_config.json)中:
    {
      "mcpServers": {
        "vscode-java": {
          "command": "npx",
          "args": [
            "vscode-to-mcp-server"
          ]
        }
      }
    }
    
  4. 打开一个 Java 项目,并确保项目已完全加载 项目已完全加载

提高工具调用率(推荐配置)

为了帮助 AI Agent 更主动地调用此扩展提供的工具,建议将以下内容添加到系统提示词中(如果你没有更适合使用场景的提示词):

When you cannot find the class, class definition, or specific implementation of methods through the project source code, and you have the class name or partial class name, you can use the tools searchJavaTypes and getSourceCodeByFQN to check if it exists or get its source code

💡 例如,在 Cursor 中,你可以在 Settings → General → Rules for AI → User Rules 中添加此内容

扩展参数

参数类型默认值描述
mcpServer.maxOutputLengthnumber70000Java 源代码输出的最大字符数。源代码超过此限制时将报告错误。不建议设置过大,因为过高的值可能会导致模型输入令牌数过多,或无法将类的源代码放入上下文中。
mcpServer.enableRelayVersionCheckbooleantrue是否启用中继版本更新检查和通知。设为 false 可禁用版本更新警告。

联系方式

非常欢迎反馈问题、错误或新功能建议! 🙇

更新日志

  • 0.0.7 支持多根工作区
  • 0.0.5 支持在获取源代码时按方法名称筛选
  • 0.0.4 支持从多个版本中获取具有相同全限定名称的类
  • 0.0.3 MCP 命令可自动路由到多个工作区,无需手动切换
  • 0.0.2 修复了查询全限定名称时有时会返回不匹配结果的错误

架构

概览
┌─────────────────────────────────────────────────────────────────────────────┐
│                              MCP Client                                      │
│                  (Claude Desktop / Cursor / Windsurf, etc.)                  │
└─────────────────────────────────────────────────────────────────────────────┘
                                    │
                                    │ stdio (JSON-RPC)
                                    ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                          Relay (vscode-to-mcp-server)                        │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │  - Receives MCP client requests                                      │    │
│  │  - Reads router table to find target Extension                       │    │
│  │  - Forwards requests to Extension via Socket                         │    │
│  │  - Returns responses to MCP client                                   │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
                                    │
                   ┌────────────────┼────────────────┐
                   │                │                │
                   ▼                ▼                ▼
          ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
          │   Named Pipe │  │   Named Pipe │  │   Named Pipe │
          │  (Windows)   │  │  (Windows)   │  │  (Windows)   │
          │     or       │  │     or       │  │     or       │
          │ Unix Socket  │  │ Unix Socket  │  │ Unix Socket  │
          │   (Others)   │  │   (Others)   │  │   (Others)   │
          └──────────────┘  └──────────────┘  └──────────────┘
                   │                │                │
                   ▼                ▼                ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│                      VSCode/Cursor Extension Instances                       │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐                        │
│  │ Workspace A │   │ Workspace B │   │ Workspace C │   ...                  │
│  │ PID: 12345  │   │ PID: 23456  │   │ PID: 34567  │                        │
│  └─────────────┘   └─────────────┘   └─────────────┘                        │
│         │                │                │                                  │
│         ▼                ▼                ▼                                  │
│  ┌─────────────────────────────────────────────────────────────────────┐    │
│  │                    Java Language Server (JDT.LS)                     │    │
│  │          Search types / Get source code / Parse Java projects        │    │
│  └─────────────────────────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────────────────────────┘
核心组件
组件软件包描述
扩展packages/extension提供 MCP 服务功能的 VSCode/Cursor 扩展
中继packages/relay用于连接 MCP 客户端与扩展的命令行中继程序
Socket 通信
平台差异
平台方法路径格式
Windows命名管道\\.\pipe\vscode-mcp-{pid}
macOS/LinuxUnix 域套接字~/.vscode-mcp-sockets/{pid}.sock
路由表

路由表文件存储在用户主目录中:~/.vscode-mcp-router-v2.json

{
  "entries": [
    {
      "workspaces": ["d:\\project\\workspace-a"],
      "pid": 12345,
      "lastUpdated": 1700000000000
    }
  ]
}
通信协议
  • 格式:JSON-RPC 2.0
  • 分隔符:换行符 \n
  • 超时:连接 5s / 请求 30s
请求标头
标头描述
X-Relay-Version用于兼容性检查的中继版本
X-MCP-ClientMCP 客户端标识符
数据流
1. MCP client calls a tool (e.g., searchJavaTypes)
                    │
                    ▼
2. Relay receives stdio request
                    │
                    ▼
3. Relay reads router table, finds target PID by workspacePaths
                    │
                    ▼
4. Relay sends JSON-RPC request to Extension via Socket
                    │
                    ▼
5. Extension calls Java Language Server to execute operation
                    │
                    ▼
6. Extension returns result to Relay
                    │
                    ▼
7. Relay returns result to MCP client
关键文件
文件描述
extension/src/extension.ts扩展入口点,用于初始化 MCP 服务
extension/src/mcp-server.tsMCP 服务实现,用于注册工具
extension/src/sock-transport.tsSocket 服务传输层
extension/src/utils/router-table.ts路由表管理(读写)
relay/src/index.ts中继入口点,用于转发请求
relay/src/socket-client.tsSocket 客户端
relay/src/router-table.ts路由表读取(只读)

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。