MCP 草稿链 (CoD) 提示工具是一个强大的模型上下文协议工具,通过将标准提示转换为草稿链 (CoD) 或思维链 (CoT) 格式来增强大语言模型 (LLM) 的推理能力。以下是其工作原理:
这种方法显著提高了推理质量,同时减少了令牌使用量并保持了高准确性。
此工具支持“自带 LLM”的方法,允许您使用任何您选择的语言模型:
云服务
# 对于 Anthropic Claude
export ANTHROPIC_API_KEY=your_key_here
# 对于 OpenAI
export OPENAI_API_KEY=your_key_here
# 对于 Mistral AI
export MISTRAL_API_KEY=your_key_here
使用 Ollama 的本地模型
# 首先安装 Ollama
curl https://ollama.ai/install.sh | sh
# 拉取您偏好的模型
ollama pull llama2
# 或
ollama pull mistral
# 或其他模型
# 配置工具以使用 Ollama
export MCP_LLM_PROVIDER=ollama
export MCP_OLLAMA_MODEL=llama2 # 或您选择的模型
自定义本地模型
# 指向您的本地模型 API
export MCP_LLM_PROVIDER=custom
export MCP_CUSTOM_LLM_ENDPOINT=http://localhost:your_port
本项目实现了作为 Claude 的模型上下文协议 (MCP) 提示工具的草稿链 (CoD) 推理方法。核心草稿链实现基于 stat-guy 的工作。我们对他们在开发这种高效推理方法方面的开创性工作表示感谢。
原始仓库:https://github.com/stat-guy/chain-of-draft
核心草稿链实现
性能分析
自适应词限制
全面示例数据库
格式强制执行
混合推理方法
OpenAI API 兼容性
pip install -r requirements.txt
.env 文件中配置 API 密钥:
ANTHROPIC_API_KEY=your_api_key_here
python server.py
npm install
.env 文件中配置 API 密钥:
ANTHROPIC_API_KEY=your_api_key_here
# 使用 Nx 编译 TypeScript 文件
npm run nx build
# 启动服务器
npm start
# 开发模式下自动重载:
npm run dev
可用脚本:
npm run nx build:使用 Nx 构建系统将 TypeScript 编译为 JavaScriptnpm run build:sea:为所有平台创建单可执行应用程序npm start:从 dist 运行编译后的服务器npm test:针对服务器运行测试查询npm run dev:直接使用 ts-node 运行 TypeScript 服务器(适用于开发)该项目使用 Nx 作为其构建系统,提供:
本项目支持使用 Node.js 22+ 和 @getlarge/nx-node-sea 插件构建单可执行应用程序 (SEA)。这允许您创建不需要在目标系统上安装 Node.js 的独立可执行文件。
项目包括几个脚本用于构建 SEA 可执行文件:
# 为所有平台构建
npm run build:sea
# 为特定平台构建
npm run build:macos # macOS
npm run build:linux # Linux
npm run build:windows # Windows
项目使用 Nx 来管理构建过程。SEA 配置通过 nx-node-sea 插件处理,提供了创建 Node.js 单可执行应用程序的简化方式。
SEA 构建过程的关键特性:
构建完成后,SEA 可执行文件可以在 dist 目录中找到。这些可执行文件:
对于 Claude Desktop 与 SEA 可执行文件的集成,请更新您的配置以使用可执行文件路径:
{
"mcpServers": {
"chain-of-draft-prompt-tool": {
"command": "/path/to/mcp-chain-of-draft-prompt-tool",
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
要与 Claude Desktop 集成:
从 claude.ai/download 安装 Claude Desktop
创建或编辑 Claude Desktop 配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json
添加工具配置(Python 版本):
{
"mcpServers": {
"chain-of-draft-prompt-tool": {
"command": "python3",
"args": ["/绝对路径/to/cod/server.py"],
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
或对于 JavaScript 版本:
{
"mcpServers": {
"chain-of-draft-prompt-tool": {
"command": "node",
"args": ["/绝对路径/to/cod/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
重启 Claude Desktop
您也可以使用 Claude CLI 添加工具:
# 对于 Python 实现
claude mcp add chain-of-draft-prompt-tool -e ANTHROPIC_API_KEY="your_api_key_here" "python3 /绝对路径/to/cod/server.py"
# 对于 JavaScript 实现
claude mcp add chain-of-draft-prompt-tool -e ANTHROPIC_API_KEY="your_api_key_here" "node /绝对路径/to/cod/index.js"
Dive 是一个优秀的开源 MCP 主机桌面应用程序,它提供了一个用户友好的 GUI 来与像这样的 MCP 工具进行交互。它支持多个 LLM,包括 ChatGPT、Anthropic Claude、Ollama 和其他兼容 OpenAI 的模型。
从他们的 发布页面 下载并安装 Dive
在 Dive 的 MCP 设置中配置草稿链工具:
{
"mcpServers": {
"chain-of-draft-prompt-tool": {
"command": "/path/to/mcp-chain-of-draft-prompt-tool",
"enabled": true,
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
如果您使用的是非 SEA 版本:
{
"mcpServers": {
"chain-of-draft-prompt-tool": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"enabled": true,
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
使用 Dive 提供了一种方便的方式,通过现代、功能丰富的界面与草稿链工具互动,同时保持 MCP 协议的所有优点。
该项目包括与 MCP Inspector 工具的集成,该工具提供了一个可视界面来测试和调试 MCP 工具。这对于开发或检查工具行为特别有用。
您可以使用提供的 npm 脚本启动 MCP Inspector:
# 使用工具启动 MCP Inspector
npm run test-inspector
# 或手动运行
npx @modelcontextprotocol/inspector -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY -- node dist/index.js
这将:
MCP Inspector 提供:
这使其成为以下用途的宝贵工具:
Inspector 默认将在 http://localhost:5173 可用。
草稿链服务器提供以下工具:
| 工具 | 描述 |
|---|---|
chain_of_draft_solve | 使用草稿链推理解决问题 |
math_solve | 使用 CoD 解决数学问题 |
code_solve | 使用 CoD 解决编程问题 |
logic_solve | 使用 CoD 解决逻辑问题 |
get_performance_stats | 获取 CoD 与 CoT 的性能统计 |
get_token_reduction | 获取令牌减少统计数据 |
analyze_problem_complexity | 分析问题复杂度 |
如果您想在 Python 代码中直接使用草稿链客户端:
from client import ChainOfDraftClient
# 使用特定 LLM 提供商创建客户端
cod_client = ChainOfDraftClient(
llm_provider="ollama", # 或 "anthropic", "openai", "mistral", "custom"
model_name="llama2" # 指定您的模型
)
# 直接使用
result = await cod_client.solve_with_reasoning(
problem="求解:247 + 394 = ?",
domain="math"
)
print(f"答案:{result['final_answer']}")
print(f"推理步骤:{result['reasoning_steps']}")
print(f"使用的令牌数量:{result['token_count']}")
对于 TypeScript/Node.js 应用程序:
import { ChainOfDraftClient } from './lib/chain-of-draft-client';
// 使用您偏好的 LLM 创建客户端
const client = new ChainOfDraftClient({
provider: 'ollama', // 或 'anthropic', 'openai', 'mistral', 'custom'
model: 'llama2', // 您选择的模型
endpoint: 'http://localhost:11434' // 对于自定义端点
});
// 使用客户端
async function solveMathProblem() {
const result = await client.solveWithReasoning({
problem: "求解:247 + 394 = ?",
domain: "math",
max_words_per_step: 5
});
console.log(`答案:${result.final_answer}`);
console.log(`推理步骤:${result.reasoning_steps}`);
console.log(`使用的令牌数量:${result.token_count}`);
}
solveMathProblem();
服务器有 Python 和 JavaScript 两种实现,都由几个集成组件组成:
两种实现遵循相同的内核原则,并提供相同的 MCP 工具,使得它们在大多数情况下可以互换