该项目使用Quarkus(超音速亚原子Java框架)和模型上下文协议来实现一个简单的代理应用程序,该应用使用多个MCP服务器和Quarkus + LangChain4j。
如需了解更多关于Quarkus的信息,请访问其官方网站:https://quarkus.io/ 。
你需要安装node和npm(用于启动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。