返回市场
思考-MCP服务器

思考-MCP服务器

作者:marcopesani20 星标更新:2025-08-02

项目介绍

think-mcp-server

smithery 徽章

基于Anthropic的“think”工具研究的最小MCP服务器

概述

该项目实现了一个最小的消息控制协议(MCP)服务器,提供给Claude AI模型使用“think”工具的能力。基于Anthropic于2025年3月20日发布的研究成果,此实现使Claude在涉及多步骤工具使用的复杂推理任务中表现更好。

“think”工具是什么?

“think”工具赋予Claude在达到最终答案的过程中包含额外思考步骤的能力,这个步骤有其独立的空间。与扩展思考(在响应生成之前发生)不同,“think”工具允许Claude在响应生成过程中暂停,考虑是否拥有继续所需的全部信息。

关键优势:

  • 提升复杂问题解决性能
  • 增强工具使用中的政策遵循性
  • 提高决策的一致性
  • 对需要仔细推理的多步骤问题有所帮助

实现

该服务器按照以下规范实现了“think”工具:

{
  "name": "think",
  "description": "使用工具进行思考。它不会获取新信息或更改数据库,只是将思考过程追加到日志中。当需要复杂的推理或一些缓存记忆时使用。",
  "input_schema": {
    "type": "object",
    "properties": {
      "thought": {
        "type": "string",
        "description": "要思考的想法。"
      }
    },
    "required": ["thought"]
  }
}

何时使用“think”工具

根据Anthropic的研究,此工具在以下情况下最为有益:

  1. 工具输出分析:当Claude需要处理之前的工具调用输出后再采取行动时。
  2. 政策密集型环境:当Claude必须遵循详细的指导方针时。
  3. 顺序决策制定:当每个动作都建立在之前的动作之上且错误代价高昂时。

实现最佳实践

战略提示

为了获得最佳效果,在您的提示中明确指示何时以及如何使用“think”工具。考虑提供特定领域的示例,展示:

  • 推理中预期的细节水平
  • 如何将复杂的指令分解成步骤
  • 常见场景下的决策树
  • 信息验证流程

系统提示集成

复杂的指导最好放在系统提示中,而不是工具描述本身。

工作原理

该服务器使用模型上下文协议(MCP)与Claude和其他AI助手通信。它:

  • 使用标准I/O作为独立进程运行
  • 注册“think”工具供Claude在推理过程中使用
  • 返回可以由AI助手处理的结构化响应
  • 记录思考步骤而不影响外部环境

特性

工具

  • think - 允许Claude思考一个问题或分析信息
    • 必需:thought(包含Claude思考过程的字符串)

开发

安装依赖项:

npm install

构建服务器:

npm run build

开发模式下自动重建:

npm run watch

调试

由于MCP服务器通过标准I/O通信,调试可能具有挑战性。我们建议使用MCP Inspector:

npm run inspector

Inspector会提供一个URL,以便您可以在浏览器中访问调试工具。

安装

通过Smithery安装

要通过Smithery自动安装think-mcp-server用于Claude Desktop:

npx -y @smithery/cli install @marcopesani/think-mcp-server --client claude

通过npm安装

npm install -g think-mcp-server

Claude Desktop

在以下位置添加服务器配置:

  • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "think": {
      "command": "npx",
      "args": ["-y", "think-mcp-server"]
    }
  }
}

Cline

  1. 打开Cline扩展设置
  2. 打开“MCP Servers”标签页
  3. 点击“Configure MCP Servers”
  4. 添加服务器配置:
{
  "mcpServers": {
    "github.com/marcopesani/think-mcp-server": {
      "command": "npx",
      "args": ["-y", "think-mcp-server"],
      "disabled": false,
      "autoApprove": ["think"]
    }
  }
}

额外的Cline配置选项:

  • disabled:设为false启用服务器
  • autoApprove:不需要每次使用时显式批准的工具列表

Cursor

  1. 打开Cursor设置
  2. 打开“Features”设置
  3. 在“MCP Servers”部分,点击“Add new MCP Server”
  4. 选择一个名称,并选择“command”类型
  5. 在“Command”字段中输入以下内容:
npx -y think-mcp-server

Docker

您也可以使用Docker运行服务器。首先构建镜像:

docker build -t think-mcp-server .

然后运行容器:

docker run -it think-mcp-server

对于开发,您可能希望将源代码挂载为卷:

docker run -v $(pwd):/app think-mcp-server

快速开始

  1. 使用上述方法之一安装服务器
  2. 配置您的AI客户端以使用think-mcp-server
  3. 在给Claude的提示中包括使用“think”工具的指令
  4. 为了获得最佳效果,在系统提示中添加有效的思考模式示例

TypeScript开发示例

这里是一个专注于TypeScript开发的示例提示,帮助Claude有效地利用“think”工具:

## 使用think工具进行TypeScript开发

在实现任何TypeScript代码或回答技术问题之前,使用think工具来:
- 分析可能相关的类型定义和接口
- 检查潜在的类型错误或边缘情况
- 推理泛型和类型约束
- 验证TypeScript特性的正确使用

这是一个使用think工具进行TypeScript特定推理的例子:

<think_tool_typescript_example>
用户想要在React TypeScript中实现一个通用的状态管理钩子
- 需求分析:
  * 需要处理任何数据类型(泛型类型)
  * 必须在整个状态生命周期中保存类型信息
  * 应该提供类型安全的更新方法
  * 需要考虑不可变性模式

- 需要考虑的类型约束:
  * T应该扩展对象,还是允许原始类型?
  * 更新时Partial<T>是否合适?
  ?我们应该使用Record<string, unknown>作为回退吗?

- 实现注意事项:
  * 使用useState<T>作为基础
  * 添加保持泛型的类型化setter方法
  * 考虑回调模式进行原子更新
  * 检查与React的钩子规则的兼容性

- 方法:
1. 定义钩子返回值的泛型接口
2. 使用适当的泛型类型实现useState
3. 创建维护类型安全的类型化更新方法
4. 添加JSDoc注释以改善开发者体验
5. 返回带有适当类型方法的不可变状态
</think_tool_typescript_example>

在帮助解决TypeScript挑战时:
1. 首先分析类型系统的影响
2. 考虑TypeScript特有的边缘情况
3. 推理类型缩小和扩大
4. 检查与TypeScript编译器版本的兼容性
5. 考虑类型推断和显式类型注解

性能优势

Anthropic的评估显示,在使用“think”工具时有显著改进:

  • 在τ-Bench航空领域相对提高了54%(pass^1指标:0.570对基线0.370)
  • 平均提高了SWE-bench的表现1.6%
  • 多次试验中的一致性得到增强

参考文献

本实现基于Anthropic的研究文章《“think”工具:使Claude能够在复杂工具使用情境中停下来思考》(发布于2025年3月20日)。