mcpField
S
sindi-ai-mcp-server

sindi-ai-mcp-server

本地服务
github.com/sinditech开发工具120 周前更新

关于 sindi-ai-mcp-server

面向 Jakarta EE 应用的 Java MCP 服务端实现,提供组件化结构,并支持 REST 与 Servlet 运行时。开发者可通过注解或管理器注册工具、提示词、资源和资源模板。

主要功能

  1. 01模块化服务端组件
  2. 02REST 与 Servlet 运行时
  3. 03SSE 与 Streamable HTTP 传输
  4. 04注解注册 MCP 功能
  5. 05支持工具、提示词与资源

适用场景

  1. 01将 MCP 功能集成到 Jakarta EE 应用
  2. 02通过 REST 或 Servlet 部署 MCP 服务端
  3. 03为 Java 服务注册工具、提示词和资源

MCP 相关

该项目实现 MCP 服务端,并通过 REST 或 Servlet 传输向 MCP 客户端提供工具、提示词、资源及资源模板。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

sindi-ai-mcp-server

Anthropic 的 Model Context Protocol(MCP)服务端 Java 实现。

此实现旨在以无缝方式将 MCP 协议集成到 Jakarta EE 应用中。

🏗️ 架构

项目由多个模块组成,每个模块各司其职:

核心模块
  • sindi-ai-mcp-server-spi:服务端 MCP 基础类、接口、注解和 SPI 定义
  • sindi-ai-mcp-server-runtime:SPI 的运行时实现,用于运行时服务注册和服务发现。
  • sindi-ai-mcp-server-features:适用于生产环境的 MCP 功能,并附带一些示例,展示以 Jakarta EE 方式使用 MCP 的强大能力。

包含 2 种运行时实现:

  • runtime-rest:此模块包含基于 Jakarta REST 的 RESTful MCP 服务端传输实现。

    • sindi-ai-mcp-server-runtime-rest-base:以下所有 Jakarta REST 实现使用的 Jakarta REST 基础包。
    • sindi-ai-mcp-server-runtime-rest-sse:MCP SSE 传输的 Jakarta REST 实现。
    • sindi-ai-mcp-server-runtime-rest-streamable-http:MCP Streamable HTTP 传输的 Jakarta REST 实现。
  • runtime-servlet:此模块包含基于 Jakarta Servlet 的 Web MCP 服务端传输实现。

    • sindi-ai-mcp-server-runtime-servlet-sse:MCP SSE 传输的 Jakarta Servlet 实现。
    • sindi-ai-mcp-server-runtime-servlet-streamable-http:MCP Streamable HTTP 传输的 Jakarta Servlet 实现。

🚀 快速开始

1. 添加依赖

你需要在应用中选择 Servlet 或 REST 运行时(不能同时选择两者,否则可能导致端点冲突)。

在 pom.xml 中添加所需依赖。

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

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

2. 定义 MCP 功能服务

MCP 功能可以注册在普通 POJO 或 CDI 管理的 Bean 上。

支持以下 MCP 功能:

  • Tools:支持在方法上使用 @Tool、@ToolArgument 注解。也支持 LangChain4J 工具注解。方法返回值必须为 String 类型。
  • Prompts:支持在方法上使用 @Prompt、@PromptArgument 注解。方法返回值必须为 PromptMessage 或 PromptMessage[] 类型。
  • Resource:支持在方法上使用 @Resource 注解(必须提供 uri 注解属性)。方法返回值必须为 ResourceContents[] 类型(可以是 BlobResourceContents 或 TextResourceContents 类型)。
  • Resource template:支持在方法上使用 @ResourceTemplate 注解(必须提供 uri 注解属性)。方法返回值必须为 ResourceTemplate[] 类型。

如果需要更具编程性的方式,可以将相应的管理器注入 MCP 服务运行时,并通过回调处理程序注册 MCP 功能:

  • ToolManager:用于注册工具。
  • PromptManager:用于注册提示词。
  • ResourceManager:用于注册资源和资源模板。

此外,还可以注入以下 MCP 资源:

  • MCPLogger:向客户端会话记录 MCP 日志(若已启用)。
  • MCPContext:MCP 上下文,提供手动注册 MCP 功能以及客户端会话的能力。

📖 示例

项目在 examples/ 目录中提供了全面的 MCP 服务示例。共有 2 个示例,分别展示如何在不同的 Jakarta EE 服务协议上使用 MCP(这些示例包含 sindi-ai-mcp-server-features 模块,并在相应的 Jakarta EE 服务协议上公开 MCP 功能):

  • sindi-ai-mcp-server-rest:在 REST 协议上运行 MCP 服务(包含 MCP 功能)。
  • sindi-ai-mcp-server-servlet:在 Servlet 协议上运行 MCP 服务(包含 MCP 功能)。

🛠️ 如何运行示例

  1. 克隆整个项目。
  2. 构建项目。
mvn clean package -e
  1. 执行 cd examples/sindi-ai-mcp-server-xxxx/,其中 xxxx 可以是 rest 或 servlet。

  2. 按如下方式运行应用程序:

mvn clean liberty:dev -e
  1. 打开一个新终端并启动 MCP Inspector。
npx -y @modelcontextprotocol/inspector@latest

浏览器应自动打开 MCP Inspector。

  1. 复制链接并连接到 MCP 服务。

对于 SSE,链接应为 http://localhost:9080/sse。 对于 Streamable HTTP,链接应为 http://localhost:9080/mcp。

在 MCP Inspector 中点击连接,然后开始测试 MCP 功能。

🤝 参与贡献

如果你想参与贡献,请参阅 CONTRIBUTING.md。

📄 许可证

本项目采用 Apache License 2.0 许可协议,详情请参阅 LICENSE 文件。

🌟 快速入门

准备好将 AI 集成到你的企业 Java 应用程序中了吗?

  1. 浏览示例:从 examples/ 目录中的 MCP 专用示例开始。
  2. 阅读文档:查看各模块的文档,了解详细的配置选项。
  3. 参与贡献:报告问题或提交拉取请求,帮助改进项目。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。