chain of draft
Implements the Chain of Draft reasoning approach to generate minimalistic intermediate reasoning outputs while solving tasks, significantly reducing token usage while maintaining accuracy.
Implements the Chain of Draft reasoning approach to generate minimalistic intermediate reasoning outputs while solving tasks, significantly reducing token usage while maintaining accuracy.
This MCP server implements the Chain of Draft (CoD) reasoning approach as described in the research paper "Chain of Draft: Thinking Faster by Writing Less". CoD is a novel paradigm that allows LLMs to generate minimalistic yet informative intermediate reasoning outputs while solving tasks, significantly reducing token usage while maintaining accuracy.
Answer extraction
Performance Analytics
Domain-specific performance metrics
Adaptive Word Limits
Domain-specific calibration
Comprehensive Example Database
Example retrieval based on problem similarity
Format Enforcement
Adherence analytics
Hybrid Reasoning Approaches
Historical performance-based selection
OpenAI API Compatibility
pip install -r requirements.txt
.env
file:
ANTHROPIC_API_KEY=your_api_key_here
python server.py
npm install
.env
file:
ANTHROPIC_API_KEY=your_api_key_here
node index.js
To integrate with Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"chain-of-draft": {
"command": "python3",
"args": ["/absolute/path/to/cod/server.py"],
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
Or for the JavaScript version:
{
"mcpServers": {
"chain-of-draft": {
"command": "node",
"args": ["/absolute/path/to/cod/index.js"],
"env": {
"ANTHROPIC_API_KEY": "your_api_key_here"
}
}
}
}
4. Restart Claude Desktop
You can also use the Claude CLI to add the server:
# For Python implementation
claude mcp add chain-of-draft -e ANTHROPIC_API_KEY="your_api_key_here" "python3 /absolute/path/to/cod/server.py"
# For JavaScript implementation
claude mcp add chain-of-draft -e ANTHROPIC_API_KEY="your_api_key_here" "node /absolute/path/to/cod/index.js"
The Chain of Draft server provides the following tools:
Tool | Description |
---|---|
chain_of_draft_solve |
Solve a problem using Chain of Draft reasoning |
math_solve |
Solve a math problem with CoD |
code_solve |
Solve a coding problem with CoD |
logic_solve |
Solve a logic problem with CoD |
get_performance_stats |
Get performance stats for CoD vs CoT |
get_token_reduction |
Get token reduction statistics |
analyze_problem_complexity |
Analyze problem complexity |
If you want to use the Chain of Draft client directly in your Python code:
from client import ChainOfDraftClient
# Create client
cod_client = ChainOfDraftClient()
# Use directly
result = await cod_client.solve_with_reasoning(
problem="Solve: 247 + 394 = ?",
domain="math"
)
print(f"Answer: {result['final_answer']}")
print(f"Reasoning: {result['reasoning_steps']}")
print(f"Tokens used: {result['token_count']}")
For JavaScript/Node.js applications:
import { Anthropic } from "@anthropic-ai/sdk";
import dotenv from "dotenv";
// Load environment variables
dotenv.config();
// Create the Anthropic client
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
// Import the Chain of Draft client
import chainOfDraftClient from './lib/chain-of-draft-client.js';
// Use the client
async function solveMathProblem() {
const result = await chainOfDraftClient.solveWithReasoning({
problem: "Solve: 247 + 394 = ?",
domain: "math",
max_words_per_step: 5
});
console.log(`Answer: ${result.final_answer}`);
console.log(`Reasoning: ${result.reasoning_steps}`);
console.log(`Tokens used: ${result.token_count}`);
}
solveMathProblem();
The server is available in both Python and JavaScript implementations, both consisting of several integrated components:
Both implementations follow the same core principles and provide identical MCP tools, making them interchangeable for most use cases.
This project is open-source and available under the MIT license.