介绍模型上下文协议服务器项目

今天,我很高兴推出模型上下文协议(MCP)服务器项目。

模型上下文协议是最近一种以良好解耦的方式,使AI模型能够与您的应用程序和服务进行交互的方法。

据我所知,mcp-servers项目是第一个使用Java实现的一套MCP服务器,并且至少是Quarkus独有的。

旨在展示模型上下文协议的功能,并为您使用它(尤其是在Java中)提供灵感。

服务器

在撰写本文时,已实现三个服务器

JDBC

让您的AI应用程序能够内省和交互任何JDBC兼容的数据库,无论是PostgreSQL、MySQL、MariaDB、SQLite、Oracle等。 JDBC服务器

文件系统

访问您计算机的文件系统,无论是您的主目录、代码目录、项目目录等。 文件系统服务器

JavaFX

在JavaFX画布上绘图,让您的AI为您绘制一些艺术品!基于@konczdev的想法 JavaFX服务器

每个服务器都使用Quarkus和Java实现,并且可以使用JBang轻松运行。用户无需安装Java、Quarkus或任何其他Java工具。

如何使用服务器

通用设置是安装JBang,最好使用包管理器,这样桌面应用程序更有可能在PATH中找到jbang

然后在您的MCP客户端中进行配置

jbang [server-name]@quarkiverse/quarkus-mcp-servers [arguments]

例如,要运行JDBC服务器连接到MariaDB数据库,您需要执行

jbang jdbc@quarkiverse/quarkus-mcp-servers jdbc:mariadb://:3306/test --user root --password mysecretpassword

或者使用可下载的Netflix电影SQLite数据库

jbang jdbc@quarkiverse/quarkus-mcp-servers jdbc:sqlite:%{https://github.com/lerocha/netflixdb/releases/download/v1.0.0/netflixdb.sqlite}

%{}语法是JBang在命令行中从URL下载文件并将其用作本地文件的一项功能。

同样,有jbang jfx@quarkiverse/quarkus-mcp-servers可以在JavaFX画布上绘图,以及jbang filesystem@quarkiverse/quarkus-mcp-servers [path]用于访问文件系统。

已测试的MCP客户端

在开发过程中,我们使用以下客户端测试了这些服务器

还有更多MCP客户端,我们相信这些服务器也能与更多客户端配合使用。

Goose值得一提,因为它开源并且既有桌面应用程序(在MacOS上),也有CLI工具。它最近宣布了对模型上下文协议的全面支持。

在这里,我将Goose配置为使用Northwind示例数据库中的SQLLite数据库,该配置存储在~/.config/goose/config.yaml

extensions:
  netflixdb:
  args:
    - jdbc@quarkiverse/quarkus-mcp-servers
    - jdbc:sqlite:%{https://github.com/lerocha/netflixdb/releases/download/v1.0.0/netflixdb.sqlite}
    cmd: jbang
    enabled: true
    envs: {}
    name: netflixdb
    type: stdio

注意:我们建议使用goose config来生成/编辑配置文件。

通过上面的配置,Goose将能够使用JDBC服务器连接到SQLLite数据库。

Goose using the JDBC server to connect to the SQLLite database

Quarkus MCP服务器的独特功能

这一切都很棒,但为什么要在MCP服务器实现中使用Quarkus?

首先,Quarkus提供的编程模型非常强大,可以让你轻松地专注于应用程序的业务逻辑。有关如何实现服务器的详细信息,请参阅之前的博文,或者查看JDBC服务器的代码。注意它有多简洁!

其次,庞大的Java生态系统提供了JDBC驱动程序等功能,使我们能够创建一个与任何JDBC兼容数据库协同工作的单一服务器。我们使用jbang动态下载正确的JDBC驱动程序,然后启动quarkus mcp服务器。类似地,对于jfx,我们也获取正确的特定于OS的JavaFX依赖项。

第三,能够将服务器作为本地可执行文件运行。在MCP服务器项目中,filesystem服务器已作为本地可执行文件发布,您可以下载它并获得更快的启动时间。

关于如何使用Quarkus开发模式与MCP服务器以及进行测试,还有许多有趣的事情即将到来——但这将在另一篇博文中介绍。

JBang是必需的还是不?

JBang通常不是运行MCP服务器所必需的,但它大大简化了操作,并使得任何人,特别是非Java开发人员,都能够使用这些服务器。

当然,您可以像运行普通Java应用程序一样运行一个简单的MCP服务器,但那样您需要安装正确版本的Java,下载服务器及其依赖项,然后像java -jar [path to server jar]一样运行它。

对于MCP服务器项目,我们选择使用JBang,因为它超越了常规用法,并利用JBang动态获取驱动程序和特定于OS的依赖项。没有JBang,这将非常困难,甚至不可能使其易于使用。

天空才是极限!

模型上下文协议为使用您喜爱的编程语言和框架,通过您的应用程序数据构建智能应用程序开辟了令人兴奋的可能性。借助Quarkus MCP服务器,您拥有一个强大的基础,可以创建自己的Java服务器,将AI与您能想象到的任何数据源或系统连接起来。

无论您是想连接到您喜欢的数据库、与您公司的内部系统集成,还是构建全新的东西——天空确实是您的极限!使用Quarkus实现MCP服务器的简单性意味着您可以专注于创意方面,而不是繁琐的设置。

我们很想看到您的作品!请发表评论,或考虑通过Quarkiverse MCP服务器项目将您的MCP服务器贡献给社区。您的实现可以帮助他人解决类似问题,或激发他们创造更美好的事物。

那么,您还在等什么?获取代码,启动您的IDE,今天就开始构建您自己的MCP服务器吧。AI驱动的应用程序的未来就在这里,您可以成为塑造它的参与者!

玩得开心!

附注:下周四,2月6日,我们将举办一个MCP服务器洞察活动,届时我们将讨论Quarkus项目中的MCP服务器和客户端SDK,以及如何使用它来构建您自己的MCP服务器并扩展您融入AI的应用程序。