Model Context Protocol Server

Identifier:
org.eclipse.mcp.modelContextProtocolServer

Since:

3.0

Description:

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:

Configuration Markup:

<!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



Examples:
The following is an example of several activity and category definitions as well as associated bindings.


  <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>

API Information:

TBD

Supplied Implementation:
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