@unclick/mcp-server 0.2.5 → 0.3.1
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 +160 -139
- package/dist/abn-tool.js +1 -1
- package/dist/bgg-tool.js +1 -1
- package/dist/carboninterface-tool.js +1 -1
- package/dist/cards/card.d.ts +9 -0
- package/dist/cards/card.d.ts.map +1 -0
- package/dist/cards/card.js +4 -0
- package/dist/cards/card.js.map +1 -0
- package/dist/cards/search-memory-card.d.ts +11 -0
- package/dist/cards/search-memory-card.d.ts.map +1 -0
- package/dist/cards/search-memory-card.js +75 -0
- package/dist/cards/search-memory-card.js.map +1 -0
- package/dist/cards/search-memory-card.test.d.ts +2 -0
- package/dist/cards/search-memory-card.test.d.ts.map +1 -0
- package/dist/cards/search-memory-card.test.js +59 -0
- package/dist/cards/search-memory-card.test.js.map +1 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +265 -4
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +96 -6
- package/dist/client.js.map +1 -1
- package/dist/converter-tools.js +1 -1
- package/dist/crews-tool.d.ts +12 -0
- package/dist/crews-tool.d.ts.map +1 -0
- package/dist/crews-tool.js +125 -0
- package/dist/crews-tool.js.map +1 -0
- package/dist/gdelt-tool.js +4 -4
- package/dist/hackernews-tool.js +1 -1
- package/dist/index.js +0 -0
- package/dist/keychain-secure-input.js +42 -42
- package/dist/line-tool.js +1 -1
- package/dist/linear-tool.js +73 -73
- package/dist/local-catalog-handlers.js +1 -1
- package/dist/local-catalog-handlers.js.map +1 -1
- package/dist/local-tools.js +7 -7
- package/dist/local-tools.js.map +1 -1
- package/dist/memory/__tests__/bitemporal.test.d.ts +8 -0
- package/dist/memory/__tests__/bitemporal.test.d.ts.map +1 -0
- package/dist/memory/__tests__/bitemporal.test.js +148 -0
- package/dist/memory/__tests__/bitemporal.test.js.map +1 -0
- package/dist/memory/__tests__/hybrid-search.test.d.ts +14 -0
- package/dist/memory/__tests__/hybrid-search.test.d.ts.map +1 -0
- package/dist/memory/__tests__/hybrid-search.test.js +304 -0
- package/dist/memory/__tests__/hybrid-search.test.js.map +1 -0
- package/dist/memory/agent.d.ts +34 -0
- package/dist/memory/agent.d.ts.map +1 -0
- package/dist/memory/agent.js +69 -0
- package/dist/memory/agent.js.map +1 -0
- package/dist/memory/conflicts.d.ts +48 -0
- package/dist/memory/conflicts.d.ts.map +1 -0
- package/dist/memory/conflicts.js +209 -0
- package/dist/memory/conflicts.js.map +1 -0
- package/dist/memory/db.d.ts +25 -0
- package/dist/memory/db.d.ts.map +1 -0
- package/dist/memory/db.js +144 -0
- package/dist/memory/db.js.map +1 -0
- package/dist/memory/device.d.ts +20 -0
- package/dist/memory/device.d.ts.map +1 -0
- package/dist/memory/device.js +48 -0
- package/dist/memory/device.js.map +1 -0
- package/dist/memory/embeddings.d.ts +10 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +40 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/handlers.d.ts +11 -0
- package/dist/memory/handlers.d.ts.map +1 -0
- package/dist/memory/handlers.js +219 -0
- package/dist/memory/handlers.js.map +1 -0
- package/dist/memory/instrumentation.d.ts +38 -0
- package/dist/memory/instrumentation.d.ts.map +1 -0
- package/dist/memory/instrumentation.js +97 -0
- package/dist/memory/instrumentation.js.map +1 -0
- package/dist/memory/load-events.d.ts +18 -0
- package/dist/memory/load-events.d.ts.map +1 -0
- package/dist/memory/load-events.js +61 -0
- package/dist/memory/load-events.js.map +1 -0
- package/dist/memory/local.d.ts +40 -0
- package/dist/memory/local.d.ts.map +1 -0
- package/dist/memory/local.js +400 -0
- package/dist/memory/local.js.map +1 -0
- package/dist/memory/session-state.d.ts +37 -0
- package/dist/memory/session-state.d.ts.map +1 -0
- package/dist/memory/session-state.js +82 -0
- package/dist/memory/session-state.js.map +1 -0
- package/dist/memory/supabase.d.ts +104 -0
- package/dist/memory/supabase.d.ts.map +1 -0
- package/dist/memory/supabase.js +710 -0
- package/dist/memory/supabase.js.map +1 -0
- package/dist/memory/tenant-settings.d.ts +33 -0
- package/dist/memory/tenant-settings.d.ts.map +1 -0
- package/dist/memory/tenant-settings.js +79 -0
- package/dist/memory/tenant-settings.js.map +1 -0
- package/dist/memory/tool-awareness.d.ts +66 -0
- package/dist/memory/tool-awareness.d.ts.map +1 -0
- package/dist/memory/tool-awareness.js +307 -0
- package/dist/memory/tool-awareness.js.map +1 -0
- package/dist/memory/types.d.ts +97 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +5 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/monday-tool.js +46 -46
- package/dist/musicbrainz-tool.js +1 -1
- package/dist/musicbrainz-tool.js.map +1 -1
- package/dist/numbers-tool.js +2 -2
- package/dist/openfoodfacts-tool.js +1 -1
- package/dist/openmeteo-tool.js +1 -1
- package/dist/radiobrowser-tool.js +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +838 -15
- package/dist/server.js.map +1 -1
- package/dist/signals/emit.d.ts +11 -0
- package/dist/signals/emit.d.ts.map +1 -0
- package/dist/signals/emit.js +26 -0
- package/dist/signals/emit.js.map +1 -0
- package/dist/testpass-tool.d.ts +12 -0
- package/dist/testpass-tool.d.ts.map +1 -0
- package/dist/testpass-tool.js +121 -0
- package/dist/testpass-tool.js.map +1 -0
- package/dist/toilets-tool.js +2 -2
- package/dist/tool-wiring.d.ts +320 -4
- package/dist/tool-wiring.d.ts.map +1 -1
- package/dist/tool-wiring.js +246 -5
- package/dist/tool-wiring.js.map +1 -1
- package/dist/trivia-tool.js +5 -5
- package/dist/usgs-tool.js +1 -1
- package/dist/uxpass-tool.d.ts +24 -0
- package/dist/uxpass-tool.d.ts.map +1 -0
- package/dist/uxpass-tool.js +165 -0
- package/dist/uxpass-tool.js.map +1 -0
- package/dist/vault-bridge.js +7 -7
- package/dist/vercel-tool.d.ts +3 -0
- package/dist/vercel-tool.d.ts.map +1 -1
- package/dist/vercel-tool.js +198 -7
- package/dist/vercel-tool.js.map +1 -1
- package/dist/web-tools.d.ts +62 -0
- package/dist/web-tools.d.ts.map +1 -0
- package/dist/web-tools.js +271 -0
- package/dist/web-tools.js.map +1 -0
- package/package.json +69 -65
- package/public/icon.svg +15 -15
- package/server.json +37 -37
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in web tools for UnClick MCP: web_search, web_scrape, search_docs.
|
|
3
|
+
*
|
|
4
|
+
* These back up UnClick's "you can remove Exa/Tavily/Firecrawl/context7" nudge
|
|
5
|
+
* by giving it real first-party implementations. All three proxy to third-party
|
|
6
|
+
* APIs configured via Vercel env vars:
|
|
7
|
+
*
|
|
8
|
+
* - TAVILY_API_KEY (preferred for search + extract)
|
|
9
|
+
* - EXA_API_KEY (fallback for search)
|
|
10
|
+
* - BRAVE_SEARCH_API_KEY (fallback for search)
|
|
11
|
+
* - FIRECRAWL_API_KEY (preferred for scrape; Tavily extract is fallback)
|
|
12
|
+
*
|
|
13
|
+
* When none are configured, the tools return a friendly message pointing users
|
|
14
|
+
* at settings. context7 (search_docs) is free and needs no key.
|
|
15
|
+
*/
|
|
16
|
+
import { getBackend } from "./memory/db.js";
|
|
17
|
+
async function safeJson(res) {
|
|
18
|
+
try {
|
|
19
|
+
return (await res.json());
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// ─── Fact auto-save helper ─────────────────────────────────────────────────
|
|
26
|
+
async function saveFactSafely(fact, category, confidence = 0.5) {
|
|
27
|
+
try {
|
|
28
|
+
const db = await getBackend();
|
|
29
|
+
await db.addFact({ fact, category, confidence });
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Never let memory errors break the tool call.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function truncate(s, n) {
|
|
36
|
+
return s.length > n ? s.slice(0, n - 1) + "\u2026" : s;
|
|
37
|
+
}
|
|
38
|
+
async function searchTavily(query, limit, topic, apiKey) {
|
|
39
|
+
const res = await fetch("https://api.tavily.com/search", {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: { "Content-Type": "application/json" },
|
|
42
|
+
body: JSON.stringify({
|
|
43
|
+
api_key: apiKey,
|
|
44
|
+
query,
|
|
45
|
+
max_results: limit,
|
|
46
|
+
topic: topic === "news" ? "news" : "general",
|
|
47
|
+
include_answer: false,
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
if (!res.ok)
|
|
51
|
+
throw new Error(`Tavily search failed: HTTP ${res.status}`);
|
|
52
|
+
const data = (await safeJson(res));
|
|
53
|
+
return (data?.results ?? []).map((r) => ({
|
|
54
|
+
title: r.title,
|
|
55
|
+
url: r.url,
|
|
56
|
+
snippet: truncate(r.content ?? "", 400),
|
|
57
|
+
score: r.score,
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
async function searchExa(query, limit, apiKey) {
|
|
61
|
+
const res = await fetch("https://api.exa.ai/search", {
|
|
62
|
+
method: "POST",
|
|
63
|
+
headers: {
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
"x-api-key": apiKey,
|
|
66
|
+
},
|
|
67
|
+
body: JSON.stringify({ query, numResults: limit, contents: { text: true } }),
|
|
68
|
+
});
|
|
69
|
+
if (!res.ok)
|
|
70
|
+
throw new Error(`Exa search failed: HTTP ${res.status}`);
|
|
71
|
+
const data = (await safeJson(res));
|
|
72
|
+
return (data?.results ?? []).map((r) => ({
|
|
73
|
+
title: r.title ?? r.url,
|
|
74
|
+
url: r.url,
|
|
75
|
+
snippet: truncate(r.text ?? "", 400),
|
|
76
|
+
score: r.score,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
async function searchBrave(query, limit, apiKey) {
|
|
80
|
+
const url = new URL("https://api.search.brave.com/res/v1/web/search");
|
|
81
|
+
url.searchParams.set("q", query);
|
|
82
|
+
url.searchParams.set("count", String(limit));
|
|
83
|
+
const res = await fetch(url.toString(), {
|
|
84
|
+
headers: {
|
|
85
|
+
Accept: "application/json",
|
|
86
|
+
"X-Subscription-Token": apiKey,
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
if (!res.ok)
|
|
90
|
+
throw new Error(`Brave search failed: HTTP ${res.status}`);
|
|
91
|
+
const data = (await safeJson(res));
|
|
92
|
+
return (data?.web?.results ?? []).map((r) => ({
|
|
93
|
+
title: r.title,
|
|
94
|
+
url: r.url,
|
|
95
|
+
snippet: truncate(r.description ?? "", 400),
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
export async function webSearch(args) {
|
|
99
|
+
const query = String(args.query ?? "").trim();
|
|
100
|
+
if (!query)
|
|
101
|
+
return { error: "query is required" };
|
|
102
|
+
const limit = Math.min(Math.max(Number(args.limit) || 5, 1), 10);
|
|
103
|
+
const topic = String(args.topic ?? "general");
|
|
104
|
+
const tavilyKey = process.env.TAVILY_API_KEY;
|
|
105
|
+
const exaKey = process.env.EXA_API_KEY;
|
|
106
|
+
const braveKey = process.env.BRAVE_SEARCH_API_KEY;
|
|
107
|
+
let results = [];
|
|
108
|
+
let provider = "";
|
|
109
|
+
try {
|
|
110
|
+
if (tavilyKey) {
|
|
111
|
+
results = await searchTavily(query, limit, topic, tavilyKey);
|
|
112
|
+
provider = "tavily";
|
|
113
|
+
}
|
|
114
|
+
else if (exaKey) {
|
|
115
|
+
results = await searchExa(query, limit, exaKey);
|
|
116
|
+
provider = "exa";
|
|
117
|
+
}
|
|
118
|
+
else if (braveKey) {
|
|
119
|
+
results = await searchBrave(query, limit, braveKey);
|
|
120
|
+
provider = "brave";
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return {
|
|
124
|
+
error: "Web search is not configured. Ask your admin to add a search API key (TAVILY_API_KEY, EXA_API_KEY, or BRAVE_SEARCH_API_KEY) in settings.",
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
return { error: err.message };
|
|
130
|
+
}
|
|
131
|
+
// Low-confidence fact so decay handles noise. The brief favors saving on scrape,
|
|
132
|
+
// but the "UnClick remembers your searches" promise needs something in the log.
|
|
133
|
+
let remembered;
|
|
134
|
+
if (results.length > 0 && query.length >= 4) {
|
|
135
|
+
const top = results[0];
|
|
136
|
+
const factText = `Searched for "${query}" on ${new Date().toISOString().slice(0, 10)}. Top result: ${top.title} (${top.url})`;
|
|
137
|
+
void saveFactSafely(factText, "search", 0.5);
|
|
138
|
+
remembered = factText;
|
|
139
|
+
}
|
|
140
|
+
return { query, results, provider, remembered };
|
|
141
|
+
}
|
|
142
|
+
async function scrapeFirecrawl(url, format, apiKey) {
|
|
143
|
+
const fcFormat = format === "html" ? "html" : "markdown";
|
|
144
|
+
const res = await fetch("https://api.firecrawl.dev/v1/scrape", {
|
|
145
|
+
method: "POST",
|
|
146
|
+
headers: {
|
|
147
|
+
"Content-Type": "application/json",
|
|
148
|
+
Authorization: `Bearer ${apiKey}`,
|
|
149
|
+
},
|
|
150
|
+
body: JSON.stringify({ url, formats: [fcFormat] }),
|
|
151
|
+
});
|
|
152
|
+
if (!res.ok)
|
|
153
|
+
throw new Error(`Firecrawl scrape failed: HTTP ${res.status}`);
|
|
154
|
+
const data = (await safeJson(res));
|
|
155
|
+
const raw = format === "html" ? data?.data?.html : data?.data?.markdown;
|
|
156
|
+
return { content: raw ?? "", title: data?.data?.metadata?.title };
|
|
157
|
+
}
|
|
158
|
+
async function scrapeTavily(url, apiKey) {
|
|
159
|
+
const res = await fetch("https://api.tavily.com/extract", {
|
|
160
|
+
method: "POST",
|
|
161
|
+
headers: { "Content-Type": "application/json" },
|
|
162
|
+
body: JSON.stringify({ api_key: apiKey, urls: [url] }),
|
|
163
|
+
});
|
|
164
|
+
if (!res.ok)
|
|
165
|
+
throw new Error(`Tavily extract failed: HTTP ${res.status}`);
|
|
166
|
+
const data = (await safeJson(res));
|
|
167
|
+
const first = data?.results?.[0];
|
|
168
|
+
return { content: first?.raw_content ?? "" };
|
|
169
|
+
}
|
|
170
|
+
function markdownToText(md) {
|
|
171
|
+
return md
|
|
172
|
+
.replace(/```[\s\S]*?```/g, "")
|
|
173
|
+
.replace(/\[(.*?)\]\(.*?\)/g, "$1")
|
|
174
|
+
.replace(/[*_`#>]/g, "")
|
|
175
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
176
|
+
.trim();
|
|
177
|
+
}
|
|
178
|
+
export async function webScrape(args) {
|
|
179
|
+
const url = String(args.url ?? "").trim();
|
|
180
|
+
if (!url)
|
|
181
|
+
return { error: "url is required" };
|
|
182
|
+
const formatInput = String(args.format ?? "markdown");
|
|
183
|
+
const format = formatInput === "text" || formatInput === "html" ? formatInput : "markdown";
|
|
184
|
+
const firecrawlKey = process.env.FIRECRAWL_API_KEY;
|
|
185
|
+
const tavilyKey = process.env.TAVILY_API_KEY;
|
|
186
|
+
try {
|
|
187
|
+
let content = "";
|
|
188
|
+
let title;
|
|
189
|
+
let provider = "";
|
|
190
|
+
if (firecrawlKey) {
|
|
191
|
+
const r = await scrapeFirecrawl(url, format, firecrawlKey);
|
|
192
|
+
content = r.content;
|
|
193
|
+
title = r.title;
|
|
194
|
+
provider = "firecrawl";
|
|
195
|
+
}
|
|
196
|
+
else if (tavilyKey) {
|
|
197
|
+
const r = await scrapeTavily(url, tavilyKey);
|
|
198
|
+
content = r.content;
|
|
199
|
+
provider = "tavily";
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
return {
|
|
203
|
+
error: "Web scrape is not configured. Ask your admin to add FIRECRAWL_API_KEY or TAVILY_API_KEY in settings.",
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
if (format === "text") {
|
|
207
|
+
content = markdownToText(content);
|
|
208
|
+
}
|
|
209
|
+
const factText = `Read ${title ?? url} on ${new Date().toISOString().slice(0, 10)} via web_scrape.`;
|
|
210
|
+
void saveFactSafely(factText, "reference", 0.6);
|
|
211
|
+
return { url, format, title, content, provider };
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return { error: err.message };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async function context7JsonRpc(method, params) {
|
|
218
|
+
const res = await fetch("https://mcp.context7.com/mcp", {
|
|
219
|
+
method: "POST",
|
|
220
|
+
headers: {
|
|
221
|
+
"Content-Type": "application/json",
|
|
222
|
+
Accept: "application/json, text/event-stream",
|
|
223
|
+
},
|
|
224
|
+
body: JSON.stringify({
|
|
225
|
+
jsonrpc: "2.0",
|
|
226
|
+
id: 1,
|
|
227
|
+
method: "tools/call",
|
|
228
|
+
params: { name: method, arguments: params },
|
|
229
|
+
}),
|
|
230
|
+
});
|
|
231
|
+
if (!res.ok)
|
|
232
|
+
throw new Error(`context7 failed: HTTP ${res.status}`);
|
|
233
|
+
const data = (await safeJson(res));
|
|
234
|
+
const text = data?.result?.content?.find((c) => c.type === "text")?.text ?? "";
|
|
235
|
+
return text;
|
|
236
|
+
}
|
|
237
|
+
export async function searchDocs(args) {
|
|
238
|
+
const library = String(args.library ?? "").trim();
|
|
239
|
+
if (!library)
|
|
240
|
+
return { error: "library is required" };
|
|
241
|
+
const topic = args.topic ? String(args.topic) : undefined;
|
|
242
|
+
const maxTokens = Math.min(Math.max(Number(args.max_tokens) || 5000, 500), 20000);
|
|
243
|
+
try {
|
|
244
|
+
const libraryId = await context7JsonRpc("resolve-library-id", {
|
|
245
|
+
libraryName: library,
|
|
246
|
+
});
|
|
247
|
+
// resolve-library-id returns a human-readable list; extract first `/org/project`
|
|
248
|
+
const match = libraryId.match(/\/[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+/);
|
|
249
|
+
const resolvedId = match ? match[0] : library;
|
|
250
|
+
const docs = await context7JsonRpc("get-library-docs", {
|
|
251
|
+
context7CompatibleLibraryID: resolvedId,
|
|
252
|
+
tokens: maxTokens,
|
|
253
|
+
topic,
|
|
254
|
+
});
|
|
255
|
+
const factText = topic
|
|
256
|
+
? `Looked up ${library} docs on "${topic}" via search_docs.`
|
|
257
|
+
: `Looked up ${library} documentation via search_docs.`;
|
|
258
|
+
void saveFactSafely(factText, "technical", 0.7);
|
|
259
|
+
return {
|
|
260
|
+
library,
|
|
261
|
+
library_id: resolvedId,
|
|
262
|
+
topic,
|
|
263
|
+
content: docs,
|
|
264
|
+
provider: "context7",
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
catch (err) {
|
|
268
|
+
return { error: err.message };
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=web-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,65 +1,69 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@unclick/mcp-server",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"mcpName": "io.github.malamutemayhem/unclick-mcp-server",
|
|
5
|
-
"description": "MCP server for the UnClick tool marketplace — lets AI agents discover and use every UnClick tool",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"bin": {
|
|
8
|
-
"unclick-mcp": "./dist/index.js"
|
|
9
|
-
},
|
|
10
|
-
"main": "./dist/server.js",
|
|
11
|
-
"exports": {
|
|
12
|
-
".": "./dist/server.js"
|
|
13
|
-
},
|
|
14
|
-
"files": [
|
|
15
|
-
"dist",
|
|
16
|
-
"README.md",
|
|
17
|
-
"logo.png",
|
|
18
|
-
"public",
|
|
19
|
-
"server.json"
|
|
20
|
-
],
|
|
21
|
-
"scripts": {
|
|
22
|
-
"build": "tsc",
|
|
23
|
-
"dev": "tsx src/index.ts",
|
|
24
|
-
"start": "node dist/index.js",
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"@
|
|
30
|
-
"@
|
|
31
|
-
"@
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"@types/
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@unclick/mcp-server",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"mcpName": "io.github.malamutemayhem/unclick-mcp-server",
|
|
5
|
+
"description": "MCP server for the UnClick tool marketplace — lets AI agents discover and use every UnClick tool",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"unclick-mcp": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/server.js",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./dist/server.js"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"logo.png",
|
|
18
|
+
"public",
|
|
19
|
+
"server.json"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"dev": "tsx src/index.ts",
|
|
24
|
+
"start": "node dist/index.js",
|
|
25
|
+
"test": "tsx --test src/memory/__tests__/hybrid-search.test.ts src/memory/__tests__/bitemporal.test.ts && vitest run",
|
|
26
|
+
"prepublishOnly": "npm run build"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@iarna/toml": "^2.2.5",
|
|
30
|
+
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
31
|
+
"@supabase/supabase-js": "^2.103.0",
|
|
32
|
+
"@types/imap": "^0.8.43",
|
|
33
|
+
"@types/nodemailer": "^8.0.0",
|
|
34
|
+
"csv-parse": "^6.2.1",
|
|
35
|
+
"csv-stringify": "^6.7.0",
|
|
36
|
+
"fast-xml-parser": "^5.5.10",
|
|
37
|
+
"imap": "^0.8.19",
|
|
38
|
+
"js-yaml": "^4.1.1",
|
|
39
|
+
"marked": "^17.0.6",
|
|
40
|
+
"nodemailer": "^8.0.5",
|
|
41
|
+
"turndown": "^7.2.4",
|
|
42
|
+
"zod": "^3.23.8"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/js-yaml": "^4.0.9",
|
|
46
|
+
"@types/node": "^25.6.0",
|
|
47
|
+
"@types/turndown": "^5.0.6",
|
|
48
|
+
"@unclick/wizard": "*",
|
|
49
|
+
"tsx": "^4.19.2",
|
|
50
|
+
"typescript": "^5.8.3",
|
|
51
|
+
"vitest": "^4.1.5"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=18"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"mcp",
|
|
58
|
+
"model-context-protocol",
|
|
59
|
+
"unclick",
|
|
60
|
+
"ai",
|
|
61
|
+
"tools",
|
|
62
|
+
"utilities"
|
|
63
|
+
],
|
|
64
|
+
"license": "MIT",
|
|
65
|
+
"repository": {
|
|
66
|
+
"type": "git",
|
|
67
|
+
"url": "https://github.com/malamutemayhem/unclick-agent-native-endpoints"
|
|
68
|
+
}
|
|
69
|
+
}
|
package/public/icon.svg
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
|
2
|
-
<!-- Dark rounded square background -->
|
|
3
|
-
<rect width="512" height="512" rx="61" fill="#0a0a0a"/>
|
|
4
|
-
<!-- White "U" lettermark — geometric, bold, well-centred -->
|
|
5
|
-
<text
|
|
6
|
-
x="256"
|
|
7
|
-
y="345"
|
|
8
|
-
font-family="Arial Black, Arial, Helvetica, sans-serif"
|
|
9
|
-
font-size="310"
|
|
10
|
-
font-weight="900"
|
|
11
|
-
text-anchor="middle"
|
|
12
|
-
fill="#ffffff"
|
|
13
|
-
letter-spacing="-8"
|
|
14
|
-
>U</text>
|
|
15
|
-
</svg>
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
|
|
2
|
+
<!-- Dark rounded square background -->
|
|
3
|
+
<rect width="512" height="512" rx="61" fill="#0a0a0a"/>
|
|
4
|
+
<!-- White "U" lettermark — geometric, bold, well-centred -->
|
|
5
|
+
<text
|
|
6
|
+
x="256"
|
|
7
|
+
y="345"
|
|
8
|
+
font-family="Arial Black, Arial, Helvetica, sans-serif"
|
|
9
|
+
font-size="310"
|
|
10
|
+
font-weight="900"
|
|
11
|
+
text-anchor="middle"
|
|
12
|
+
fill="#ffffff"
|
|
13
|
+
letter-spacing="-8"
|
|
14
|
+
>U</text>
|
|
15
|
+
</svg>
|
package/server.json
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
-
"name": "io.github.malamutemayhem/unclick-mcp-server",
|
|
4
|
-
"title": "UnClick",
|
|
5
|
-
"description": "AI agent tool marketplace.
|
|
6
|
-
"version": "0.2.4",
|
|
7
|
-
"repository": {
|
|
8
|
-
"url": "https://github.com/malamutemayhem/unclick-agent-native-endpoints.git",
|
|
9
|
-
"source": "github"
|
|
10
|
-
},
|
|
11
|
-
"icons": [
|
|
12
|
-
{
|
|
13
|
-
"src": "https://unclick.world/
|
|
14
|
-
"mimeType": "image/png",
|
|
15
|
-
"sizes": ["512x512"]
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"packages": [
|
|
19
|
-
{
|
|
20
|
-
"registryType": "npm",
|
|
21
|
-
"identifier": "@unclick/mcp-server",
|
|
22
|
-
"version": "0.2.3",
|
|
23
|
-
"runtimeHint": "npx",
|
|
24
|
-
"transport": {
|
|
25
|
-
"type": "stdio"
|
|
26
|
-
},
|
|
27
|
-
"environmentVariables": [
|
|
28
|
-
{
|
|
29
|
-
"name": "UNCLICK_API_KEY",
|
|
30
|
-
"description": "Your UnClick API key from https://unclick.world",
|
|
31
|
-
"isRequired": true,
|
|
32
|
-
"isSecret": true
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
|
+
"name": "io.github.malamutemayhem/unclick-mcp-server",
|
|
4
|
+
"title": "UnClick",
|
|
5
|
+
"description": "AI agent tool marketplace. 172+ tools for social, e-commerce, accounting, and messaging.",
|
|
6
|
+
"version": "0.2.4",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/malamutemayhem/unclick-agent-native-endpoints.git",
|
|
9
|
+
"source": "github"
|
|
10
|
+
},
|
|
11
|
+
"icons": [
|
|
12
|
+
{
|
|
13
|
+
"src": "https://unclick.world/favicon.png",
|
|
14
|
+
"mimeType": "image/png",
|
|
15
|
+
"sizes": ["512x512"]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"packages": [
|
|
19
|
+
{
|
|
20
|
+
"registryType": "npm",
|
|
21
|
+
"identifier": "@unclick/mcp-server",
|
|
22
|
+
"version": "0.2.3",
|
|
23
|
+
"runtimeHint": "npx",
|
|
24
|
+
"transport": {
|
|
25
|
+
"type": "stdio"
|
|
26
|
+
},
|
|
27
|
+
"environmentVariables": [
|
|
28
|
+
{
|
|
29
|
+
"name": "UNCLICK_API_KEY",
|
|
30
|
+
"description": "Your UnClick API key from https://unclick.world",
|
|
31
|
+
"isRequired": true,
|
|
32
|
+
"isSecret": true
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
}
|