3.0
The org.eclipse.mcp.modelContextProtocolServer
extension point is used to declare and instantiate Model Context Protocol Servers that run within the IDE's Process and expose IDE functionality for interaction with Agents and/or Developers.
Behind the scenes, declared MCP Servers will be instantiated using the modelcontextprotocol/java-sdk API and configured to serve over HTTP using and can be configured to server over HTTP using Jetty.
A "Platform MCP Servers" preference page will let users:
<!ELEMENT extension (tool , resourceController , server , category , toolServerBinding , resourceControllerServerBinding)*>
<!ATTLIST extension
id CDATA #IMPLIED
name CDATA #IMPLIED
point CDATA #REQUIRED>
<!ELEMENT tool (propertyPage)*>
<!ATTLIST tool
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
schema CDATA #REQUIRED
class CDATA #REQUIRED
categoryId IDREF #IMPLIED>
This element is used to define a Model Context Protocol Tool
<!ELEMENT resourceController (propertyPage)*>
<!ATTLIST resourceController
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
class CDATA #REQUIRED
categoryId IDREF #IMPLIED>
This element is used to define a controller that may dynamically create and remove Model Context Protocol Resources from the server.
<!ELEMENT server EMPTY>
<!ATTLIST server
description CDATA #IMPLIED
id CDATA #REQUIRED
name CDATA #REQUIRED
version CDATA #REQUIRED
defaultPort CDATA #REQUIRED>
This element declares a Model Context Protocol Server that may serve a collection of Model Context Protocol Tools and Model Context Protocol Resources and make them available within the the IDE Process or over HTTP.
<!ELEMENT category EMPTY>
<!ATTLIST category
id CDATA #REQUIRED
name CDATA #REQUIRED>
This element allows one to define a category for Tools, Resource Managers
<!ELEMENT toolServerBinding EMPTY>
<!ATTLIST toolServerBinding
toolId IDREF #REQUIRED
serverId IDREF #REQUIRED>
This element allows one to bind tool to a server
<!ELEMENT resourceControllerServerBinding EMPTY>
<!ATTLIST resourceControllerServerBinding
resourceControllerId IDREF #REQUIRED
serverId IDREF #REQUIRED>
This element allows one to bind a Resource Controller to a Server
<!ELEMENT propertyPage EMPTY>
<!ATTLIST propertyPage
id CDATA #REQUIRED>
Specify an optional custom propertyPage to let the user customize the behavior of a tool or resource.
your class should implement org.eclipse.ui.dialogs.PropertyPage
you can load and save preferences from the input object, which is an instance of org.eclipse.mcp.IMCPElementPropertyInput
<extension point="org.eclipse.mcp.modelContextProtocolServer" id="com.foo.bar" name="My MCP Contributions"> <category id="com.foo.bar.category" name="My Contributions"> </category> <server description="My first MCP server" id="com.foo.bar.server" name="My MCP Server" version="1.0.0" defaultPort="12932"> </server> <tool categoryId="com.foo.bar.category" class="com.foo.bar.tools.MyIMCPTool" description="LLM Tooling will read this to understand how to invoke my tool" id="com.foo.bar.tools.MyIMCPToolId" name="foo-myTool" schema="my XML escaped JSON schema declaring the inputs into my tool""> <propertyPage id="com.foo.bar.tools.myPropertyPageId1"> </propertyPage> <propertyPage id="com.foo.bar.tools.myPropertyPageId2"> </propertyPage> </tool> <toolServerBinding serverId="com.foo.bar.server" toolId="com.foo.bar.tools.MyIMCPToolId"> </toolServerBinding> </extension>
TBD
Copyright (c) 2025 IBM Corporation and others.
This program and the accompanying materials are made
available under the terms of the Eclipse Public License 2.0 which accompanies
this distribution, and is available at https://www.eclipse.org/legal/epl-v20.html/
SPDX-License-Identifier: EPL-2.0