Camel CLI

Camel MCP 服务器

师成师成· 更新于 2026-09-28· 阅读 74 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Camel MCP Server

Camel MCP Server 让 AI 编码助手深入了解 Apache Camel。它通过 Model Context Protocol (MCP) 暴露完整的 Camel 目录——组件、EIP、数据格式、Kamelet、示例——以及用于实时 Camel 应用的运行时内省工具。

MCP 服务器运行后,你的 AI 助手即可查阅组件文档、校验端点与路由、生成测试脚手架、根据堆栈跟踪诊断错误、检查依赖、规划迁移、审查路由的安全隐患,并与运行中的 Camel 应用交互——无需你复制粘贴任何内容。

基于 Quarkus 构建,并使用了 quarkus-mcp-server 扩展。

快速开始

最快的上手方式:

  1. 安装 JBang(只需一次)
  2. 运行 camel mcp(或 jbang org.apache.camel:camel-jbang-mcp:LATEST:runner)
  3. 连接你的 AI 助手(参见下文的配置)

就这么简单——MCP 服务器会以 STDIO 传输方式启动,你的 AI 助手即可立即查询 Camel 目录、校验路由等等。

运行 MCP 服务器

运行 MCP 服务器有三种方式。

使用 Camel CLI(推荐)

camel mcp 命令将 MCP 服务器作为一等 CLI 命令启动:

camel mcp

这将以 STDIO 传输方式(默认)启动 MCP 服务器。要启用 HTTP 传输:

camel mcp --http
camel mcp --http --port 9090

有关所有可用标志,请参阅 camel mcp 选项。

直接使用 JBang

如果你已经安装了 JBang:

# STDIO transport (default)
jbang org.apache.camel:camel-jbang-mcp:LATEST:runner

# HTTP transport
jbang -Dquarkus.http.host-enabled=true -Dquarkus.http.port=8080 org.apache.camel:camel-jbang-mcp:LATEST:runner

使用 java -jar(无需 JBang)

从 Maven Central 下载 MCP 服务器的 uber-JAR 并直接运行:

# Download (replace VERSION with the desired Camel version, e.g., 4.21.0)
curl -O https://repo1.maven.org/maven2/org/apache/camel/camel-jbang-mcp/VERSION/camel-jbang-mcp-VERSION-runner.jar

# Run with STDIO transport
java -jar camel-jbang-mcp-VERSION-runner.jar

# Run with HTTP transport
java -Dquarkus.http.host-enabled=true -Dquarkus.http.port=8080 -jar camel-jbang-mcp-VERSION-runner.jar

传输方式

  • STDIO(默认)—— 通过 stdin/stdout 进行通信。日志输出到 stderr。
  • HTTP/SSE —— 面向基于 Web 的客户端以及远程/共享访问。可通过 --http 标志或 -Dquarkus.http.host-enabled=true 启用。支持两种变体:SSE(/mcp/sse,协议 2024-11-05)和可流式传输的 HTTP(/mcp,协议 2025-03-26,新集成推荐使用)。
MCP 服务器不会暴露 REST 端点——所有通信都通过 MCP 协议上的 JSON-RPC 完成。

设置

Claude Code(插件安装,推荐)

claude plugin marketplace add apache/camel
claude plugin install camel-mcp@camel-marketplace

手动配置(适用于所有 AI 工具)

将该服务器添加到你的 MCP 配置文件中。所有工具使用的 JSON 内容都相同,只有文件位置不同:

工具配置文件
Claude Code.mcp.json(项目级)或 ~/.claude/mcp.json(全局)
OpenAI CodexMCP 配置文件
VS Code / Copilot.vscode/mcp.json(顶层键需使用 "servers" 而非 "mcpServers")
JetBrains IDE(2025.1+)Settings > Tools > AI Assistant > MCP Servers,或 .junie/mcp.json
{
  "mcpServers": {
    "camel": {
      "command": "jbang",
      "args": [
        "-Dquarkus.log.level=WARN",
        "org.apache.camel:camel-jbang-mcp:LATEST:runner"
      ]
    }
  }
}
对于 VS Code,顶层键应使用 "servers" 而非 "mcpServers"。

