ids);
+
+ /**
+ * 更新工具状态
+ *
+ * @param id 工具 ID
+ * @param status 状态
+ */
+ void updateStatus(Long id, String status);
+
+ /**
+ * 测试工具连接
+ *
+ * @param id 工具 ID
+ * @return 测试结果
+ */
+ McpToolTestResult testTool(Long id);
+}
diff --git a/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolDefinition.java b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolDefinition.java
new file mode 100644
index 00000000..96890034
--- /dev/null
+++ b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolDefinition.java
@@ -0,0 +1,13 @@
+package org.ruoyi.mcp.service.core;
+
+/**
+ * 内置工具定义
+ * 用于描述系统内置的工具信息
+ *
+ * @param name 工具名称(唯一标识)
+ * @param displayName 显示名称
+ * @param description 工具描述
+ * @author ruoyi team
+ */
+public record BuiltinToolDefinition(String name, String displayName, String description) {
+}
diff --git a/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolProvider.java b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolProvider.java
new file mode 100644
index 00000000..d72922b0
--- /dev/null
+++ b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolProvider.java
@@ -0,0 +1,55 @@
+package org.ruoyi.mcp.service.core;
+
+/**
+ * 内置工具提供者接口
+ * 所有系统内置工具都应实现此接口,以便自动注册到 BuiltinToolRegistry
+ *
+ * @author ruoyi team
+ *
+ * 使用方式:
+ *
+ * {@code
+ * @Component
+ * public class MyTool implements BuiltinToolProvider {
+ * @Override
+ * public String getToolName() {
+ * return "my_tool";
+ * }
+ *
+ * @Override
+ * public String getDisplayName() {
+ * return "我的工具";
+ * }
+ *
+ * @Override
+ * public String getDescription() {
+ * return "工具描述...";
+ * }
+ * }
+ * }
+ *
+ */
+public interface BuiltinToolProvider {
+
+ /**
+ * 获取工具名称(唯一标识,用于数据库存储)
+ * 建议使用 snake_case 格式,如:list_directory, edit_file
+ *
+ * @return 工具名称
+ */
+ String getToolName();
+
+ /**
+ * 获取工具显示名称(用于 UI 展示)
+ *
+ * @return 显示名称
+ */
+ String getDisplayName();
+
+ /**
+ * 获取工具描述(用于 AI 理解工具用途)
+ *
+ * @return 工具描述
+ */
+ String getDescription();
+}
diff --git a/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolRegistry.java b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolRegistry.java
new file mode 100644
index 00000000..b3953b7f
--- /dev/null
+++ b/ruoyi-modules/ruoyi-mcp/src/main/java/org/ruoyi/mcp/service/core/BuiltinToolRegistry.java
@@ -0,0 +1,129 @@
+package org.ruoyi.mcp.service.core;
+
+import jakarta.annotation.PostConstruct;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 内置工具注册表
+ * 自动发现并注册所有实现 {@link BuiltinToolProvider} 接口的工具
+ *
+ * 工具注册流程:
+ *
+ * - Spring 自动注入所有 {@link BuiltinToolProvider} 实现
+ * - {@link #init()} 方法在 Bean 初始化后自动调用
+ * - 将所有工具注册到内部 Map
+ *
+ *
+ * 添加新工具只需:
+ *
+ * - 创建一个类实现 {@link BuiltinToolProvider} 接口
+ * - 添加 {@code @Component} 注解
+ * - 工具会自动被发现和注册
+ *
+ *
+ * @author ruoyi team
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class BuiltinToolRegistry {
+
+ /**
+ * 工具类型常量
+ */
+ public static final String TYPE_BUILTIN = "BUILTIN";
+
+ /**
+ * Spring 自动注入所有实现 BuiltinToolProvider 接口的 Bean
+ */
+ private final List toolProviders;
+
+ /**
+ * 内置工具定义映射表 (工具名称 -> 工具提供者)
+ */
+ private final Map registeredTools = new ConcurrentHashMap<>();
+
+ /**
+ * 初始化方法,在 Bean 创建后自动调用
+ * 将所有 BuiltinToolProvider 注册到内部 Map
+ */
+ @PostConstruct
+ public void init() {
+ log.info("开始注册内置工具,发现 {} 个工具提供者", toolProviders.size());
+
+ for (BuiltinToolProvider provider : toolProviders) {
+ String toolName = provider.getToolName();
+
+ if (registeredTools.containsKey(toolName)) {
+ log.warn("工具名称重复: {},将覆盖原有注册", toolName);
+ }
+
+ registeredTools.put(toolName, provider);
+ log.info("注册内置工具: {} ({})", toolName, provider.getDisplayName());
+ }
+
+ log.info("内置工具注册完成,共 {} 个工具", registeredTools.size());
+ }
+
+ /**
+ * 获取工具提供者
+ *
+ * @param toolName 工具名称
+ * @return 工具提供者,如果不存在则返回 null
+ */
+ public BuiltinToolProvider getToolProvider(String toolName) {
+ return registeredTools.get(toolName);
+ }
+
+ /**
+ * 检查工具是否已注册
+ *
+ * @param toolName 工具名称
+ * @return 是否已注册
+ */
+ public boolean hasTool(String toolName) {
+ return registeredTools.containsKey(toolName);
+ }
+
+ /**
+ * 获取所有内置工具定义
+ *
+ * @return 内置工具定义集合
+ */
+ public Collection getAllBuiltinTools() {
+ return registeredTools.values().stream()
+ .map(provider -> new BuiltinToolDefinition(
+ provider.getToolName(),
+ provider.getDisplayName(),
+ provider.getDescription()
+ ))
+ .toList();
+ }
+
+ /**
+ * 获取所有内置工具对象
+ * 这些对象包含 @Tool 注解的方法,可直接用于 AgenticServices
+ *
+ * @return 内置工具对象列表
+ */
+ public List