@tooltrace/mcp-server 0.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/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +200 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ToolTrace
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# ToolTrace MCP Server
|
|
2
|
+
|
|
3
|
+
Give AI agents a complete web intelligence toolkit. This [Model Context Protocol](https://modelcontextprotocol.io/) server connects Claude, Cursor, VS Code Copilot, and other MCP clients to the [ToolTrace](https://tooltrace.io) API.
|
|
4
|
+
|
|
5
|
+
## Tools
|
|
6
|
+
|
|
7
|
+
| Tool | Description |
|
|
8
|
+
|------|-------------|
|
|
9
|
+
| `tooltrace_extract` | Extract clean Markdown, text, metadata, links, JSON-LD, and sections from any webpage |
|
|
10
|
+
| `tooltrace_metadata` | Get page title, description, canonical URL, Open Graph, and Twitter card fields |
|
|
11
|
+
| `tooltrace_links` | Extract all internal and external links with anchor text |
|
|
12
|
+
| `tooltrace_schema` | Extract JSON-LD structured data (Article, Product, FAQ, etc.) |
|
|
13
|
+
| `tooltrace_seo_audit` | Run an SEO audit with scored checks and recommendations |
|
|
14
|
+
| `tooltrace_tech_stack` | Detect CMS, frameworks, analytics, CDN, hosting, and more |
|
|
15
|
+
| `tooltrace_sitemap` | Inspect and parse XML sitemaps |
|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
### 1. Get a free API key
|
|
20
|
+
|
|
21
|
+
Sign up at [tooltrace.io/signup](https://tooltrace.io/signup). The free plan includes 1,000 credits per month.
|
|
22
|
+
|
|
23
|
+
### 2. Install
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g @tooltrace/mcp-server
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 3. Configure your MCP client
|
|
30
|
+
|
|
31
|
+
**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"mcpServers": {
|
|
36
|
+
"tooltrace": {
|
|
37
|
+
"command": "tooltrace-mcp",
|
|
38
|
+
"env": {
|
|
39
|
+
"TOOLTRACE_API_KEY": "your-api-key"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Claude Code:**
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
claude mcp add tooltrace tooltrace-mcp -e TOOLTRACE_API_KEY=your-api-key
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Cursor** (`.cursor/mcp.json`):
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"mcpServers": {
|
|
57
|
+
"tooltrace": {
|
|
58
|
+
"command": "tooltrace-mcp",
|
|
59
|
+
"env": {
|
|
60
|
+
"TOOLTRACE_API_KEY": "your-api-key"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**VS Code** (`.vscode/mcp.json`):
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"servers": {
|
|
72
|
+
"tooltrace": {
|
|
73
|
+
"command": "tooltrace-mcp",
|
|
74
|
+
"env": {
|
|
75
|
+
"TOOLTRACE_API_KEY": "your-api-key"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Run with npx (no install)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
TOOLTRACE_API_KEY=your-api-key npx @tooltrace/mcp-server
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Usage examples
|
|
89
|
+
|
|
90
|
+
Once connected, your AI agent can:
|
|
91
|
+
|
|
92
|
+
- "Extract the main content from this blog post as Markdown"
|
|
93
|
+
- "What technologies does competitor.com use?"
|
|
94
|
+
- "Run an SEO audit on our landing page"
|
|
95
|
+
- "Get all the links from this documentation page"
|
|
96
|
+
- "Extract the JSON-LD schema from this product page"
|
|
97
|
+
- "Check the sitemap for this website"
|
|
98
|
+
|
|
99
|
+
## Rendering modes
|
|
100
|
+
|
|
101
|
+
All tools support a `render` parameter:
|
|
102
|
+
|
|
103
|
+
- **`never`**: Fast static fetch, 1 credit. Best for server-rendered pages.
|
|
104
|
+
- **`auto`** (default): Starts static, renders in browser if needed. 1 or 5 credits.
|
|
105
|
+
- **`always`**: Full browser rendering, 5 credits. For JavaScript-heavy SPAs.
|
|
106
|
+
|
|
107
|
+
## Development
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
git clone https://github.com/ToolTrace-io/mcp-server.git
|
|
111
|
+
cd mcp-server
|
|
112
|
+
npm install
|
|
113
|
+
npm run build
|
|
114
|
+
TOOLTRACE_API_KEY=your-key node dist/index.js
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const API_BASE = "https://api.tooltrace.io/v1";
|
|
6
|
+
const USER_AGENT = "tooltrace-mcp/0.1.0";
|
|
7
|
+
function getApiKey() {
|
|
8
|
+
const key = process.env.TOOLTRACE_API_KEY;
|
|
9
|
+
if (!key) {
|
|
10
|
+
throw new Error("TOOLTRACE_API_KEY environment variable is required. " +
|
|
11
|
+
"Get a free key at https://tooltrace.io/signup");
|
|
12
|
+
}
|
|
13
|
+
return key;
|
|
14
|
+
}
|
|
15
|
+
async function callApi(endpoint, body) {
|
|
16
|
+
const res = await fetch(`${API_BASE}${endpoint}`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json",
|
|
20
|
+
"X-ToolTrace-Key": getApiKey(),
|
|
21
|
+
"User-Agent": USER_AGENT,
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify(body),
|
|
24
|
+
});
|
|
25
|
+
if (!res.ok) {
|
|
26
|
+
const text = await res.text().catch(() => "");
|
|
27
|
+
throw new Error(`ToolTrace API ${res.status}: ${text || res.statusText}`);
|
|
28
|
+
}
|
|
29
|
+
return res.json();
|
|
30
|
+
}
|
|
31
|
+
function formatJson(data) {
|
|
32
|
+
return JSON.stringify(data, null, 2);
|
|
33
|
+
}
|
|
34
|
+
// Shared parameter schemas
|
|
35
|
+
const renderParam = z
|
|
36
|
+
.enum(["never", "auto", "always"])
|
|
37
|
+
.default("auto")
|
|
38
|
+
.describe("Rendering mode. 'never' = fast static fetch (1 credit). " +
|
|
39
|
+
"'auto' = static first, browser if needed. " +
|
|
40
|
+
"'always' = browser rendering (5 credits).");
|
|
41
|
+
const waitUntilParam = z
|
|
42
|
+
.enum(["domcontentloaded", "load", "networkidle"])
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Browser navigation milestone. Only used with browser rendering.");
|
|
45
|
+
const waitForSelectorParam = z
|
|
46
|
+
.string()
|
|
47
|
+
.max(200)
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("CSS selector to wait for on rendered pages.");
|
|
50
|
+
const server = new McpServer({
|
|
51
|
+
name: "tooltrace",
|
|
52
|
+
version: "0.1.0",
|
|
53
|
+
});
|
|
54
|
+
// --- Extract ---
|
|
55
|
+
server.tool("tooltrace_extract", "Extract clean content from a webpage. Returns Markdown, plain text, metadata, links, JSON-LD schema, and content sections. Use this for scraping, RAG ingestion, or content analysis.", {
|
|
56
|
+
url: z.string().url().describe("Public webpage URL to extract"),
|
|
57
|
+
render: renderParam,
|
|
58
|
+
wait_until: waitUntilParam,
|
|
59
|
+
wait_for_selector: waitForSelectorParam,
|
|
60
|
+
mode: z
|
|
61
|
+
.enum(["structured", "raw", "both"])
|
|
62
|
+
.default("structured")
|
|
63
|
+
.describe("'structured' for parsed data, 'raw' for HTML, 'both' for everything."),
|
|
64
|
+
include: z
|
|
65
|
+
.array(z.enum(["markdown", "text", "metadata", "links", "schema", "sections"]))
|
|
66
|
+
.default(["markdown", "metadata", "sections"])
|
|
67
|
+
.describe("Which fields to include in the response."),
|
|
68
|
+
}, async (params) => {
|
|
69
|
+
const body = { url: params.url };
|
|
70
|
+
if (params.render)
|
|
71
|
+
body.render = params.render;
|
|
72
|
+
if (params.wait_until)
|
|
73
|
+
body.wait_until = params.wait_until;
|
|
74
|
+
if (params.wait_for_selector)
|
|
75
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
76
|
+
if (params.mode)
|
|
77
|
+
body.mode = params.mode;
|
|
78
|
+
if (params.include)
|
|
79
|
+
body.include = params.include;
|
|
80
|
+
const result = await callApi("/extract", body);
|
|
81
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
82
|
+
});
|
|
83
|
+
// --- Metadata ---
|
|
84
|
+
server.tool("tooltrace_metadata", "Extract page metadata: title, description, canonical URL, author, publication date, favicon, Open Graph, and Twitter card fields. Lightweight alternative to full extraction.", {
|
|
85
|
+
url: z.string().url().describe("Public webpage URL"),
|
|
86
|
+
render: renderParam,
|
|
87
|
+
wait_until: waitUntilParam,
|
|
88
|
+
wait_for_selector: waitForSelectorParam,
|
|
89
|
+
}, async (params) => {
|
|
90
|
+
const body = { url: params.url };
|
|
91
|
+
if (params.render)
|
|
92
|
+
body.render = params.render;
|
|
93
|
+
if (params.wait_until)
|
|
94
|
+
body.wait_until = params.wait_until;
|
|
95
|
+
if (params.wait_for_selector)
|
|
96
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
97
|
+
const result = await callApi("/metadata", body);
|
|
98
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
99
|
+
});
|
|
100
|
+
// --- Links ---
|
|
101
|
+
server.tool("tooltrace_links", "Extract all links from a webpage with anchor text, internal/external classification, and normalized URLs.", {
|
|
102
|
+
url: z.string().url().describe("Public webpage URL"),
|
|
103
|
+
render: renderParam,
|
|
104
|
+
wait_until: waitUntilParam,
|
|
105
|
+
wait_for_selector: waitForSelectorParam,
|
|
106
|
+
mode: z
|
|
107
|
+
.enum(["normalized", "raw"])
|
|
108
|
+
.default("normalized")
|
|
109
|
+
.describe("'normalized' deduplicates and cleans URLs. 'raw' preserves originals."),
|
|
110
|
+
}, async (params) => {
|
|
111
|
+
const body = { url: params.url };
|
|
112
|
+
if (params.render)
|
|
113
|
+
body.render = params.render;
|
|
114
|
+
if (params.wait_until)
|
|
115
|
+
body.wait_until = params.wait_until;
|
|
116
|
+
if (params.wait_for_selector)
|
|
117
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
118
|
+
if (params.mode)
|
|
119
|
+
body.mode = params.mode;
|
|
120
|
+
const result = await callApi("/links", body);
|
|
121
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
122
|
+
});
|
|
123
|
+
// --- Schema ---
|
|
124
|
+
server.tool("tooltrace_schema", "Extract JSON-LD structured data from a webpage. Returns schema.org entities like Article, Product, Organization, FAQ, BreadcrumbList, etc.", {
|
|
125
|
+
url: z.string().url().describe("Public webpage URL"),
|
|
126
|
+
render: renderParam,
|
|
127
|
+
wait_until: waitUntilParam,
|
|
128
|
+
wait_for_selector: waitForSelectorParam,
|
|
129
|
+
mode: z
|
|
130
|
+
.enum(["normalized", "raw"])
|
|
131
|
+
.default("normalized")
|
|
132
|
+
.describe("'normalized' deduplicates entities. 'raw' preserves original JSON-LD blocks."),
|
|
133
|
+
}, async (params) => {
|
|
134
|
+
const body = { url: params.url };
|
|
135
|
+
if (params.render)
|
|
136
|
+
body.render = params.render;
|
|
137
|
+
if (params.wait_until)
|
|
138
|
+
body.wait_until = params.wait_until;
|
|
139
|
+
if (params.wait_for_selector)
|
|
140
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
141
|
+
if (params.mode)
|
|
142
|
+
body.mode = params.mode;
|
|
143
|
+
const result = await callApi("/schema", body);
|
|
144
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
145
|
+
});
|
|
146
|
+
// --- SEO Audit ---
|
|
147
|
+
server.tool("tooltrace_seo_audit", "Run an SEO audit on a webpage. Returns a score (0-100), weighted checks for metadata, headings, images, canonical signals, robots directives, social tags, schema, and content length, with evidence and recommendations.", {
|
|
148
|
+
url: z.string().url().describe("Public webpage URL to audit"),
|
|
149
|
+
render: renderParam,
|
|
150
|
+
wait_until: waitUntilParam,
|
|
151
|
+
wait_for_selector: waitForSelectorParam,
|
|
152
|
+
}, async (params) => {
|
|
153
|
+
const body = { url: params.url };
|
|
154
|
+
if (params.render)
|
|
155
|
+
body.render = params.render;
|
|
156
|
+
if (params.wait_until)
|
|
157
|
+
body.wait_until = params.wait_until;
|
|
158
|
+
if (params.wait_for_selector)
|
|
159
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
160
|
+
const result = await callApi("/seo-audit", body);
|
|
161
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
162
|
+
});
|
|
163
|
+
// --- Tech Stack ---
|
|
164
|
+
server.tool("tooltrace_tech_stack", "Detect the technology stack of a website: CMS, frameworks, JavaScript libraries, analytics, CDN, hosting, fonts, security tools, and more. Returns categorized detections with confidence levels.", {
|
|
165
|
+
url: z.string().url().describe("Public webpage URL to analyze"),
|
|
166
|
+
render: renderParam,
|
|
167
|
+
wait_until: waitUntilParam,
|
|
168
|
+
wait_for_selector: waitForSelectorParam,
|
|
169
|
+
}, async (params) => {
|
|
170
|
+
const body = { url: params.url };
|
|
171
|
+
if (params.render)
|
|
172
|
+
body.render = params.render;
|
|
173
|
+
if (params.wait_until)
|
|
174
|
+
body.wait_until = params.wait_until;
|
|
175
|
+
if (params.wait_for_selector)
|
|
176
|
+
body.wait_for_selector = params.wait_for_selector;
|
|
177
|
+
const result = await callApi("/tech-stack", body);
|
|
178
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
179
|
+
});
|
|
180
|
+
// --- Sitemap Inspector ---
|
|
181
|
+
server.tool("tooltrace_sitemap", "Inspect a website's sitemap. Discovers sitemap URLs, parses sitemap XML, and returns listed page URLs with last-modified dates and change frequencies.", {
|
|
182
|
+
url: z.string().url().describe("Website URL or direct sitemap URL"),
|
|
183
|
+
render: renderParam,
|
|
184
|
+
}, async (params) => {
|
|
185
|
+
const body = { url: params.url };
|
|
186
|
+
if (params.render)
|
|
187
|
+
body.render = params.render;
|
|
188
|
+
const result = await callApi("/sitemap-inspector", body);
|
|
189
|
+
return { content: [{ type: "text", text: formatJson(result) }] };
|
|
190
|
+
});
|
|
191
|
+
// --- Start server ---
|
|
192
|
+
async function main() {
|
|
193
|
+
const transport = new StdioServerTransport();
|
|
194
|
+
await server.connect(transport);
|
|
195
|
+
}
|
|
196
|
+
main().catch((err) => {
|
|
197
|
+
console.error("Fatal:", err);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
});
|
|
200
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tooltrace/mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "ToolTrace MCP server — give AI agents a complete web intelligence toolkit",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "ToolTrace <info@tooltrace.io>",
|
|
7
|
+
"homepage": "https://tooltrace.io",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/ToolTrace-io/mcp-server"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"mcp",
|
|
14
|
+
"model-context-protocol",
|
|
15
|
+
"tooltrace",
|
|
16
|
+
"web-scraping",
|
|
17
|
+
"ai-agents",
|
|
18
|
+
"rag",
|
|
19
|
+
"seo",
|
|
20
|
+
"tech-stack",
|
|
21
|
+
"metadata",
|
|
22
|
+
"claude",
|
|
23
|
+
"cursor"
|
|
24
|
+
],
|
|
25
|
+
"type": "module",
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"bin": {
|
|
28
|
+
"tooltrace-mcp": "dist/index.js"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"start": "node dist/index.js",
|
|
37
|
+
"prepublishOnly": "npm run build"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"typescript": "^5.7.0",
|
|
44
|
+
"@types/node": "^22.0.0"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18"
|
|
48
|
+
}
|
|
49
|
+
}
|