使用 MCP Inspector 检查

先启动启用了 HTTP 的服务器,然后:

npx @modelcontextprotocol/inspector

打开 http://localhost:6274/,将 Transport Type 设为 SSE,URL 设为 http://localhost:8080/mcp/sse,Connection 设为 Via Proxy。

camel mcp 选项

选项默认值说明
--httpfalse启用 HTTP 传输(Streamable HTTP 和 SSE)。不指定此标志时,服务器使用 STDIO 传输。
--port8080HTTP 服务器端口(仅在使用 --http 时生效)。
--log-levelWARN日志级别:ERROR、WARN、INFO、DEBUG、TRACE。
--version(当前 Camel 版本)要使用的 Camel MCP 服务器版本,默认为 Camel CLI 的版本。

示例

以下是可以提供给 AI 助手的示例提示语。助手会自动选择合适的 MCP 工具。

目录探索

  • “哪个组件支持 MQTT?” —— 使用 camel_catalog_find
  • “显示 Kafka 组件的文档以及所有选项” —— 使用 camel_catalog_doc
  • “哪个 EIP 会把消息扇出到多个端点?” —— 使用带 kind=eip 的 camel_catalog_find(fan-out、dedup 和 rate-limit 等 EIP 别名均可匹配)
  • “显示所有 AWS 源 kamelet” —— 使用 camel_catalog_kamelets
  • “aws-s3-source 接受哪些选项?” —— 使用 camel_catalog_kamelet_doc
  • “显示适合初学者的 REST 示例” —— 使用 camel_catalog_examples

构建路由

让助手根据需求构建路由:

Build me a Camel route that generates a message every 5 seconds with a random number,
logs it, and sends it to a SEDA queue called "numbers".

助手会发现组件、查找文档、构建 YAML 路由,并使用 camel_validate_source 进行验证。使用 camel_build_integration 提示词可以获得结构化的多步骤工作流。

验证

  • 「验证这个端点:kafka:myTopic?brkers=localhost:9092」 —— 检测出拼写错误并建议改为 brokers
  • 「验证这个 YAML 路由」 —— 按照 YAML DSL JSON 模式进行检查,报告无效元素

理解、安全与测试

  • 「解释这个路由的作用」 —— 使用 camel_route_context 进行基于组件目录的增强分析
  • 「分析这个路由的安全隐患」 —— 使用 camel_route_harden_context 检测硬编码凭据、明文传输协议、已知 CVE 公告等
  • 「我的 Camel 4.10.1 项目是否受已知 CVE 影响?」 —— 使用 camel_security_advisories 将已发布的 Apache Camel 安全公告与特定的 Camel 版本或组件进行匹配
  • 「为这个路由生成一个 JUnit 5 测试」 —— 使用 camel_route_test_scaffold 生成包含 mock 端点和测试基础设施桩件的测试类

错误诊断

粘贴一段堆栈跟踪:

org.apache.camel.FailedToCreateRouteException: Failed to create route route1 at: >>> To[kafka:myTopic] <<<
Caused by: org.apache.camel.NoSuchEndpointException: No endpoint could be found for: kafka:myTopic

助手使用 camel_error_diagnose 来识别异常链、提取相关组件并给出修复建议(例如缺少 camel-kafka 依赖)。

依赖与版本

  • "检查我的 pom.xml 中是否有缺失或过时的依赖" — 使用 camel_dependency_check
  • "Spring Boot 目前最新的 LTS 版本是什么?" — 使用 camel_version_list
  • "org.postgresql.ds.PGSimpleDataSource 需要哪个依赖?在 Quarkus 上该如何添加?" — 使用 camel_dependency_for_class

迁移

  • "把我的项目迁移到最新版本(这是我的 pom.xml)" — 使用 camel_migration_analyze → camel_migration_compatibility → camel_migration_recipes
  • "Camel 4 中 direct-vm 有哪些变化?" — 使用 camel_migration_guide_search
  • "从 WildFly 迁移到 Quarkus" — 使用 camel_migration_wildfly_karaf 获取 archetype 命令和步骤
  • 使用 camel_migrate_project 提示词来编排多步骤的完整迁移工作流

