Skip to content

saikaNya/mcp-server-for-java

ย 
ย 

Repository files navigation

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.maxOutputLength number 70000 ๆœ€ๅคง่พ“ๅ‡บ Java ๆบไปฃ็ ๅญ—็ฌฆๆ•ฐใ€‚ๅฝ“่ฆ่Žทๅ–็š„็ฑป็š„ๆบไปฃ็ ่ถ…่ฟ‡ๆญค้™ๅˆถๆ—ถไผšๆŠฅ้”™ใ€‚ไธๅปบ่ฎฎ่ฎพ็ฝฎ่ฟ‡ๅคง๏ผŒ่ฟ‡ๅคงไผšๅฏผ่‡ดๆจกๅž‹ input token ่ฟ‡ๅคงๆ— ๆณ•่ฏทๆฑ‚ๆจกๅž‹๏ผŒๆˆ–ๆ— ๆณ•ๅฐ†็ฑป็š„ๆบไปฃ็ ๆ”พๅ…ฅไธŠไธ‹ๆ–‡ไธญใ€‚
mcpServer.enableRelayVersionCheck boolean true ๆ˜ฏๅฆๅฏ็”จ 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 ้กน็›ฎ                      โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆ ธๅฟƒ็ป„ไปถ

็ป„ไปถ ๅŒ…ๅ ่ฏดๆ˜Ž
Extension packages/extension VSCode/Cursor ๆ’ไปถ๏ผŒๆไพ› MCP ๆœๅŠกๅ™จๅŠŸ่ƒฝ
Relay packages/relay ๅ‘ฝไปค่กŒไธญ็ปง็จ‹ๅบ๏ผŒๆกฅๆŽฅ MCP ๅฎขๆˆท็ซฏไธŽ Extension

Socket ้€šไฟกๆœบๅˆถ

ๅนณๅฐๅทฎๅผ‚

ๅนณๅฐ ้€šไฟกๆ–นๅผ ่ทฏๅพ„ๆ ผๅผ
Windows Named Pipe (ๅ‘ฝๅ็ฎก้“) \\.\pipe\vscode-mcp-{pid}
macOS/Linux Unix 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-Version Relay ็‰ˆๆœฌๅท๏ผŒ็”จไบŽๅ…ผๅฎนๆ€งๆฃ€ๆŸฅ
X-MCP-Client MCP ๅฎขๆˆท็ซฏๆ ‡่ฏ†

ๆ•ฐๆฎๆต

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.ts MCP ๆœๅŠกๅ™จๅฎž็Žฐ๏ผŒๆณจๅ†Œๅทฅๅ…ท
extension/src/sock-transport.ts Socket ๆœๅŠก็ซฏไผ ่พ“ๅฑ‚
extension/src/utils/router-table.ts ่ทฏ็”ฑ่กจ็ฎก็†๏ผˆ่ฏปๅ†™๏ผ‰
relay/src/index.ts Relay ๅ…ฅๅฃ๏ผŒ่ฏทๆฑ‚่ฝฌๅ‘
relay/src/socket-client.ts Socket ๅฎขๆˆท็ซฏ
relay/src/router-table.ts ่ทฏ็”ฑ่กจ่ฏปๅ–๏ผˆๅช่ฏป๏ผ‰

MCP Server For Java

โš ๏ธ v0.0.3 Important Update

MCP client configuration needs to be changed from:

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

or

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

to:

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

Without updating the configuration, automatic multi-workspace switching will not work, and only classes from the first opened workspace will be accessible.

Overview

AI Code Agents based on VSCode (such as Cursor, Github Copilot, Windsurf) can access a Java project's own source code, but cannot retrieve class definitions and source code from project dependencies.

This extension turns VSCode/Cursor into an MCP server, enabling AI Agents to:

  • Search Java Types: Search for classes by name or partial name across your project, external dependencies, and JDK โ€” corresponding MCP tool searchJavaTypes
  • Get Source Code: Retrieve source code of any accessible class by fully qualified name (including dependency libraries and JDK) โ€” corresponding MCP tool getSourceCodeByFQN

