MCP 协议支持
Cool Request 支持 Model Context Protocol (MCP) 协议,允许 AI 助手(如 Cursor、Claude Desktop 等)直接调用正在运行的 Java 应用中的方法。
什么是 MCP
MCP(Model Context Protocol)是一种开放协议,允许 AI 模型与外部工具和数据源进行交互。通过 Cool Request 的 MCP 支持,您可以让 AI 助手:
- 查询运行中的 Java 应用实例
- 调用任意 Java 方法(包括静态方法和实例方法)
- 获取方法执行结果
启用 MCP 服务器
步骤 1:打开设置
在 IDEA 中,选择 Cool Request > MCP
步骤 2:启用 MCP
勾选 Enable MCP Server,并设置端口号(默认为 8019)

步骤 3:确保应用运行
MCP 需要目标 Java 应用正在运行,并且已经加载了 Cool Request Agent。
配置 MCP 客户端
Cursor 配置
在 Cursor 的 MCP 配置文件中添加:
Windows: C:\Users\<用户名>\.cursor\mcp.json
macOS: ~/.cursor/mcp.json
{
"mcpServers": {
"cool-request": {
"url": "http://localhost:8019/message"
}
}
}
Claude Desktop 配置
在 Claude Desktop 配置文件中添加:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"cool-request": {
"url": "http://localhost:8019/message"
}
}
}
Claude CLI 配置
使用命令行快速添加 MCP 服务器:
claude mcp add --transport http cool-request http://localhost:8019/message
查看已添加的 MCP 服务器:
claude mcp list
移除 MCP 服务器:
claude mcp remove cool-request
Codex 配置
在 Codex 配置文件中添加(TOML 格式):
Windows: %USERPROFILE%\.codex\config.toml
macOS/Linux: ~/.codex/config.toml
[mcp_servers.cool-request]
url = "http://localhost:8019/message"
enabled_tools = ["callMethod", "getObjectInstances"]
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true
配置说明:
| 配置项 | 说明 |
|---|---|
url | MCP 服务器地址 |
enabled_tools | 启用的工具列表,留空则启用全部 |
disabled_tools | 禁用的工具列表(在 enabled_tools 之后应用) |
startup_timeout_sec | 启动超时时间(秒) |
tool_timeout_sec | 工具调用超时时间(秒) |
enabled | 是否启用此 MCP 服务器 |
配置完成后需要重启对应的 AI 客户端以使配置生效。
可用工具
Cool Request MCP 提供两个工具:
1. getObjectInstances
获取指定类在 JVM 中的所有实例对象。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| className | string | 是 | 全限定类名,如 com.example.UserService |
返回示例:
[
{
"hashCode": "0x1a2b3c4d",
"hashCodeDecimal": 439041101,
"className": "com.example.UserService",
"toString": "UserService@1a2b3c4d",
"mainClass": "com.example.Application",
"webPort": 8080
}
]
2. callMethod
调用 Java 方法,支持静态方法和实例方法。
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| className | string | 是 | 全限定类名 |
| methodName | string | 是 | 方法名 |
| parameters | array | 否 | 参数值数组,对象类型需传 JSON 字符串 |
| parameterTypes | array | 否 | 参数类型数组,如 ["java.lang.String", "int"] |
| targetHashCode | integer | 否 | 目标对象的 hashCode,实例方法必填 |
| isCallTargetObject | boolean | 否 | 是否调用目标对象方法,实例方法设为 true |
返回示例:
{
"success": true,
"result": "方法返回值"
}
使用示例
示例 1:调用静态方法
假设有以下 Java 类:
package com.example.util;
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
}
在 AI 助手中输入:
调用 com.example.util.MathUtils 的 add 方法,参数是 10 和 20
AI 会自动调用 callMethod 工具:
{
"className": "com.example.util.MathUtils",
"methodName": "add",
"parameters": [10, 20],
"parameterTypes": ["int", "int"]
}
示例 2:调用实例方法
假设有以下 Spring Service:
package com.example.service;
@Service
public class UserService {
public User getUserById(Long id) {
// ...
}
}
步骤 1:获取实例
在 AI 助手中输入:
获取 com.example.service.UserService 的所有实例
AI 会调用 getObjectInstances 工具并返回实例列表,包含 hashCode。
步骤 2:调用方法
调用 UserService 的 getUserById 方法,参数是 1
AI 会使用获取到的 hashCode 调用 callMethod:
{
"className": "com.example.service.UserService",
"methodName": "getUserById",
"parameters": [1],
"parameterTypes": ["java.lang.Long"],
"targetHashCode": 439041101,
"isCallTargetObject": true
}
示例 3:传递复杂对象参数
对于对象类型参数,需要传递 JSON 字符串:
public void createUser(User user) {
// ...
}
调用时:
{
"className": "com.example.service.UserService",
"methodName": "createUser",
"parameters": ["{\"name\":\"张三\",\"age\":25}"],
"parameterTypes": ["com.example.entity.User"],
"targetHashCode": 439041101,
"isCallTargetObject": true
}
常见问题
Q: MCP 服务器启动失败,提示端口被占用?
A: 修改 MCP 端口号,或关闭占用该端口的程序。