OpenAPI 契约优先

  • "验证这份 OpenAPI 规范是否与 Camel 兼容" — 使用 camel_openapi_validate
  • "生成一个带 mock 模式的 Camel YAML 脚手架" — 使用 camel_openapi_scaffold
  • "展示 mock 目录结构" — 使用 camel_openapi_mock_guidance

将这三者组合起来,即可完成完整的原型开发工作流:先验证,再生成脚手架,然后逐条实现路由,其余部分由 Camel 进行 mock。

运行时内省

使用 camel run my-route.yaml 启动路由,然后提问:

  • "展示正在运行的 Camel 进程和路由统计信息" — 使用 camel_runtime_processes 和 camel_runtime_routes
  • "启用跟踪并展示被跟踪的消息" — 使用 camel_runtime_trace
  • "向 direct:start 发送一条测试消息" — 使用 camel_runtime_send
  • "哪些处理器最慢?" — 使用 camel_runtime_top
  • "浏览 seda:numbers 中的消息" — 使用 camel_runtime_browse

提示词(结构化工作流)

支持提示词的 MCP 客户端会将以下内容作为可选择的工作流提供:

  • camel_build_integration — 7 步引导式工作流:发现组件 → 选择 EIP → 构建 → 验证 → 安全审查
  • camel_migrate_project — 6 步迁移流程:分析 → 兼容性 → 迁移方案 → 指南检索 → 总结
  • camel_security_review — 3 步审计流程:分析漏洞 → 理解数据流 → 生成检查清单

可用工具

该服务器公开了一系列目录工具,用于探索组件、验证路由以及辅助迁移;还有运行时内省工具,用于检查和交互实时运行的 Camel 进程;此外还提供提示,给出结构化的多步骤工作流。

创作(与 Camel TUI 共享)

智能体构建和编辑集成所需的各种工具,只需在 Camel CLI 中定义一次,本服务器和 camel tui --mcp(参见 Camel TUI)都会以相同的 camel_ 名称对外暴露,因此智能体无论从哪个入口进入,得到的都是同一个 Camel。这些工具是自包含的:文件工具以项目的 directory 作为参数,运行时工具以集成的 name 作为参数(或者在仅有一个运行中集成时直接使用它)。

