📋 很棒的东西
](https://www.npmjs.com/package/awesome-things)      
Awesome swiss knife for Things3 – MCP server for AI, CLI, HTTP API, JS/TS API and Web
🤖 主控程序:连接您的AI助手以管理任务
⚙️ 命令行界面:在控制台中实现自动化——在出现错误时添加任务,通过crons移动到列表中
🌐 HTTP API:构建自己的任务管理前端
📦 JS/TS API:在应用程序中用作库
💻 网络:从工作计算机管理任务或允许同事访问列表
基本用法
npx awesome-things server --tunnel
# ➜ MCP: https://my-awesome-things3-mcp.loca.lt/mcp/auth/uvhSdaAsd1qmtAnHa895bcjwTAnBxw- 在终端中运行并复制MCP URL
- 复制MCP URL并粘贴到您的AI客户端(ChatGPT、Claude等)
- 询问AI代理
连接后AI助手可以做什么,示例:
- 在Today创建待办事项“购买杂货”
- 显示今天的所有待办事项
- 完成“购买杂货”
- 使用“meeting”搜索待办事项
- 在“工作”区域创建项目“Q1规划”
用作本地CLI MCP服务器
添加到MCP客户端配置中:
{
"mcpServers": {
"things3": {
"command": "npx -y awesome-things mcp"
}
}
}或与隧道服务一起使用以进行远程访问(请参阅 隧道效应 在......下面
{
"mcpServers": {
"things3": {
"command": "https://my-awesome-things3-mcp.loca.lt/mcp/auth/uvhSdaAsd1qmtAnHa895bcjwTAnBxw"
}
}
}客户端特定的配置路径
ChatGPT
- 首选 设置→ 设置→ 测试版功能 在ChatGPT中
- 启用“开发人员模式”和“MCP应用程序”
- 使用应用内UI添加MCP服务器,无需编辑文件。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
Claude Code
.claude/settings.json(项目)~/.claude/settings.json(全球)
Cursor
.cursor/mcp.json(项目)~/.cursor/mcp.json(全球)
______________________________________________________________________
隧道效应
内置的隧道支持允许您公开本地服务器以进行远程访问,这对于将AI客户端(ChatGPT、Claude)连接到Mac上的Things3非常有用。
支持三个提供商:
localtunnel(默认)
npx awesome-things server --tunnel
# or explicitly:
npx awesome-things server --tunnel=localtunnel
# with custom subdomain:
npx awesome-things server --tunnel --domain myapp无需配置。免费,无需注册。
吸烟
npx awesome-things server --tunnel=ngrok
# with auth token:
npx awesome-things server --tunnel=ngrok --ngrok-token=YOUR_TOKEN
# or via env:
NGROK_AUTHTOKEN=YOUR_TOKEN npx awesome-things server --tunnel=ngrok
# with custom domain (paid plan):
npx awesome-things server --tunnel=ngrok --domain myapp.ngrok-free.appfrp(快速反向代理)
快速反向代理 --自托管反向代理。需要 frpc 安装二进制文件和您自己的frp服务器。
# Minimal — server address is required
FRP_SERVER_ADDR=frp.example.com npx awesome-things server --tunnel=frp
# With subdomain
FRP_SERVER_ADDR=frp.example.com npx awesome-things server --tunnel=frp --domain myapp
# Full domain
FRP_SERVER_ADDR=frp.example.com npx awesome-things server --tunnel=frp --domain myapp.example.com
# With authentication
FRP_SERVER_ADDR=frp.example.com FRP_TOKEN=secret npx awesome-things server --tunnel=frpAll FRP environment variables
所有变量都支持两个前缀: AWESOME_THINGS_FRP_* 和 FRP_*.
| 变量 | 默认值 | 描述 |
|---|---|---|
FRP_SERVER_ADDR | --(必填) | FRP服务器地址 |
FRP_SERVER_PORT | 7000 | FRP服务器端口 |
FRP_TOKEN | -- | 身份验证令牌 |
FRP_PROTOCOL | https | 协议(http 或 https) |
FRP_SUBDOMAIN | -- | FRP服务器上的子域 |
FRP_REMOTE_PORT | -- | 远程端口映射 |
FRP_PROXY_NAME | things | frpc中的代理名称 |
您还可以通过env设置隧道提供程序: AWESOME_THINGS_TUNNEL=frp______________________________________________________________________
作为CLI使用
注意:为了解决延迟问题,建议全球安装NPM I-G Awesome-Things 注意:您可以使用 npx thi 作为别名 npx很棒的东西
npx awesome-things list today
npx awesome-things add "Buy milk" --evening
npx awesome-things done "Buy cheese"
# You can use alias `npx thi` instead and make a chains
npm thi search "My report*"
# Automatization examples
ls -1 | head -n 10 | sed 's/^/Fix bug /' | awesome-things add today
thi search "*"
示例:用于自动化
All CLI commands
# Create a todo
things add "Buy milk"
things add "Submit report" --notes "Q1" --due 2026-03-01 --tags work urgent --list today
things add "Fix leak" --area Home
# List todos
things list # today (default)
things list inbox
things list today -s open
# Complete a todo
things done "Buy milk"
# Update a todo
things update "Submit report" --new-name "Submit Q1 report"
things update "Submit report" --new-due 2026-03-15
# Search
things search "report"
# Projects
things project add "Q1 Planning"
things project list
things project todos "Q1 Planning"
# Tags and areas
things tags
things areas
# Move
things move todo "Buy milk" today
things move todo-to-project "Submit report" "Q1 Planning"
# Remove associations
things remove todo-from-project "Submit report"______________________________________________________________________
用作HTTP API
bun run server # port 3001
PORT=8080 bun run server # custom portEndpoints
| 方法 | 路径 | 描述 |
|---|---|---|
GET | /todos?list=today&status=open 列出所有 | |
POST | /todos | 创建待办事项 |
PUT | /todos | 更新待办事项 |
POST | /todos/complete | 完成待办事项 |
GET | /todos/search?q=... 搜索所有 | |
GET | /projects?area=... | 列出项目 |
POST | /projects | 创建项目 |
GET | /projects/:name/todos | 所有项目 |
GET | /tags | 所有标签 |
GET | /areas | 所有区域 |
POST | /move/todo | 将待办事项移至列表 |
POST | /move/todo-to-project | 将待办事项移至项目 |
POST | /move/todo-to-area | 将待办事项移动到区域 |
POST | /move/project-to-area | 将项目移动到区域 |
POST | /remove/todo-from-project | 从项目中删除 |
POST | /remove/project-from-area | 从区域中删除 |
例子
curl http://localhost:3001/todos?list=today
curl -X POST http://localhost:3001/todos \
-H "Content-Type: application/json" \
-d '{"name": "Buy milk", "list": "today"}'
curl http://localhost:3001/todos/search?q=report______________________________________________________________________
用作JS/TS API
安装
npm install awesome-thingsimport { createTodo, listTodos, completeTodo } from 'awesome-things';
// Create a todo
await createTodo({ name: 'Buy milk', list: 'today' });
// List today's todos
const todos = await listTodos({ list: 'today', status: 'open' });
// Complete a todo
await completeTodo({ name: 'Buy milk' });更多示例
import { createTodo, searchTodos, updateTodo, createProject, moveTodoToProject } from 'awesome-things';
// Create with all options
await createTodo({
name: 'Submit report',
notes: 'Q1 financials',
due_date: '2026-03-01',
tags: ['work', 'urgent'],
list: 'today',
});
// Create a todo directly in an area
await createTodo({ name: 'Fix leak', area: 'Home' });
// Search across all lists
const results = await searchTodos({ query: 'report' });
// Update a todo
await updateTodo({ name: 'Submit report', new_due_date: '2026-03-15' });
// Create a project and move a todo into it
await createProject({ name: 'Q1 Planning', area: 'Work' });
await moveTodoToProject({ todo_name: 'Submit report', project_name: 'Q1 Planning' });All 16 API functions
createTodo({ name, notes?, due_date?, tags?, list?, project?, area? })-创建待办事项listTodos({ list, status? })列出所有completeTodo({ name })-完成待办事项updateTodo({ name, new_name?, new_notes?, new_due_date?, new_tags? })-更新待办事项searchTodos({ query })搜索全部createProject({ name, notes?, area? })-创建项目listProjects({ area? })-列出项目getProjectTodos({ project_name, status? })-获取项目待办事项listTags()-列出所有标签listAreas()-列出所有区域moveTodo({ todo_name, destination })-将待办事项移至列表moveTodoToProject({ todo_name, project_name })-将待办事项移至项目moveTodoToArea({ todo_name, area_name })-将待办事项移动到区域moveProjectToArea({ project_name, area_name })-将项目移动到区域removeTodoFromProject({ todo_name })-从项目中删除todoremoveProjectFromArea({ project_name })-从区域中删除项目
自定义AppleScript
import { execute, tellThings } from 'awesome-things';
const result = await execute(
tellThings('show quick entry panel with properties {name:"Hello"}')
);______________________________________________________________________
发展
bun install
bun run build # Build (tsdown -> lib/)
bun run test # Full test suite
bun run fix # Fix lint issues许可证
MIT© 伊戈尔·苏沃洛夫
______________________________________________________________________
很棒的东西 — _随时随地管理物品3_ 📋
______________________________________________________________________
