thetoolforthat 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -6
- package/cli.js +186 -0
- package/package.json +6 -4
- package/server.js +0 -0
package/README.md
CHANGED
|
@@ -6,25 +6,91 @@ Tools, resources, and people worth knowing. A curated collection for builders an
|
|
|
6
6
|
|
|
7
7
|
## MCP Server
|
|
8
8
|
|
|
9
|
-
This repo includes an MCP server so AI coding agents can search and recommend tools.
|
|
9
|
+
This repo includes an MCP server so AI coding agents can search and recommend tools. Updates sync automatically from this repo.
|
|
10
10
|
|
|
11
|
-
###
|
|
11
|
+
### Quick Start
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Select your client and run the command:
|
|
14
|
+
|
|
15
|
+
<details open>
|
|
16
|
+
<summary><strong>Claude Code</strong></summary>
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx thetoolforthat init --client claude
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Restart Claude Code and try:
|
|
23
|
+
- Search for animation libraries
|
|
24
|
+
- Recommend tools for building a SaaS dashboard
|
|
25
|
+
- List all design agencies
|
|
26
|
+
|
|
27
|
+
</details>
|
|
28
|
+
|
|
29
|
+
<details>
|
|
30
|
+
<summary><strong>Cursor</strong></summary>
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx thetoolforthat init --client cursor
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Open Cursor Settings and enable the MCP server for thetoolforthat.
|
|
37
|
+
|
|
38
|
+
</details>
|
|
39
|
+
|
|
40
|
+
<details>
|
|
41
|
+
<summary><strong>VS Code</strong></summary>
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx thetoolforthat init --client vscode
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Open `.vscode/mcp.json` and click Start next to thetoolforthat.
|
|
48
|
+
|
|
49
|
+
</details>
|
|
50
|
+
|
|
51
|
+
<details>
|
|
52
|
+
<summary><strong>Codex</strong></summary>
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx thetoolforthat init --client codex
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then add to `~/.codex/config.toml`:
|
|
59
|
+
|
|
60
|
+
```toml
|
|
61
|
+
[mcp_servers.thetoolforthat]
|
|
62
|
+
command = "npx"
|
|
63
|
+
args = ["thetoolforthat", "mcp"]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
</details>
|
|
67
|
+
|
|
68
|
+
<details>
|
|
69
|
+
<summary><strong>OpenCode</strong></summary>
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npx thetoolforthat init --client opencode
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Restart OpenCode and you're ready.
|
|
76
|
+
|
|
77
|
+
</details>
|
|
78
|
+
|
|
79
|
+
### Manual Configuration
|
|
80
|
+
|
|
81
|
+
Add to your MCP config:
|
|
14
82
|
|
|
15
83
|
```json
|
|
16
84
|
{
|
|
17
85
|
"mcpServers": {
|
|
18
86
|
"thetoolforthat": {
|
|
19
87
|
"command": "npx",
|
|
20
|
-
"args": ["thetoolforthat"]
|
|
88
|
+
"args": ["thetoolforthat", "mcp"]
|
|
21
89
|
}
|
|
22
90
|
}
|
|
23
91
|
}
|
|
24
92
|
```
|
|
25
93
|
|
|
26
|
-
That's it. The server fetches the latest tools from this repo (cached 5 minutes).
|
|
27
|
-
|
|
28
94
|
### Available Tools
|
|
29
95
|
|
|
30
96
|
| Tool | Description |
|
package/cli.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { program } from "commander";
|
|
4
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
|
|
5
|
+
import { homedir } from "os";
|
|
6
|
+
import { join } from "path";
|
|
7
|
+
import { spawn } from "child_process";
|
|
8
|
+
import { fileURLToPath } from "url";
|
|
9
|
+
import { dirname } from "path";
|
|
10
|
+
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
|
|
14
|
+
const CONFIG_PATHS = {
|
|
15
|
+
claude: join(homedir(), ".claude", "settings.json"),
|
|
16
|
+
cursor: join(process.cwd(), ".cursor", "mcp.json"),
|
|
17
|
+
vscode: join(process.cwd(), ".vscode", "mcp.json"),
|
|
18
|
+
codex: join(homedir(), ".codex", "config.toml"),
|
|
19
|
+
opencode: join(homedir(), ".opencode", "mcp.json"),
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const MCP_CONFIG = {
|
|
23
|
+
command: "npx",
|
|
24
|
+
args: ["thetoolforthat", "mcp"],
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
function ensureDir(filePath) {
|
|
28
|
+
const dir = dirname(filePath);
|
|
29
|
+
if (!existsSync(dir)) {
|
|
30
|
+
mkdirSync(dir, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function readJsonConfig(path) {
|
|
35
|
+
if (!existsSync(path)) {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(readFileSync(path, "utf-8"));
|
|
40
|
+
} catch {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function writeJsonConfig(path, config) {
|
|
46
|
+
ensureDir(path);
|
|
47
|
+
writeFileSync(path, JSON.stringify(config, null, 2) + "\n");
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function initClaude() {
|
|
51
|
+
const configPath = CONFIG_PATHS.claude;
|
|
52
|
+
const config = readJsonConfig(configPath);
|
|
53
|
+
|
|
54
|
+
if (!config.mcpServers) {
|
|
55
|
+
config.mcpServers = {};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
config.mcpServers.thetoolforthat = MCP_CONFIG;
|
|
59
|
+
|
|
60
|
+
writeJsonConfig(configPath, config);
|
|
61
|
+
console.log(`✓ Added thetoolforthat to ${configPath}`);
|
|
62
|
+
console.log("\nRestart Claude Code and try:");
|
|
63
|
+
console.log(" - Search for animation libraries");
|
|
64
|
+
console.log(" - Recommend tools for building a SaaS dashboard");
|
|
65
|
+
console.log(" - List all design agencies");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function initCursor() {
|
|
69
|
+
const configPath = CONFIG_PATHS.cursor;
|
|
70
|
+
const config = readJsonConfig(configPath);
|
|
71
|
+
|
|
72
|
+
if (!config.mcpServers) {
|
|
73
|
+
config.mcpServers = {};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
config.mcpServers.thetoolforthat = MCP_CONFIG;
|
|
77
|
+
|
|
78
|
+
writeJsonConfig(configPath, config);
|
|
79
|
+
console.log(`✓ Added thetoolforthat to ${configPath}`);
|
|
80
|
+
console.log("\nOpen Cursor Settings and enable the MCP server for thetoolforthat.");
|
|
81
|
+
console.log("\nThen try:");
|
|
82
|
+
console.log(" - Search for animation libraries");
|
|
83
|
+
console.log(" - Recommend tools for building a SaaS dashboard");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function initVscode() {
|
|
87
|
+
const configPath = CONFIG_PATHS.vscode;
|
|
88
|
+
const config = readJsonConfig(configPath);
|
|
89
|
+
|
|
90
|
+
if (!config.servers) {
|
|
91
|
+
config.servers = {};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
config.servers.thetoolforthat = MCP_CONFIG;
|
|
95
|
+
|
|
96
|
+
writeJsonConfig(configPath, config);
|
|
97
|
+
console.log(`✓ Added thetoolforthat to ${configPath}`);
|
|
98
|
+
console.log("\nOpen .vscode/mcp.json and click Start next to thetoolforthat.");
|
|
99
|
+
console.log("\nThen try with GitHub Copilot:");
|
|
100
|
+
console.log(" - Search for animation libraries");
|
|
101
|
+
console.log(" - Recommend tools for building a SaaS dashboard");
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function initCodex() {
|
|
105
|
+
console.log(`To configure Codex, add this to ~/.codex/config.toml:\n`);
|
|
106
|
+
console.log(`[mcp_servers.thetoolforthat]`);
|
|
107
|
+
console.log(`command = "npx"`);
|
|
108
|
+
console.log(`args = ["thetoolforthat", "mcp"]`);
|
|
109
|
+
console.log("\nThen restart Codex and try:");
|
|
110
|
+
console.log(" - Search for animation libraries");
|
|
111
|
+
console.log(" - Recommend tools for building a SaaS dashboard");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function initOpencode() {
|
|
115
|
+
const configPath = CONFIG_PATHS.opencode;
|
|
116
|
+
const config = readJsonConfig(configPath);
|
|
117
|
+
|
|
118
|
+
if (!config.mcpServers) {
|
|
119
|
+
config.mcpServers = {};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
config.mcpServers.thetoolforthat = MCP_CONFIG;
|
|
123
|
+
|
|
124
|
+
writeJsonConfig(configPath, config);
|
|
125
|
+
console.log(`✓ Added thetoolforthat to ${configPath}`);
|
|
126
|
+
console.log("\nRestart OpenCode and try:");
|
|
127
|
+
console.log(" - Search for animation libraries");
|
|
128
|
+
console.log(" - Recommend tools for building a SaaS dashboard");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
program
|
|
132
|
+
.name("thetoolforthat")
|
|
133
|
+
.description("Curated tools, resources, and agencies for builders")
|
|
134
|
+
.version("1.0.0");
|
|
135
|
+
|
|
136
|
+
program
|
|
137
|
+
.command("init")
|
|
138
|
+
.description("Configure the MCP server for your AI coding client")
|
|
139
|
+
.option("-c, --client <client>", "Client to configure (claude, cursor, vscode, codex, opencode)")
|
|
140
|
+
.action((options) => {
|
|
141
|
+
const client = options.client?.toLowerCase();
|
|
142
|
+
|
|
143
|
+
if (!client) {
|
|
144
|
+
console.log("Available clients: claude, cursor, vscode, codex, opencode");
|
|
145
|
+
console.log("\nUsage: npx thetoolforthat init --client <client>");
|
|
146
|
+
console.log("Example: npx thetoolforthat init --client claude");
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
switch (client) {
|
|
151
|
+
case "claude":
|
|
152
|
+
initClaude();
|
|
153
|
+
break;
|
|
154
|
+
case "cursor":
|
|
155
|
+
initCursor();
|
|
156
|
+
break;
|
|
157
|
+
case "vscode":
|
|
158
|
+
initVscode();
|
|
159
|
+
break;
|
|
160
|
+
case "codex":
|
|
161
|
+
initCodex();
|
|
162
|
+
break;
|
|
163
|
+
case "opencode":
|
|
164
|
+
initOpencode();
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
console.error(`Unknown client: ${client}`);
|
|
168
|
+
console.log("Available clients: claude, cursor, vscode, codex, opencode");
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
program
|
|
174
|
+
.command("mcp")
|
|
175
|
+
.description("Start the MCP server")
|
|
176
|
+
.action(async () => {
|
|
177
|
+
// Import and run the server
|
|
178
|
+
await import("./server.js");
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Default command (no args) - show help
|
|
182
|
+
program.action(() => {
|
|
183
|
+
program.help();
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
program.parse();
|
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thetoolforthat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "MCP server for searching curated developer tools, design resources, and agencies",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "
|
|
6
|
+
"main": "cli.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"thetoolforthat": "./
|
|
8
|
+
"thetoolforthat": "./cli.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
+
"cli.js",
|
|
11
12
|
"server.js"
|
|
12
13
|
],
|
|
13
14
|
"scripts": {
|
|
14
|
-
"start": "node
|
|
15
|
+
"start": "node cli.js mcp"
|
|
15
16
|
},
|
|
16
17
|
"keywords": [
|
|
17
18
|
"mcp",
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"homepage": "https://github.com/pipeabellos/thetoolforthat#readme",
|
|
33
34
|
"dependencies": {
|
|
34
35
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
36
|
+
"commander": "^14.0.2",
|
|
35
37
|
"zod": "^4.3.5"
|
|
36
38
|
}
|
|
37
39
|
}
|
package/server.js
CHANGED
|
File without changes
|