Claude Code Extensions
Add custom tools to Claude Code with simple YAML definitions
Quick Start • How It Works • Create Extensions • Built-in Tools • CLI Reference
______________________________________________________________________
✨ 演示
$ claude "use cowsay to say 'Hello from custom extensions!'"
__________________________________
----------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||$ claude "roll 4d6 for my D&D character"
Rolled 4d6: [6, 4, 5, 2] = 17$ claude "what time is it right now?"
It's Monday, January 27, 2025 at 10:42:53 AM.这些工具在Claude Code中不存在。它们在30秒内被添加。
______________________________________________________________________
🚀 快速开始
1.安装
git clone https://github.com/hexcreator/claude-code-extensions.git
cd claude-code-extensions
npm install
npm link # Makes 'claude-ext' available globally2.初始化并启动
claude-ext init # Creates ~/.claude-extensions/
claude-ext start # Starts the extension proxy3.使用克劳德代码
ANTHROPIC_BASE_URL=http://localhost:8892 claude "roll a d20"就是这样!Claude Code现在可以访问自定义工具。
______________________________________________________________________
🎯 为什么存在
Claude Code附带了大约30个内置工具,但如果你需要怎么办:
| 需求 | 解决方案 |
|---|---|
| 📢 松弛通知 | claude-ext create SlackNotify |
| 🎲 D&D骰子 | 内置 Dice 工具 |
| ⏰ 实际当前时间 | 内置 Timestamp 工具 |
| 🔌 自定义API调用 | 内置 HTTPRequest 工具 |
| 🐄 ASCII艺术奶牛 | 内置 Cowsay 工具 |
没有MCP服务器。没有复杂的协议。只是YAML+一个处理程序。
______________________________________________________________________
⚙️ 运作原理
┌─────────────────┐ ┌───────────────────────────────────────┐ ┌─────────────────┐
│ │ │ Extension Proxy │ │ │
│ Claude Code │────▶│ ┌─────────────────────────────────┐ │────▶│ Anthropic API │
│ │ │ │ 1. Inject custom tool schemas │ │ │ │
│ "roll a d20" │ │ │ 2. Forward to Anthropic │ │ │ claude-sonnet │
│ │◀────│ │ 3. Intercept tool calls │ │◀────│ │
│ "You rolled │ │ │ 4. Execute local handlers │ │ │ tool_use:Dice │
│ 17!" │ │ │ 5. Inject results │ │ │ │
│ │ │ └─────────────────────────────────┘ │ │ │
└─────────────────┘ └───────────────────────────────────────┘ └─────────────────┘
│
▼
┌───────────────────────────────┐
│ ~/.claude-extensions/ │
│ ├── tools/ │
│ │ ├── dice.yaml │
│ │ └── cowsay.yaml │
│ └── handlers/ │
│ ├── dice.js │
│ └── cowsay.js │
└───────────────────────────────┘代理拦截Claude Code的API请求,并:
- 添加您的工具 到请求的工具列表
- 手表 工具调用的响应
- 执行 您的本地处理程序
- 注射 结果返回到对话中
克劳德认为这些工具是内置的。它们不是——它们在你的机器上运行。
______________________________________________________________________
📝 创建扩展
方法1:CLI(推荐)
claude-ext create MyTool这种脚手架:
~/.claude-extensions/tools/mytool.yaml-工具定义~/.claude-extensions/handlers/mytool.js-处理程序实现
方法2:手动
1.创建定义:
# ~/.claude-extensions/tools/slack.yaml
name: SlackPost
description: Post a message to a Slack channel
handler: slack.js
schema:
properties:
channel:
type: string
description: Channel name (e.g., #general)
message:
type: string
description: Message to post
required:
- channel
- message2.创建处理程序:
// ~/.claude-extensions/handlers/slack.js
module.exports = async function(input, context) {
const { channel, message } = input;
const { env, fetch } = context;
await fetch('https://slack.com/api/chat.postMessage', {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.SLACK_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ channel, text: message })
});
return `Message posted to ${channel}`;
};3.使用它:
claude "post 'Build complete!' to #dev-notifications"______________________________________________________________________
🧰 内置工具
🐄 考赛
ASCII艺术牛信息。
schema:
message: string # What the cow says
style: enum # default, think, yell, dead, etc.🎲 骰子
随机数生成。
schema:
sides: number # Die sides (default: 6)
count: number # Number of dice (default: 1)
# OR
min: number # Range minimum
max: number # Range maximum
# OR
pick: array # Items to randomly select from⏰ 时间戳
当前日期和时间。
schema:
format: enum # iso, unix, human, date, time
timezone: string # e.g., "America/New_York"🌐 HTTP请求
向任何URL发出HTTP请求。
schema:
url: string # Full URL (required)
method: enum # GET, POST, PUT, DELETE
headers: object # Key-value headers
body: string # Request body______________________________________________________________________
💻 CLI参考
claude-ext [options]| 命令 | 描述 |
|---|---|
init | 初始化 ~/.claude-extensions/ 目录 |
start | 启动扩展代理 |
start --watch | 从热重新加载开始 |
list | 列出已安装的扩展 |
create | 创建新扩展 |
test [json] | 直接测试处理程序 |
help | 显示帮助 |
例子
# Create and test a new tool
claude-ext create WeatherAPI
claude-ext test weatherapi '{"city": "San Francisco"}'
# Start proxy with auto-reload
claude-ext start --watch
# Use with Claude Code
ANTHROPIC_BASE_URL=http://localhost:8892 claude "your prompt"______________________________________________________________________
🔧 处理器接口
JavaScript
module.exports = async function(input, context) {
// input: Parameters from tool call
// context: { env, log, fetch }
const { myParam } = input;
const { env, log, fetch } = context;
log('Processing:', myParam);
return 'Result string';
};python
import os, json
input_data = json.loads(os.environ['EXTENSION_INPUT'])
print(f"Result: {input_data['myParam']}")外壳
#!/bin/bash
# Input params are UPPERCASE env vars
echo "Received: $MYPARAM"______________________________________________________________________
🔒 安全说明
- 处理程序与 完全系统访问
- 环境变量可以包含机密
- 默认情况下没有沙盒
- 仅安装您信任的扩展
______________________________________________________________________
🆚 与MCP的比较
||MCP|本框架| |--|-----|----------------| | 设置 |JSON-RPC服务器|YAML+处理程序| | 协议 |必须执行|无| | 学习曲线 |陡峭|最小| | 是时候使用第一个工具了 |小时|分钟| | 最适合 |生产|快速工具|
使用MCP 用于强大的生产级集成。 使用这个 当你只想要一个工具,想继续前进时。
______________________________________________________________________
🤝 贡献
欢迎投稿!请随意:
- 添加新的内置工具
- 改进代理
- 修复漏洞
- 加强文件编制
______________________________________________________________________
📄 许可证
MIT© hexcreator
______________________________________________________________________
Built by reverse-engineering Claude Code's architecture
See the full research →