工具说明
camel_catalog_doc组件、数据格式、语言、EIP 或内置 Bean 的目录文档:描述、选项、Maven 坐标;对于组件,还会给出其端点 URI 的书写规则(哪些选项属于路径部分、YAML 的 uri 与 parameters 形式、占位符、RAW())。对于 simple 语言,给出语法规则、函数与运算符(按分组列出其数量与名称;若使用 optionsFilter,则列出匹配项及其参数和示例:分组名如 date 只给出该分组,运算符种类如 logical 只给出该种类,函数或运算符名称优先匹配,其余任意单词则匹配名称和描述);docPage 用于函数、运算符、OGNL 与高级页面。使用 endpoint 时,它会依据目录校验一个 URI:未知选项会给出最接近的真实名称、无效值、缺失的路径部分、生产端端点上出现的消费者选项。includeHeaders=true 会附加组件的消息头(CamelXxx 名称、其常量、类型以及消费者或生产者分组),includeDoc=true 则附加 AsciiDoc 页面。EIP 别名(fan-out、dedup、rate-limit)或其标题中的某个词可以找到该 EIP;此时答案会给出 matchedTerm。includeOptions 用于挑选所列选项:common(默认)排除已废弃和高级选项,并通过 omittedOptions 说明数量,required 列出必填项,all 列出全部,false 表示不列;optionsFilter 在选项的名称、描述和分组中匹配关键词,并搜索所有选项。使用 kind=api(或给出类名如 Exchange)时,它会返回 Bean 或脚本所调用的核心类的精简 API 参考:Exchange、Message、CamelContext、Registry、ProducerTemplate、Processor、AggregationStrategy、Predicate、Expression 和 TypeConverter,每个方法一行,包含签名、示例和常见错误(聚合策略首次调用时 oldExchange 为 null,Map 类型的 body 没有 ${body.type},Bean 名称不是 Groovy 变量,Camel 4 中没有 getOut())。该参考由 camel-api 中真实方法上的 @Metadata(label = "api") 注解生成,并随 camel-catalog(org/apache/camel/catalog/apis/)一起发布,因此不会出现偏差。给出脚本语言名称(groovy、js、python、python3、quickjs、java)或 template 时,返回该脚本可见的变量以及如何通过它们访问 Camel API;这些语言的语言文档带有相同的 scriptVariables。
camel_catalog_find按协议、产品、别名或其他并非精确名称的词(mqtt、s3、snowflake、csv、fan-out、dedup)查找组件、数据格式、语言和 EIP,最佳匹配排在前面,并给出标题和描述;kind 可将范围缩小到其中之一,bean 配合接口名(如 AggregationStrategy)则列出其内置实现。
camel_catalog_sample取自文档示例的、经过校验的 YAML DSL 示例,涵盖某个 EIP 或文件条目(onException、aggregate、split、rest、beans)、某个组件(kafka、file)、某个数据格式(csv)或某种语言(jq),并说明其位置:与路由并列的顶层条目、路由内部的步骤、from: 或 to: 中的端点 URI(组件的消费者或生产者一侧)、marshal/unmarshal 步骤,或某个步骤的表达式。名称可以是 kebab-case、另一个 EIP 的一部分(doCatch、when、onFallback 会显示整个结构)、该 EIP 的别名(fan-out、rate-limit,取自目录的 EIP 模型)或要做的事情(read file、call service、retry、batch);kind(eip、component、dataformat、language)仅在同名项分属多个类别时才需要(如 avro、file),否则答案会列出可供选择的类别。这些示例来自当前所用目录的文档,因此与其 Camel 版本一致:EIP 页面、组件页面及其子页面(优先给出使用该组件端点的示例)、数据格式或语言页面。文件条目来自构建所校验的用户手册示例(见 Camel YAML DSL Validator Maven Plugin 中的 generate-doc-samples)。limit 默认为 2,最多 5。建议在第一次编写之前,或在出现 not defined in the schema 校验错误之后使用它。
camel_validate_source无需写入即可校验 Camel YAML DSL 或 .properties 源码:YAML DSL 模式(如把 loggingLevel 拼写成 logLevel 这样的选项拼写错误)、端点 URI、simple 表达式以及 camel.* 选项。它接受内容,或从项目目录中读取文件。若指定 camelVersion(或在 TUI 中选择某个集成的版本),则由该 Camel 版本的目录和 YAML DSL 模式作答,模式从其 camel-yaml-dsl jar 中读取;未指定时则使用 CLI 自带的版本,无需下载任何内容。
camel_get_files项目目录中的源文件,包含子目录(跳过 target、.git 之类)。列表会说明该目录是 Maven 项目还是扁平文件夹,预先列出路由文件和配置文件(routeFiles、configFiles),并在选中某个集成时,说明其每条路由从哪个文件、哪一行加载而来,即把运行时位置(已导出项目的 jar 条目、classpath 或文件资源)映射回 src/main 下的源码。指定 file 时,返回相对于列表所标示目录的路径及其文件内容。
camel_write_file写入项目目录中某个文件的完整内容。YAML 和 .properties 内容会先校验;无效内容不会写入,而是返回错误(validate=false 则照样写入)。只接受目录中的纯文件名。写入前不会询问任何人:MCP 客户端(Claude Code、Cursor 等会在非只读工具运行前询问)才是人类所在之处,而安全层的 read-only 访问级别会直接隐藏该工具。
camel_run在单独的进程中通过 camel run --source-dir 从项目目录启动一个集成,默认处于开发模式:目录会被监视,因此被修改或新增的文件(路由、Bean 文件、Java 类)会重新加载。指定文件名可只运行它们,适用于存放多个应用的目录。集成启动后会返回其 pid、名称和日志文件。
camel_control控制正在运行的集成:stop、kill、restart(即使不在开发模式下也能拾取编辑过的文件)、reload(不重启、从文件重新加载路由,与 camel cmd reload 相同)、stop-routes、start-routes、reset-stats。
camel_get_log正在运行的集成的最近日志记录,最新的排在前面,可按级别或文本过滤;堆栈跟踪会作为一条记录并带有 detail 块返回。
camel_get_errors正在运行的集成中失败的交换(exchange):路由、交换、带堆栈跟踪的异常、消息体和消息头。

