mcpField
S
sindi-ai-mcp-server

sindi-ai-mcp-server

Local
github.com/sinditechDeveloper Tools1Updated 20w ago

About sindi-ai-mcp-server

A Java MCP server implementation for Jakarta EE applications, with modular components and REST or Servlet runtimes. Developers can register tools, prompts, resources, and resource templates using annotations or managers.

Key features

  1. 01Modular server components
  2. 02REST and Servlet runtimes
  3. 03SSE and Streamable HTTP transports
  4. 04Annotation-based MCP registration
  5. 05Tools, prompts, and resources

Use cases

  1. 01Integrate MCP features into Jakarta EE applications
  2. 02Deploy an MCP server over REST or Servlet
  3. 03Register tools, prompts, and resources in Java services

MCP support

The project implements MCP servers that expose tools, prompts, resources, and resource templates to MCP clients over REST or Servlet transports.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

sindi-ai-mcp-server

Java Implementation of Anthropic's Model Context Protocol (MCP) Server.

This implementation is an attempt to provide an integration between the MCP protocol and Jakarta EE application in a seamless way.

🏗️ Architecture

The project is structured into several modules, each serving a specific purpose:

Core Modules
  • sindi-ai-mcp-server-spi: Fundamental server-side MCP classes, interfaces, annotations and SPI definitions
  • sindi-ai-mcp-server-runtime: Runtime implementation of the SPI for runtime server registration and service discovery.
  • sindi-ai-mcp-server-features: Production-ready MCP features, with some examples, showcasing the power of MCP, the Jakarta EE way.

With 2 runtimes implementations:

  • runtime-rest: This module contains the implementations of RESTful MCP server-side transports with Jakarta REST.

    • sindi-ai-mcp-server-runtime-rest-base: The Jakarta REST base package used by all Jakarta REST implementations mentioned below.
    • sindi-ai-mcp-server-runtime-rest-sse: The Jakarta REST implementation of MCP SSE transport.
    • sindi-ai-mcp-server-runtime-rest-streamable-http: The Jakarta REST implementation of MCP Streamable HTTP transport.
  • runtime-servlet: This module contains the implementations of web-based MCP server-side transports with Jakarta Servlet.

    • sindi-ai-mcp-server-runtime-servlet-sse: The Jakarta Servlet implementation of MCP SSE transport.
    • sindi-ai-mcp-server-runtime-servlet-streamable-http: The Jakarta Servlet implementation of MCP Streamable HTTP transport.

🚀 Quick Start

1. Add Dependencies

You need to either select the Servlet or REST runtime, within your application (but not both, as there might be an endpoint conflicts).

Add the required dependencies to your pom.xml.

  • For Servlet:
<dependency>
	<groupId>za.co.sindi</groupId>
	<artifactId>sindi-ai-mcp-server-runtime-servlet</artifactId>
	<version>${project.version}</version>
</dependency>

  • For REST:
<dependency>
	<groupId>za.co.sindi</groupId>
	<artifactId>sindi-ai-mcp-server-runtime-rest</artifactId>
	<version>${project.version}</version>
</dependency>

2. Define an MCP Feature Service

MCP Features can be registered either on simple POJO or CDI-managed bean.

The following MCP features are supported:

  • Tools: supported annotations are @Tool, @ToolArgument on methods. LangChain4J tool annotations are also supported. The method result must be of type String.
  • Prompts: supported annotations are @Prompt, @PromptArgument on methods. The method result must be of type PromptMessage or PromptMessage[].
  • Resource: supported annotation, @Resource (uri annotation attribute is mandatory) on methods. The method result must be of type ResourceContents[] (either of type BlobResourceContents or TextResourceContents).
  • Resource template: supported annotation, @ResourceTemplate (uri annotation attribute is mandatory) on methods. The method result must be of type ResourceTemplate[].

For more programmatic approach, you can register an MCP feature with its callback handler by injecting its appropriate manager to the MCP server runtime:

  • ToolManager: For tool registration.
  • PromptManager: For prompt registration.
  • ResourceManager: For resource and resource template registration.

Additionally, you can inject the following MCP resources:

  • MCPLogger: MCP Logging to client session (if enabled).
  • MCPContext: MCP Context, providing manual MCP features and client session.

📖 Examples

The project includes comprehensive examples for MCP servers, found in the examples/ directory. There are 2 examples, each demonstrating MCP on their various Jakarta EE server protocols (it bundles the sindi-ai-mcp-server-features module, exposing the MCP features on the respective Jakarta EE server protocols):

  • sindi-ai-mcp-server-rest: Running MCP server (bundled with the MCP features) on REST protocol.
  • sindi-ai-mcp-server-servlet: Running MCP server (bundled with the MCP features) on Servlet protocol.

🛠️ How to run examples

  1. Git clone the entire project.
  2. Build the project.
mvn clean package -e
  1. cd examples/sindi-ai-mcp-server-xxxx/, where xxxx can be either rest or servlet.

  2. Run the application as follows:

mvn clean liberty:dev -e
  1. Open a new terminal and start MCP Inspector.
npx -y @modelcontextprotocol/inspector@latest

The browser should automatically open with MCP Inspector.

  1. Copy the link and connect to your MCP server.

For SSE, the link should be http://localhost:9080/sse. For Streamable HTTP, the link should be http://localhost:9080/mcp.

Click connect on the MCP inspector and start testing your MCP features.

🤝 Contributing

If you want to contribute, please have a look at CONTRIBUTING.md.

📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

🌟 Getting Started

Ready to integrate AI into your enterprise Java application?

  1. Explore the examples: Start with the MCP-specific examples in the examples/ directory.
  2. Read the documentation: Check out individual module documentation for detailed configuration options
  3. Contribute: Help improve the project by reporting issues or submitting pull requests

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.