Quarkus + MCP = Agentic
这个项目使用 Quarkus 和模型上下文协议 (Model Context Protocol) 来实现一个简单的 Agentic 应用,该应用使用多个 MCP 服务器以及 Quarkus + LangChain4j。
jamesfalkner
README
Quarkus + MCP = Agentic
本项目使用 Quarkus (超音速亚原子 Java 框架) 和 模型上下文协议 来实现一个简单的 agentic 应用,该应用使用多个 MCP 服务器和 Quarkus + LangChain4j。
如果您想了解更多关于 Quarkus 的信息,请访问其网站:https://quarkus.io/ 。
在开发模式下运行应用程序
您需要安装 node
和 npm
(用于启动 mcp 服务)。请按照推荐的方式为您的系统安装。
如果您想查看内置的遥测数据,您还需要一个可用的容器环境(例如 Podman 或 Docker),您可以在应用程序启动后通过访问 Dev UI 并找到 Grafana 链接来访问遥测数据。如果您没有容器环境,请注释掉 application.properties
中处理遥测的部分。
如果您希望使用 filesystem
MCP 服务器,请在克隆的根文件夹中创建一个名为 playground
的目录(或者在 application.properties
中更改名称为其他名称,但该目录必须存在)。
一些 MCP 服务需要 API 密钥。以下是获取密钥的链接:
- Brave 网页搜索
- Open AI
- Google Maps
- Slack (按照说明获取以
xoxb-
开头的 Bot User OAuth Token 和您的 Team ID)
一旦您拥有了所有这些,最简单的方法是在您的克隆中创建一个名为 .env
的文件(此文件已列在 .gitignore
中,因此如果您 fork 此 repo 并创建该文件,则不会将其推送到 GitHub)。.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>
当您在 Dev 模式下运行 Quarkus 时,这些变量将自动包含在内。您也可以将它们直接放在 application.properties
中,但请注意不要将它们检入公共源代码存储库!
对于生产用途,这些变量显然应该以不同的方式处理,存储在诸如 vaults 或 kubernetes Secrets 之类的安全位置,并在运行时作为环境变量注入。
但对于测试,您可以使用以下命令在开发模式下运行您的应用程序,该模式启用实时编码:
./mvnw compile quarkus:dev
在 Dev 模式下,您可以通过转到 "Extensions" 并单击 "Chat" 来使用 Dev UI 与您配置的 LLM 聊天。您会发现系统消息已从 Bot.java 的内容中预先填充。
注意: Quarkus 现在附带一个 Dev UI,该 UI 仅在开发模式下可用,网址为 http://localhost:8080/q/dev/。
测试应用程序
有一个简单的前端应用程序来测试助手 - 访问 http://localhost:8080
,您应该会看到:
单击左下角的聊天框图标,并发出一些示例提示,以查看它如何使用代理推理来调用各种工具:
My name is John Doe. I am a member of a team of 2 myself and Daniel Jane. I like Asian food, while Daniel is on a strict gluten-free diet.
Please find one good restaurant in Atlanta, GA with the highest rating that meets
the team's dietary needs and preferences. Then, invite the team to a lunch
at 12pm next Wednesday using the slack channel "#lunchtime".
In your message, include the name and description of the restaurant, the time and
date of the lunch, and driving directions from Georgia World Congress Center.
Also create an ICS calendar file for me to use in my calendar in the
"playground/calendar" directory.`
以及一些更简单的后续提示,例如:
- What was the reasoning you used to arrive at that recommendation?
- How did you choose the restaurant?
- What actions did you take for each step and which tools did you use?
- Why did you search for gluten-free restaurants?
- What did you remember about each person on the team?
在 Dev 模式下,您还可以通过转到 "Extensions" 并单击 "Chat" 来使用 Dev UI 与您配置的 LLM 聊天。您会发现系统消息已从 Bot.java 的内容中预先填充。
注意: Quarkus 现在附带一个 Dev UI,该 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
现在可以使用 java -jar target/*-runner.jar
运行打包为 über-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。
相关指南
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。