Get Type Definition

Multi-Workspace Support

  • Before v0.0.3: Switch MCP server between multiple VSCode/Cursor workspaces by clicking the status bar
  • From v0.0.3: Supports connecting to multiple workspaces simultaneously. Unless specified by the user, AI Agent will automatically select the workspace corresponding to the currently active window

Installation & Setup

  1. Confirm that the Extension Pack for Java plugin is installed (VS Marketplace or Open VSX) and can run Java projects normally

  2. Download and install this extension.

  3. Configure your MCP client, restart and confirm MCP tools are loaded:

    • For clients like Claude Desktop, Cursor, Winsurf, VSCode, Cherry studio: Add the following to your configuration file (claude_desktop_config.json):
    {
      "mcpServers": {
        "vscode-java": {
          "command": "npx",
          "args": [
            "vscode-to-mcp-server"
          ]
        }
      }
    }
  4. Open a Java project and make sure the project is fully loaded Project fully loaded

Improve Tool Invocation Rate (Recommended Configuration)

To help AI Agents invoke the tools provided by this extension more proactively, it is recommended to add the following content to your system prompt (if you don't have a better or more suitable prompt for your use case):

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

๐Ÿ’ก For example, in Cursor, you can add this in Settings โ†’ General โ†’ Rules for AI โ†’ User Rules

Extension Parameters

Parameter Type Default Description
mcpServer.maxOutputLength number 70000 Maximum number of characters for Java source code output. An error will be reported when the source code exceeds this limit. It is not recommended to set it too large, as excessive values may cause the model's input token to be too large or make it impossible to place the class source code in the context.
mcpServer.enableRelayVersionCheck boolean true Whether to enable relay version update check and notification. Set to false to disable version update warnings.

Contact

Feedback on issues, bugs, or suggestions for new features is highly welcomed! ๐Ÿ™‡

Changelog

  • 0.0.7 Multi-root workspace support
  • 0.0.5 Support filtering by method names when retrieving source code
  • 0.0.4 Support for retrieving classes with the same fully qualified name from multiple versions
  • 0.0.3 MCP commands auto-route to multiple workspaces without manual switching
  • 0.0.2 Fixed a bug where querying fully qualified names sometimes returned non-matching results

Architecture

Overview

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                              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        โ”‚    โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Core Components

Component Package Description
Extension packages/extension VSCode/Cursor extension providing MCP server functionality
Relay packages/relay CLI relay program bridging MCP client and Extension

Socket Communication

Platform Differences

Platform Method Path Format
Windows Named Pipe \\.\pipe\vscode-mcp-{pid}
macOS/Linux Unix Domain Socket ~/.vscode-mcp-sockets/{pid}.sock

Router Table

Router table file is stored in user home directory: ~/.vscode-mcp-router-v2.json

{
  "entries": [
    {
      "workspaces": ["d:\\project\\workspace-a"],
      "pid": 12345,
      "lastUpdated": 1700000000000
    }
  ]
}

Communication Protocol

  • Format: JSON-RPC 2.0
  • Delimiter: Newline \n
  • Timeout: Connection 5s / Request 30s

Request Headers

Header Description
X-Relay-Version Relay version for compatibility check
X-MCP-Client MCP client identifier

Data Flow

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

Key Files

File Description
extension/src/extension.ts Extension entry point, initializes MCP server
extension/src/mcp-server.ts MCP server implementation, registers tools
extension/src/sock-transport.ts Socket server transport layer
extension/src/utils/router-table.ts Router table management (read/write)
relay/src/index.ts Relay entry point, request forwarding
relay/src/socket-client.ts Socket client
relay/src/router-table.ts Router table reading (read-only)

About

Expose VSCode features such as file viewing and editing as MCP, enabling advanced AI-assisted coding directly from tools like Claude Desktop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 82.3%
  • JavaScript 17.7%