| camel_eval_expression | 在正在运行的集成中求值一个表达式(默认为 simple),未指定集成时在本地求值,并返回其值(谓词返回 true

目录浏览

工具描述
camel_catalog_docs列出目录的 AsciiDoc 文档页面名称(如 kafka-component、split-eip 等),支持子字符串过滤;使用 camel_catalog_doc 并设置 includeDoc=true 可返回具体页面内容。
camel_component_properties以 camel.component.<scheme>.<name> 形式列出某个 Camel 组件的有效配置属性键,包含选项名称、类型、默认值和描述。

Kamelet 目录

工具描述
camel_catalog_kamelets列出 Kamelet 目录中可用的 Kamelet,支持按名称、描述和类型(source、sink、action)进行过滤,并支持查询特定版本的 Kamelet 目录。
camel_catalog_kamelet_doc获取特定 Kamelet 的详细文档,包括所有属性/选项、其类型、默认值、示例以及该 Kamelet 的 Maven 依赖。

示例目录

工具描述
camel_catalog_examples列出可用的 Camel CLI 示例,支持按名称、描述或标签进行过滤(不区分大小写的子串匹配)。支持按难度级别过滤(beginner、intermediate、advanced),并可限制返回结果的数量。返回每个示例的名称、标题、描述、级别、标签以及文件列表。
camel_catalog_example_file获取 Camel CLI 示例中某个特定文件的内容。对于内置示例,直接返回文件内容;对于非内置示例,则返回该文件所在的 GitHub 链接。请先使用 camel_catalog_examples 来查找示例名称及其文件。

路由理解

工具描述
camel_route_context给定一条 Camel 路由(YAML、XML 或 Java DSL),提取其中使用的所有组件和 EIP,从目录中查询相关文档,并返回结构化的上下文信息。

测试脚手架

工具说明
camel_route_test_scaffold根据 Camel 路由定义(YAML 或 XML)生成 JUnit 5 测试骨架。接受可选的 format(yaml 或 xml,默认 yaml)和 runtime(main 或 spring-boot,默认 main)。对于 main 运行时,生成的测试继承 CamelTestSupport;对于 spring-boot,则使用带有 @SpringBootTest 的 @CamelSpringBootTest。该工具会将非平凡的生产者端点替换为 mock 端点,为基础设施组件(Kafka、JMS/Artemis、MongoDB、PostgreSQL、Cassandra、Elasticsearch、Redis、RabbitMQ、FTP、Consul、NATS、Pulsar、CouchDB、Infinispan、MinIO、Solr)生成 @RegisterExtension 桩代码,并针对基于定时器的路由生成 NotifyBuilder 模式,或针对 direct/seda 消费者生成 template.sendBody()。返回生成的测试代码、检测到的组件、mock 端点映射、测试基础设施服务以及所需的 Maven 测试依赖。

安全分析

工具描述
camel_route_harden_context分析路由中的安全隐患。识别安全敏感组件、分配风险等级、检测硬编码凭据或明文协议等问题,并返回结构化的安全发现结果,同时附带最佳实践建议以及在给定 Camel 版本下该路由所用组件已公开的 CVE 安全公告。
camel_security_advisories列出已公开的 Apache Camel CVE 安全公告(即 camel.apache.org/security 背后的数据),可按 Camel 版本、组件和严重程度进行可选过滤。每条公告包含摘要、受影响版本与已修复版本、缓解措施,以及针对给定 Camel 版本是否受影响的尽力而为的判定。可用它来回答诸如“我的 Camel 4.10.1 项目是否受已知 CVE 影响?”之类的问题。

安全公告数据

安全公告数据随 MCP 服务器内置的 Camel 目录一同发布,其数据在构建 Camel 时从官方公开的 Apache Camel 安全公告(camel.apache.org/security 的数据来源)同步而来——与已知发布版本的同步方式完全相同。因此,所有查询均可完全离线进行;数据仅包含已发布的公告,其新鲜程度取决于 MCP 服务器所用的 Camel 版本:该版本发布之后公布的公告不会包含在内,因此请查看网页以获取最新信息。当目录中不包含安全公告数据时,这些工具会报告数据不可用,而不是返回空列表,从而避免将缺失的数据集误认为“不存在已知 CVE”。这些公告也可以作为 MCP 资源浏览:camel://security/advisories(完整列表)和 camel://security/advisory/{cve}(单个 CVE 的详情)。

错误诊断

工具说明
camel_error_diagnose根据堆栈跟踪或错误信息诊断 Camel 错误。将异常类型与 17 个已知的 Camel 异常进行匹配(例如 NoSuchEndpointException、ResolveEndpointFailedException、FailedToCreateRouteException、PropertyBindingException 等),提取涉及的组件与 EIP,并返回常见原因、建议的修复方式以及相关 Camel 文档的链接。

依赖检查

工具说明
camel_dependency_check根据 pom.xml 和可选的路由定义,检查 Camel 项目的依赖健康状况。检测与最新目录版本相比是否使用了过期的 Camel 版本,识别路由中所用组件缺失的 Maven 依赖,并标记 Camel BOM 与显式依赖覆盖之间的版本冲突。返回可操作的建议以及修正后的依赖片段。

校验与转换

工具说明
camel_transform_route协助完成路由 DSL 格式在 YAML 与 XML 之间的转换。
camel_configuration_validate校验 Camel 配置属性行(例如来自 application.properties 的配置)。检测拼写错误的选项名、无效的值,并返回修正建议。
camel_properties_translate在各运行时(main、spring-boot、quarkus)之间转换 Camel 配置属性。可处理 HTTP 服务器、管理端点配置等运行时特有的配置键。

路由图

工具说明
camel_render_route_diagram根据源文件(YAML、XML、Java)生成 Camel 路由图。支持以 PNG 输出的图像主题(dark、light、transparent),以及直接返回的文本主题(ascii、unicode)。可用于可视化路由结构,便于评审、编写文档或排查问题。

OpenAPI 契约优先

从 Camel 4.6 起,基于 OpenAPI 规范构建 REST API 的推荐方式是契约优先:在运行时通过 rest:openApi 直接引用 OpenAPI 规范,而不是生成 REST DSL 代码。这些工具可帮助校验、搭建脚手架并为该工作流提供模拟指导。

工具描述
camel_openapi_validate验证 OpenAPI 规范是否与 Camel 的契约优先 REST 支持兼容。检查缺失的 operationId 字段、不受支持的安全方案、OpenAPI 3.1 的限制、webhooks 的使用以及空的路径。返回错误、警告和信息级别的诊断信息。
camel_openapi_scaffold为契约优先的 OpenAPI 集成生成 Camel YAML 脚手架。生成引用规范文件的 rest:openApi 配置块,以及针对每个操作的 direct:<operationId> 路由桩,并预配置了规范中定义的 Content-Type 和 CamelHttpResponseCode 头。支持配置 missingOperation 模式(fail、ignore 或 mock)。
camel_openapi_mock_guidance提供有关配置 Camel 的 missingOperation 模式(fail、ignore、mock)的指导。对于 mock 模式,返回 camel-mock/ 目录结构、由 API 路径派生的模拟文件路径以及规范中的示例内容。说明每种模式的行为。

迁移

工具说明
camel_migration_analyze分析 Camel 项目的 pom.xml,以检测运行时类型(main、spring-boot、quarkus、wildfly、karaf)、Camel 版本、Java 版本以及 Camel 组件依赖。这是迁移工作流的第一步。
camel_migration_compatibility通过提供相关的迁移指南 URL 和 Java 版本要求,检查 Camel 组件的迁移兼容性。大语言模型会查阅这些迁移指南,以获取详细的组件重命名映射和 API 变更信息。
camel_migration_recipes返回用于运行 Camel OpenRewrite 迁移配方(recipe)以完成版本升级的 Maven 命令。项目必须先编译成功,才能运行这些配方,因为 OpenRewrite 需要一个可编译的项目来解析和转换代码。
camel_migration_guide_search针对特定术语或组件名称,搜索 Camel 迁移与升级指南。返回官方指南中匹配的片段,包含版本信息和 URL。支持模糊匹配,可容忍拼写错误。查找迁移相关变更、被移除的组件、API 重命名或破坏性变更时,请使用此工具而非网络搜索。
camel_migration_wildfly_karaf为运行在 WildFly、Karaf 或基于 WAR 的应用服务器上的 Camel 项目提供迁移指导。返回用于创建新目标项目的 Maven archetype 命令、迁移步骤以及相关的迁移指南 URL。

版本管理

工具说明
camel_version_list列出指定运行时可用的 Camel 版本,包括发布日期、JDK 要求和 LTS 状态。

运行时内省

运行时工具需要一个通过 camel run 启动的正在运行的 Camel 应用。它们通过 ~/.camel/ 中基于文件的 IPC 协议与应用通信。所有工具都接受一个可选的 nameOrPid 参数;当省略该参数时,服务器会自动发现正在运行的 Camel 进程(仅在恰好有一个进程运行时有效)。

进程发现

工具说明
camel_runtime_processes列出所有可被检查的正在运行的 Camel 进程。为每个发现的进程返回 PID、名称和上下文名称。

上下文与路由

工具描述
camel_runtime_context获取 Camel 上下文信息:名称、版本、状态、运行时间、路由数量、Exchange 统计信息。
camel_runtime_routes列出 Camel 路由及其状态、运行时间、已处理消息数、最近错误以及吞吐量统计信息。
camel_runtime_route_source获取运行中的 Camel 应用程序里路由的源代码。支持通配符过滤。
camel_runtime_route_dump以 XML 或 YAML 格式导出路由定义。
camel_runtime_route_structure以处理器树的形式展示路由结构。
camel_runtime_route_control控制路由:通过路由 ID 启动、停止、挂起或恢复路由。
camel_runtime_route_topology获取路由间拓扑结构,展示各路由之间以及与外部端点的连接方式。返回描述路由图的节点和边。

可观测性

工具说明
camel_runtime_health获取 Camel 应用程序的健康检查状态。
camel_runtime_endpoints列出 Camel 上下文中注册的所有端点,包括其 URI 和使用统计信息。
camel_runtime_inflight显示当前在途的交换(正在处理中的消息)。
camel_runtime_blocked显示被阻塞的交换,即卡住或正在等待的交换。
camel_runtime_top显示顶级处理器统计信息:哪些处理器最慢、最活跃。
camel_runtime_memory显示 JVM 内存使用情况(堆内存/非堆内存)、垃圾回收统计和线程数。
camel_runtime_heap_histogram获取类级别的堆直方图,展示每个类的实例数量和字节占用。有助于诊断内存泄漏,并了解哪些类占据了堆的大部分空间。
camel_runtime_memory_leak使用 Java Flight Recorder (JFR) 诊断正在运行的 Camel 集成中的内存泄漏。使用命令 'start' 开始记录,'stop' 获取结果,'status' 检查状态,'query' 检索缓存的结果。支持双记录模式以便进行趋势对比。
camel_runtime_history获取最近完成的交换的消息历史跟踪记录。展示路由路径、经过的处理器、消息头、消息体和耗时信息。
camel_runtime_thread_dump获取 JVM 线程转储,展示线程名称、状态和堆栈跟踪信息。

数据、弹性与分析

工具说明
camel_runtime_sql针对正在运行的应用程序的 DataSource 执行 SQL 语句:SELECT 返回列和行,其他语句返回更新计数。让模型查看路由读取或写入的数据,或在将语句写入路由之前先进行尝试。
camel_runtime_datasources数据源连接池状态:活跃连接、空闲连接和总连接数,最大连接池大小以及等待中的线程数。
camel_runtime_sql_tracecamel-sql 和 camel-jdbc 组件已跟踪的 SQL 执行记录,包含耗时、行数、路由 ID 和失败状态。
camel_runtime_circuit_breakers熔断器状态(CLOSED/OPEN/HALF_OPEN)、调用次数、失败率以及未被允许的调用次数。
camel_runtime_metricsMicrometer 指标:计数器、仪表、计时器和分布统计(需要 --observe 或 camel-micrometer)。
camel_runtime_eip_stats所有路由中 EIP 的使用情况,包含处理器数量和性能数据。
camel_runtime_spansOpenTelemetry Span,包含跟踪 ID、持续时间、路由 ID 和状态(需要 --observe)。
camel_runtime_startup_steps启动记录器步骤,包含耗时、级别和类型(需要 camel.main.startup-recorder=true)。
camel_runtime_route_analysis针对每个路由的反模式和结构分析:错误处理、复杂度、组件使用情况。
camel_runtime_config_drift将正在运行的路由定义与源文件进行比较,以检测配置偏差。

配置与注册表

工具说明
camel_runtime_variables显示 Camel 上下文中的交换变量。
camel_runtime_consumers显示消费者统计信息(轮询消费者、事件驱动消费者)。
camel_runtime_properties显示正在运行的 Camel 应用程序的配置属性。
camel_runtime_services显示 Camel 服务注册表中已注册的服务。

交互与调试

工具说明
camel_runtime_send向运行中的应用程序里的 Camel 端点发送测试消息。
camel_runtime_trace为正在运行的 Camel 应用程序启用、禁用或转储消息跟踪。
camel_runtime_browse浏览 Camel 端点中的消息(例如,排队在 SEDA 端点中的消息)。
camel_runtime_receive从运行中的应用程序里的 Camel 端点接收(轮询)消息。从该端点消费一条消息。

可用提示(Prompt)

提示是结构化的多步骤工作流,用于引导 LLM 按正确顺序编排调用多个工具。LLM 无需自行判断应调用哪些工具以及以何种顺序调用,提示会以分步计划的形式提供完整的工作流。

支持提示的 MCP 客户端(如 Claude Desktop)会将提示作为可选择的工作流暴露出来。LLM 接收指令,并通过调用其中引用的工具来逐步执行每个步骤。

提示词参数说明
camel_build_integrationrequirements(必填)、runtime(可选)用于根据自然语言需求构建 Camel 集成的引导式工作流。依次执行七个步骤:识别组件、识别 EIP、获取组件文档、构建 YAML 路由、使用 YAML DSL 模式进行验证、执行安全审查,以及展示最终结果及其说明和运行指令。
camel_migrate_projectpomContent(必填)、targetVersion(可选)用于将 Camel 项目迁移到新版本的引导式工作流。依次执行六个步骤:分析项目的 pom.xml、确定目标版本、检查兼容性(包括检测 WildFly/Karaf)、获取 OpenRewrite 迁移配方、按组件搜索迁移指南中的破坏性变更,并生成包含阻塞项、破坏性变更、命令和手动步骤的结构化迁移摘要。
camel_security_reviewroute(必填)、format(可选)用于对 Camel 路由执行安全审计的引导式工作流。依次执行三个步骤:分析路由中的安全敏感组件和漏洞、理解路由结构与数据流,并生成一份可操作的审计清单,按关键问题、警告、正面发现、建议和合规说明进行分类整理。
camel_diagnose_routerouteId(可选)、symptom(可选)用于诊断运行中的 Camel 路由问题的引导式工作流:收集运行时状态、错误、健康状况和消息历史,并生成包含可操作修复方案的根因分析。
camel_optimize_routerouteId(可选)、goal(可选)用于优化 Camel 应用程序性能的引导式工作流:分析吞吐量、识别瓶颈、审查资源使用情况,并生成按优先级排序的优化建议。

评论

登录后参与评论

正在加载评论…