JetBrains MCP (Model Context Protocol) Server Plugin enables seamless integration between Large Language Models (LLMs) and JetBrains IDEs. This plugin provides the server-side implementation for handling MCP requests and exposes extension points for implementing custom tools.
- Installation of JetBrains MCP Proxy
- JetBrains IDE (IntelliJ IDEA, WebStorm, etc.)
The plugin provides an extension point system that allows third-party plugins to implement their own MCP tools. Here's how to implement and register your custom tools:
Create a class that extends AbstractMcpTool
:
class MyCustomTool : AbstractMcpTool<MyArgs>() {
override val name: String = "myCustomTool"
override val description: String = "Description of what your tool does"
override fun handle(project: Project, args: MyArgs): Response {
// Implement your tool's logic here
return Response.ok("Result")
}
}
// Define your arguments data class
@Serializable
data class MyArgs(
val param1: String,
val param2: Int
)
To register your tool, add it as an extension in your plugin.xml:
<idea-plugin>
<!-- Your plugin config -->
<depends>com.intellij.mcpServer</depends>
<extensions defaultExtensionNs="com.intellij.mcpServer">
<mcpTool implementation="com.example.MyCustomTool"/>
</extensions>
</idea-plugin>
Your tool implementation should follow these guidelines:
- Tool names should be descriptive and use lowercase with optional underscores
- Create a data class for your tool's arguments that matches the expected JSON input
- Use the Response class appropriately:
Response(result)
for successful operationsResponse(error = message)
for error cases
- Utilize the provided Project instance for accessing IDE services
- Update
settings.gradle.kts
to provide a new version - Create release on Github, the publishing task will be automatically triggered
We welcome contributions! Please feel free to submit a Pull Request.