关于 Cortex MCP — Multi-Level Reasoning Server
Cortex MCP 是面向需要可调深度、结构化状态推理的客户端的 stdio 服务。它管理内存中的会话,并在推理工具之外提供提示词和实时轨迹资源。
主要功能
- 01四种可配置推理深度
- 02逐步或批量推理
- 03会话续接与回滚
- 04结构化观察与评估
- 05实时会话和轨迹资源
适用场景
- 01按指定深度分析问题
- 02继续或修订推理会话
- 03一次提交多个思考步骤
- 04查看会话轨迹
MCP 相关
它向 stdio MCP 客户端提供 `reasoning_think` 工具、七种提示词以及会话和轨迹资源。会话状态保存在内存中,并在进程重启时清除。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| level | enum | 否 | 深度级别。新会话必填。basic(1–3 步,2K 预算)、normal(4–8 步,8K 预算)、high(10–15 步,32K 预算)、expert(20–25 步,128K 预算)。basic | normal | high | expert |
| query | string | 否 | 要分析的问题或事项。 |
| runMode | enum | 否 | "step"(默认)或 "run_to_completion"(仅限 basic 级别)。step | run_to_completion |
| thought | any | 否 | 推理文本。按原样存储。step 模式下为字符串,批处理模式下为 string[]。 |
| sessionId | string | 否 | 用于继续会话的会话 ID。 |
| evaluation | string | 否 | 对假设的评议。 |
| hypothesis | string | 否 | 建议的下一个想法。 |
| observation | string | 否 | 当前步骤已知的事实。 |
| stepSummary | string | 否 | 用一句话概述该步骤。 |
| isConclusion | boolean | 否 | 在最终答案时提前结束会话。 |
| rollbackToStep | integer | 否 | 要回滚到的从 0 开始计数的索引。之后的思考将被丢弃。 |
| targetThoughts | integer | 否 | 精确的步骤数。必须在级别范围内。 |
详细介绍
Cortex MCP
支持多层推理的 MCP 服务,具备可配置的深度级别、基于会话的状态管理、结构化思考输入和实时跟踪资源。
概述
Cortex MCP 是一款仅通过 stdio 传输的 MCP 服务,用于执行有状态、深度可控的推理。src/index.ts 中的运行时入口将 createServer() 连接到 StdioServerTransport,而 src/server.ts 中的服务接口则围绕单一的基于会话的推理引擎启用工具、提示词、补全、日志记录和可订阅资源。
Inspector 确认的实时 MCP 接口包含 1 个工具、6 个具体资源、4 个资源模板和 7 个提示词。会话存储在内存中,并以 MCP 资源的形式公开;进程重启后会清除会话。
主要功能
reasoning_think支持分步会话、run_to_completion批量处理、回滚、提前得出结论,以及结构化的observation/hypothesis/evaluation输入。- 引擎内置四种深度级别:
basic、normal、high和expert,每种级别均设有思考范围和令牌预算上限。 - 提示词辅助功能提供
reasoning.basic、reasoning.normal、reasoning.high、reasoning.expert、reasoning.continue、reasoning.retry和get-help。 - 资源端点提供内部文档,以及实时会话列表、各会话的 JSON 视图、完整 Markdown 跟踪记录和单条思考文档。
- 通过
completable()和资源模板补全钩子,为级别、会话 ID 和思考名称提供补全功能。
要求
- 本地使用
npx或npm需要 Node.js>=24。 - 支持
stdio传输的 MCP 客户端。 - 可选:如果要构建或运行
Dockerfile定义的容器镜像,则需要 Docker。
快速开始
使用以下标准 MCP 客户端配置:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
客户端配置
在 VS Code 中安装
[](https://insiders.vscode.dev/redirect/mcp/install?name=cortex-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40j0hanz%2Fcortex-mcp%40latest%22%5D%7D)添加到 .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
或通过命令行安装:
code --add-mcp '{"name":"cortex-mcp","command":"npx","args":["-y","@j0hanz/cortex-mcp@latest"]}'
更多信息,请参阅 VS Code MCP 文档。
在 VS Code Insiders 中安装
添加到 .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
或通过命令行安装:
code-insiders --add-mcp '{"name":"cortex-mcp","command":"npx","args":["-y","@j0hanz/cortex-mcp@latest"]}'
更多信息,请参阅 VS Code Insiders MCP 文档。
在 Cursor 中安装
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 Cursor MCP 文档。
在 Visual Studio 中安装
添加到 mcp.json (VS integrated):
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 Visual Studio MCP 文档。
在 Goose 中安装
添加到 Goose extension registry:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 Goose MCP 文档。
在 LM Studio 中安装
添加到 LM Studio MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 LM Studio MCP 文档。
在 Claude Desktop 中安装
添加到 claude_desktop_config.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 Claude Desktop MCP 文档。
在 Claude Code 中安装
添加到 Claude Code CLI:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
或通过命令行安装:
claude mcp add cortex-mcp -- npx -y @j0hanz/cortex-mcp@latest
更多信息,请参阅 Claude Code MCP 文档。
在 Windsurf 中安装
添加到 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息,请参阅 Windsurf MCP 文档。
在 Amp 中安装
添加到 Amp MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
或通过命令行安装:
amp mcp add cortex-mcp -- npx -y @j0hanz/cortex-mcp@latest
更多信息,请参阅 Amp MCP 文档。
在 Cline 中安装
添加到 cline_mcp_settings.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
For more info, see Cline MCP 文档.
在 Codex CLI 中安装
添加到 ~/.codex/config.yaml or codex CLI:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Codex CLI MCP 文档。
在 GitHub Copilot 中安装
添加到 .vscode/mcp.json:
{
"servers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 GitHub Copilot MCP 文档。
在 Warp 中安装
添加到 Warp MCP config:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Warp MCP 文档。
在 Kiro 中安装
添加到 .kiro/settings/mcp.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Kiro MCP 文档。
在 Gemini CLI 中安装
添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Gemini CLI MCP 文档。
在 Zed 中安装
添加到 ~/.config/zed/settings.json:
{
"context_servers": {
"cortex-mcp": {
"settings": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
}
更多信息请参阅 Zed MCP 文档。
在 Augment 中安装
添加到 VS Code settings.json:
在 VS Code 的
settings.json中,将其添加到augment.advanced下。
{
"augment.advanced": {
"mcpServers": [
{
"id": "cortex-mcp",
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
]
}
}
更多信息请参阅 Augment MCP 文档。
在 Roo Code 中安装
添加到 Roo Code MCP settings:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Roo Code MCP 文档。
在 Kilo Code 中安装
添加到 Kilo Code MCP settings:
{
"mcpServers": {
"cortex-mcp": {
"command": "npx",
"args": ["-y", "@j0hanz/cortex-mcp@latest"]
}
}
}
更多信息请参阅 Kilo Code MCP 文档。
使用场景
在合适的深度启动有界推理
当客户端需要以提示词优先的方式开始时,可使用 reasoning.basic、reasoning.normal、reasoning.high 或 reasoning.expert;也可以直接调用 reasoning_think,并提供 query、level 和第一个 thought。每个响应都会返回当前会话状态,以及一段说明客户端如何继续的 summary 字符串。
相关工具:reasoning_think
相关提示词:reasoning.basic、reasoning.normal、reasoning.high、reasoning.expert
继续、重试或批量处理活跃会话
重复使用 sessionId 以继续先前的跟踪;如果已有剩余的 thought 输入,则切换到 runMode="run_to_completion";也可以使用继续和重试提示词来生成下一次调用所需的有效负载。处理程序还支持 rollbackToStep 和 isConclusion,用于修订跟踪或提前结束跟踪。
相关工具:reasoning_think
相关提示词:reasoning.continue、reasoning.retry
检查实时跟踪,而不重新运行工具
读取 reasoning://sessions 获取活跃会话列表,读取 reasoning://sessions/{sessionId} 获取 JSON 详情视图,读取 reasoning://sessions/{sessionId}/trace 获取 Markdown 记录,或读取 reasoning://sessions/{sessionId}/thoughts/{thoughtName} 获取单个 thought。这样,客户端就可以独立于下一次工具调用来展示进度或审计会话。
相关资源:reasoning://sessions、reasoning://sessions/{sessionId}、reasoning://sessions/{sessionId}/trace、reasoning://sessions/{sessionId}/thoughts/{thoughtName}
架构
[MCP Client]
|
| stdio
v
[src/index.ts]
createServer()
-> new StdioServerTransport()
-> server.connect(transport)
|
v
[src/server.ts]
McpServer("cortex-mcp")
capabilities:
- tools
- prompts
- completions
- logging
- resources { subscribe: true, listChanged: true }
|
+--> tools/call
| -> reasoning_think
| -> src/tools/reasoning-think.ts
| -> ReasoningThinkInputSchema / ReasoningThinkToolOutputSchema
| -> src/engine/reasoner.ts
| -> SessionStore
|
+--> prompts/get
| -> src/prompts/index.ts
|
+--> resources/read
| -> src/resources/index.ts
| -> internal://* and reasoning://sessions/*
|
+--> notifications
-> logging messages
-> resources/list_changed
-> resources/updated
-> notifications/progress
请求生命周期
[Client] -- initialize --> [Server]
[Server] -- serverInfo + capabilities --> [Client]
[Client] -- notifications/initialized --> [Server]
[Client] -- tools/call {name: "reasoning_think", arguments} --> [Handler]
[Handler] -- validate args --> [Reasoner + SessionStore]
[Reasoner] -- progress/resource events --> [Server notifications]
[Handler] -- structuredContent + optional trace resource --> [Client]
MCP 接口
工具
reasoning_think
用于创建和继续多步骤会话的有状态推理工具。支持单步交互调用、run_to_completion 批处理、结构化的观察/假设/评估输入、回滚,以及提前得出结论,同时返回结构化会话状态。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | string | 否 | 要分析的问题。 |
level | string | 否 | 深度级别。新建会话时必填。basic(1–3 步,2K 预算)、normal(4–8 步,8K 预算)、high(10–15 步,32K 预算)、expert(20–25 步,128K 预算)。 |
targetThoughts | integer | 否 | 精确步数。必须在级别范围内。 |
sessionId | string | 否 | 要继续的会话 ID。 |
runMode | string | 否 | "step"(默认)或 "run_to_completion"。 |
thought | any | 否 | 推理文本。按原样存储。step 模式下为字符串,批处理模式下为 string[]。 |
isConclusion | boolean | 否 | 在给出最终答案时提前结束会话。 |
rollbackToStep | integer | 否 | 要回滚到的 0 起始索引。丢弃后续推理。 |
stepSummary | string | 否 | 一句话概括步骤。 |
observation | string | 否 | 此步骤已知的事实。 |
hypothesis | string | 否 | 提出的下一步思路。 |
evaluation | string | 否 | 对假设的评估。 |
数据流
1. [Client] -- tools/call {name: "reasoning_think", arguments} --> [Server]
Transport: stdio
2. [Server] -- dispatch("reasoning_think") --> [Handler: src/tools/reasoning-think.ts]
3. [Handler] -- validate(ReasoningThinkInputSchema) --> [src/engine/reasoner.ts]
4. [Reasoner] -- create/update session --> [src/engine/session-store.ts]
5. [Handler] -- structuredContent + optional embedded trace resource --> [Client]
| 资源 | URI 或模板 | MIME 类型 | 描述 |
|---|---|---|---|
server-instructions | internal://instructions | text/markdown | MCP 服务的使用说明。 |
server-config | internal://server-config | application/json | 推理服务的运行时限制和级别配置。 |
tool-catalog | internal://tool-catalog | text/markdown | 工具参考:模型、参数、输出、数据流。 |
tool-info | internal://tool-info/{toolName} | text/markdown | 各工具的契约详情。 |
tool-info-reasoning_think | internal://tool-info/reasoning_think | text/markdown | reasoning_think 的契约详情。 |
workflows | internal://workflows | text/markdown | 推荐的工作流和工具调用顺序。 |
reasoning.sessions | reasoning://sessions | application/json | 活跃推理会话及其摘要列表。随着会话进展实时更新。 |
reasoning.session | reasoning://sessions/{sessionId} | application/json | 单个推理会话的详细视图,包括所有思考内容和元数据。 |
reasoning.trace | reasoning://sessions/{sessionId}/trace | text/markdown | 推理会话的 Markdown 轨迹(完整内容)。 |
reasoning.thought | reasoning://sessions/{sessionId}/thoughts/{thoughtName} | text/markdown | 单条思考内容的 Markdown 内容(例如 Thought-1)。 |
提示词
| 提示词 | 参数 | 描述 |
|---|---|---|
get-help | 无 | 返回服务使用说明。 |
reasoning.basic | query 必填,targetThoughts 可选 | 基础深度推理(1-3 条思考)。 |
reasoning.normal | query 必填,targetThoughts 可选 | 普通深度推理(4-8 条思考)。 |
reasoning.high | query 必填,targetThoughts 可选 | 高深度推理(10-15 条思考)。 |
reasoning.expert | query 必填,targetThoughts 可选 | 专家级深度推理(20-25 条思考)。 |
reasoning.continue | sessionId 必填,query 可选,level 可选 | 继续现有会话。可选提供后续查询。 |
reasoning.retry | query 必填,level 必填,targetThoughts 可选 | 使用修改后的参数重试失败的推理任务。 |
MCP 能力
| 能力 | 状态 | 依据 |
|---|---|---|
tools | 已确认 | src/server.ts:203-205, src/tools/reasoning-think.ts:479 |
prompts | 已确认 | src/server.ts:205, src/prompts/index.ts:201 |
completions | 已确认 | src/server.ts:207, src/prompts/index.ts:249, src/resources/index.ts:375 |
logging | 已确认 | src/server.ts:204, src/server.ts:98 |
resources.subscribe | 已确认 | src/server.ts:208, src/server.ts:121 |
resources.listChanged | 已确认 | src/server.ts:208, src/server.ts:114 |
progress notifications | 已确认 | src/lib/mcp.ts:71, src/tools/reasoning-think.ts:424 |
工具注解
| 注解 | 值 | 依据 |
|---|---|---|
readOnlyHint | false | src/tools/reasoning-think.ts:500 |
destructiveHint | false | src/tools/reasoning-think.ts:502 |
openWorldHint | false | src/tools/reasoning-think.ts:503 |
idempotentHint | false | src/tools/reasoning-think.ts:501 |
结构化输出
reasoning_think声明了outputSchema并返回structuredContent;当跟踪信息足够小时,还会嵌入跟踪资源。依据:src/tools/reasoning-think.ts:498,src/lib/mcp.ts:97-114。
配置
| 变量 | 默认值 | 必需 | 依据 |
|---|---|---|---|
CORTEX_SESSION_TTL_MS | 1800000(30 分钟) | 否 | src/engine/reasoner.ts:22, src/engine/session-store.ts:19 |
CORTEX_MAX_SESSIONS | 100 | 否 | src/engine/reasoner.ts:23, src/engine/session-store.ts:20 |
CORTEX_MAX_TOTAL_TOKENS | 2000000 | 否 | src/engine/reasoner.ts:24, src/engine/session-store.ts:21 |
CORTEX_MAX_ACTIVE_REASONING_TASKS | 32 | 否 | src/engine/config.ts:41-44 |
CORTEX_REDACT_TRACE_CONTENT | false | 否 | src/engine/config.ts:21 |
说明
源代码未定义任何 HTTP 主机/端口配置。其他唯一与环境相关的信号是 Docker 镜像中的
NODE_ENV=production,以及本地dev:run脚本中的--env-file=.env。
安全性
| 控制项 | 状态 | 依据 |
|---|---|---|
| 输入验证 | 已确认 | src/schemas/inputs.ts:13, src/schemas/outputs.ts:46, src/prompts/index.ts:207 |
| stdout 安全的日志回退机制 | 已确认 | src/server.ts:98, src/server.ts:145 |
| 仅在主线程运行 | 已确认 | src/index.ts:15-25 |
| 非 root 容器用户 | 已确认 | Dockerfile:37 |
说明
当前源代码未实现身份验证、OAuth、HTTP 来源检查或速率限制控制,因为该服务仅公开 stdio 传输方式。
开发
| 脚本 | 命令 | 用途 |
|---|---|---|
dev | tsc --watch --preserveWatchOutput | 在开发期间监视并编译源代码。 |
dev:run | node --env-file=.env --watch dist/index.js | 以监视模式运行构建后的服务,并可选择使用本地 .env 文件。 |
build | node scripts/tasks.mjs build | 清理 dist、编译 TypeScript、复制资源,并将入口文件设为可执行。 |
lint | eslint . | 在整个代码库中运行 ESLint。 |
type-check | node scripts/tasks.mjs type-check | 并行运行源代码和测试的 TypeScript 检查。 |
test | node scripts/tasks.mjs test | 使用已配置的加载器运行 TypeScript 测试套件。 |
test:dist | node scripts/tasks.mjs test:dist | 先重新构建,然后针对构建产物运行测试。 |
test:fast | node --test --import tsx/esm src/__tests__/**/*.test.ts node-tests/**/*.test.ts | 直接运行快速测试命令,不使用任务封装器。 |
format | prettier --write . | 格式化代码库。 |
inspector | npm run build && npx -y @modelcontextprotocol/inspector node dist/index.js | 构建服务并在 MCP Inspector 中打开。 |
prepublishOnly | npm run lint && npm run type-check && npm run build | 发布前执行必要的检查。 |
package.json 中还定义了用于诊断、覆盖率、资源复制和 knip 的辅助脚本。
构建与发布
.github/workflows/release.yml会更新package.json和server.json,然后运行npm run lint、npm run type-check、npm run test和npm run build,再添加标签并创建 GitHub 发布版本。- 同一工作流会通过 Trusted Publishing 将包发布到 npm,通过
mcp-publisher发布到 MCP Registry,并将多架构 Docker 镜像推送到ghcr.io。 Dockerfile使用多阶段 Node 24 Alpine 构建,清理开发依赖,并以mcp用户运行已发布的容器。
故障排除
- 会话存储在内存中,默认 30 分钟后过期。如果收到
E_SESSION_NOT_FOUND,请启动新会话或增大CORTEX_SESSION_TTL_MS。 runMode="run_to_completion"需要足够数量的thought条目来覆盖剩余步骤。如果希望服务在每一步后返回,请保留默认的step模式。- 对于 stdio 传输,请勿在服务进程周围添加自定义 stdout 日志。此服务通过 MCP 日志记录日志,发生故障时则回退到
stderr。
致谢
| 依赖项 | 注册表 |
|---|---|
| @modelcontextprotocol/sdk | npm |
| zod | npm |
贡献与许可证
- 许可证:MIT
- 欢迎通过拉取请求贡献代码。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。