返回市场
夸克斯-MCP-代理型

夸克斯-MCP-代理型

作者:jamesfalkner2 星标更新:2025-04-04

项目介绍

Quarkus + MCP = Agentic

该项目使用Quarkus(超音速亚原子Java框架)和模型上下文协议来实现一个简单的代理应用程序,该应用使用多个MCP服务器和Quarkus + LangChain4j。

如需了解更多关于Quarkus的信息,请访问其官方网站:https://quarkus.io/

在开发模式下运行应用程序

你需要安装nodenpm(用于启动mcp服务)。请按照推荐的方式为你的系统安装。

如果你希望看到内置的遥测数据,还需要有一个容器环境可用(例如Podman或Docker),一旦应用程序启动,你可以通过Dev UI找到Grafana链接来访问这些数据。如果没有容器环境,请在application.properties中注释掉与遥测相关的部分。

如果你想使用filesystem MCP服务器,请在克隆的根目录创建一个名为playground的目录(或者更改application.properties中的名称,但目录必须存在)

几个MCP服务需要API密钥。以下是获取这些密钥的链接:

一旦你有了所有这些信息,最简单的方法是在克隆的根目录创建一个名为.env的文件(此文件列在.gitignore中,因此不会被推送到GitHub,如果你fork了这个仓库并创建了文件)。.env文件应如下所示:

quarkus.langchain4j.mcp.bravesearch.environment.BRAVE_API_KEY=<YOUR BRAVE API KEY HERE>
quarkus.langchain4j.mcp.googlemaps.environment.GOOGLE_MAPS_API_KEY=<YOUR GMAPS API KEY HERE>
quarkus.langchain4j.mcp.slack.environment.SLACK_BOT_TOKEN=<YOUR SLACK BOT TOKEN HERE>
quarkus.langchain4j.mcp.slack.environment.SLACK_TEAM_ID=<YOUR SLACK TEAM ID HERE>
quarkus.langchain4j.openai.api-key=<YOUR OPENAI API KEY HERE>

当你在开发模式下运行Quarkus时,这些变量会自动包含进来。你也可以直接将它们放入application.properties中,但请注意不要将它们提交到公共源代码库!

对于生产用途,显然应该以不同的方式处理这些密钥,存储在安全的地方,如金库或Kubernetes Secrets,并在运行时作为环境变量注入。

但在测试阶段,你可以使用以下命令在开发模式下运行应用程序,启用实时编码:

./mvnw compile quarkus:dev

在开发模式下,你可以通过访问“扩展”并点击“聊天”来与配置的LLM进行对话。你会发现在Bot.java的内容中预填充了系统消息。

注意: Quarkus现在附带了一个开发UI,仅在开发模式下可通过http://localhost:8080/q/dev/访问。

测试应用程序

有一个简单的前端应用程序来测试助手——访问http://localhost:8080,你应该能看到:

首页

点击左下角的聊天框图标,发出一些示例提示,看看它是如何利用代理推理调用各种工具的:

我的名字是John Doe。我自己和Daniel Jane组成了一个两人团队。我喜欢亚洲食物,而Daniel则严格遵循无麸质饮食。

请在佐治亚州亚特兰大找一家评分最高的餐厅,满足我们团队的饮食需求和偏好。然后,使用Slack频道"#lunchtime"邀请团队下周三中午12点共进午餐。在你的消息中包括餐厅的名字和描述、午餐的时间和日期,以及从佐治亚世界会议中心出发的驾驶方向。同时,在"playground/calendar"目录中为我创建一个ICS日历文件,以便在我的日历中使用。

还有一些更简单的后续提示,比如:

  • 你是如何得出那个建议的?
  • 你是如何选择这家餐厅的?
  • 对于每个步骤,你采取了哪些行动,使用了哪些工具?
  • 为什么你要搜索无麸质餐厅?
  • 你记得团队中每个人的哪些信息?

在开发模式下,你还可以通过访问“扩展”并点击“聊天”来与配置的LLM进行对话。你会发现在Bot.java的内容中预填充了系统消息。

注意: Quarkus现在附带了一个开发UI,仅在开发模式下可通过http://localhost:8080/q/dev/访问。

打包和运行应用程序

可以使用以下命令打包应用程序:

./mvnw package

这将在target/quarkus-app/目录中生成quarkus-run.jar文件。请注意,这不是一个_über-jar_,因为依赖项被复制到了target/quarkus-app/lib/目录中。

现在可以通过java -jar target/quarkus-app/quarkus-run.jar运行应用程序。

如果你想构建一个_über-jar_,执行以下命令:

./mvnw package -Dquarkus.package.type=uber-jar

现在,打包成_über-jar_的应用程序可以通过java -jar target/*-runner.jar运行。

创建原生可执行文件

你可以使用以下命令创建原生可执行文件:

./mvnw package -Dnative

或者,如果你没有安装GraalVM,可以在容器中构建原生可执行文件:

./mvnw package -Dnative -Dquarkus.native.container-build=true

然后你可以使用以下命令执行你的原生可执行文件:./target/research-1.0-SNAPSHOT-runner

如需了解更多关于构建原生可执行文件的信息,请参阅https://quarkus.io/guides/maven-tooling。

相关指南

  • LangChain4j 模型上下文协议客户端(指南):提供LangChain4j的模型上下文协议客户端实现
  • LangChain4j OpenAI(指南):提供与LangChain4j的基本集成