@cite42/mcp 0.6.0 → 0.6.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 +43 -39
- package/dist/stdio.cjs +4 -4
- package/dist/stdio.mjs +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
MCP server for [Cite42, the AI search visibility, SEO keyword & trends API](https://www.cite42.dev): market research tools for your AI agent.
|
|
6
6
|
|
|
7
|
-
Once connected, Claude Code, Claude Desktop, Codex CLI, or
|
|
7
|
+
Once connected, Claude Code, Claude Desktop, Codex CLI, Cursor, or ChatGPT can:
|
|
8
8
|
|
|
9
9
|
- **Query AI models** (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews) and see each model's answer and the sources it cites
|
|
10
10
|
- **Track brand visibility** in AI answers: rankings, head-to-head comparisons, and sentiment
|
|
@@ -18,53 +18,63 @@ Once connected, Claude Code, Claude Desktop, Codex CLI, or Cursor can:
|
|
|
18
18
|
## Requirements
|
|
19
19
|
|
|
20
20
|
- **A Cite42 account**, free to create at [cite42.dev](https://www.cite42.dev)
|
|
21
|
-
- **Node.js 22.13 or newer and a Cite42 API key**
|
|
21
|
+
- For the API-key setup only: **Node.js 22.13 or newer and a Cite42 API key**
|
|
22
22
|
|
|
23
23
|
## Installation
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
Most clients connect to the hosted server at `https://mcp.cite42.dev` and sign in with your Cite42 account in the browser. There is no API key to create or paste, and nothing to install locally. For CI, servers, or machines without a browser, run this package with an API key instead; see [API key setup](#api-key-setup-ci-servers-no-browser).
|
|
26
26
|
|
|
27
|
-
###
|
|
27
|
+
### Claude Code
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
2. Open **Dashboard → API Keys**: [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys)
|
|
33
|
-
3. Create a key and copy it (it looks like `cite42_live_...`)
|
|
34
|
-
|
|
35
|
-
### Step 2: Add the server to your client
|
|
29
|
+
```bash
|
|
30
|
+
claude mcp add --transport http --scope user cite42 https://mcp.cite42.dev && claude mcp login cite42
|
|
31
|
+
```
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
Your browser opens to sign in. Then start Claude Code, or restart it if it was already open, and check with `/mcp`.
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
### Codex CLI
|
|
40
36
|
|
|
41
37
|
```bash
|
|
42
|
-
|
|
38
|
+
codex mcp add cite42 --url https://mcp.cite42.dev
|
|
43
39
|
```
|
|
44
40
|
|
|
45
|
-
|
|
41
|
+
Codex opens your browser to sign in. If it doesn't, run `codex mcp login cite42`. Then start a new session.
|
|
42
|
+
|
|
43
|
+
### Cursor
|
|
46
44
|
|
|
47
|
-
|
|
48
|
-
2. Select **Add custom connector**.
|
|
49
|
-
3. Enter **Cite42** for the name and paste this remote MCP URL:
|
|
45
|
+
[Add to Cursor](https://cursor.com/install-mcp?name=cite42&config=eyJ1cmwiOiJodHRwczovL21jcC5jaXRlNDIuZGV2In0%3D), or add this under **Settings → MCP**, or in `~/.cursor/mcp.json`:
|
|
50
46
|
|
|
51
|
-
```
|
|
52
|
-
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"cite42": { "url": "https://mcp.cite42.dev" }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Sign in with your Cite42 account when Cursor asks.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
### Claude Desktop and Claude.ai
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
[Add to Claude](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Cite42&connectorUrl=https%3A%2F%2Fmcp.cite42.dev) opens the connector dialog with Cite42 filled in. Or open **Settings → Connectors → Add custom connector**, name it **Cite42**, and paste `https://mcp.cite42.dev`. Click **Connect** and sign in. The connector appears in both Claude Desktop and Claude.ai.
|
|
60
|
+
|
|
61
|
+
### ChatGPT and Codex Desktop
|
|
62
|
+
|
|
63
|
+
Turn on **Developer mode** in **Settings → Security and login**, then add a plugin under **Settings → Plugins** with the MCP server URL `https://mcp.cite42.dev` and **OAuth**.
|
|
64
|
+
|
|
65
|
+
### API key setup (CI, servers, no browser)
|
|
66
|
+
|
|
67
|
+
Create a key at [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys) (it looks like `cite42_live_...` and is shown once), then replace `cite42_live_your_key_here` below. The client starts this package on demand; you don't need to keep it running.
|
|
60
68
|
|
|
61
69
|
```bash
|
|
70
|
+
# Claude Code
|
|
71
|
+
claude mcp add --scope user cite42 -e CITE42_API_KEY=cite42_live_your_key_here -- npx -y @cite42/mcp
|
|
72
|
+
|
|
73
|
+
# Codex CLI
|
|
62
74
|
codex mcp add cite42 --env CITE42_API_KEY=cite42_live_your_key_here -- npx -y @cite42/mcp
|
|
63
75
|
```
|
|
64
76
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
Add this under **Settings → MCP**, or save it to `~/.cursor/mcp.json`:
|
|
77
|
+
For Cursor, save this to `~/.cursor/mcp.json`:
|
|
68
78
|
|
|
69
79
|
```json
|
|
70
80
|
{
|
|
@@ -80,21 +90,14 @@ Add this under **Settings → MCP**, or save it to `~/.cursor/mcp.json`:
|
|
|
80
90
|
}
|
|
81
91
|
```
|
|
82
92
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Local MCP servers are started by the client, so their config is only picked up on a fresh start. The Claude Desktop connector is ready after sign-in.
|
|
86
|
-
|
|
87
|
-
- **Claude Code / Codex CLI**: exit the current session and open a **new terminal** (or start a new `claude` / `codex` session)
|
|
88
|
-
- **Cursor**: fully quit and reopen the app
|
|
89
|
-
|
|
90
|
-
You do not need to keep `npx -y @cite42/mcp` running in a separate terminal. Local MCP clients start it automatically when the session needs tools.
|
|
93
|
+
Restart the client afterwards: a new terminal or `claude`/`codex` session, or fully quit and reopen Cursor.
|
|
91
94
|
|
|
92
|
-
###
|
|
95
|
+
### Verify it's running
|
|
93
96
|
|
|
94
|
-
- **Claude Code:** run `claude mcp list` and check that `cite42` shows as
|
|
95
|
-
- **Claude Desktop:** open **Settings → Connectors** and confirm Cite42 is connected.
|
|
97
|
+
- **Claude Code:** run `claude mcp list` and check that `cite42` shows as connected, or type `/mcp` inside a session.
|
|
96
98
|
- **Codex CLI:** run `codex mcp list`.
|
|
97
|
-
- **Cursor:** look for `cite42` in the MCP/tools indicator.
|
|
99
|
+
- **Cursor:** look for `cite42` in the MCP/tools indicator.
|
|
100
|
+
- **Claude Desktop / Claude.ai:** open **Settings → Connectors** and confirm Cite42 is connected.
|
|
98
101
|
|
|
99
102
|
If it doesn't appear, see [Troubleshooting](#troubleshooting).
|
|
100
103
|
|
|
@@ -178,7 +181,7 @@ Cite42 exposes 29 MCP tools: 4 free account tools (including the compatibility a
|
|
|
178
181
|
|
|
179
182
|
## Configuration
|
|
180
183
|
|
|
181
|
-
- `CITE42_API_KEY`: required. Your API key from [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
|
|
184
|
+
- `CITE42_API_KEY`: required for the local package. Your API key from [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
|
|
182
185
|
- `CITE42_API_BASE`: optional. Defaults to `https://www.cite42.dev/api/v1`.
|
|
183
186
|
|
|
184
187
|
You can also pass these as CLI flags instead of environment variables:
|
|
@@ -198,6 +201,7 @@ stdio, published npm, and local OAuth targets. Run `npm run test:stdio` for a fr
|
|
|
198
201
|
smoke test against a loopback fake API. See [local MCP testing](../../docs/mcp-testing.md) in the repository.
|
|
199
202
|
|
|
200
203
|
- **Server not listed after setup**: make sure you fully restarted the client (new terminal for CLI clients, full quit for desktop apps).
|
|
204
|
+
- **"No Cite42 account is linked to this sign-in"**: you signed in with a different account than the one you use at cite42.dev. In Claude Code run `claude mcp logout cite42`, then `claude mcp login cite42` and pick the same sign-in method as on the dashboard.
|
|
201
205
|
- **`command not found: npx`**: install Node.js 22.13+ from [nodejs.org](https://nodejs.org), then restart your terminal.
|
|
202
206
|
- **Tool calls fail with an auth error**: check the key was passed correctly (`CITE42_API_KEY`, no quotes or trailing spaces) and is active at [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
|
|
203
207
|
- **Tool calls fail with an insufficient-balance error**: add funds at [www.cite42.dev/app](https://www.cite42.dev/app).
|
package/dist/stdio.cjs
CHANGED
|
@@ -461,7 +461,7 @@ var aivMapAiPrompts = (0, import_tools.createTool)({
|
|
|
461
461
|
id: "cite42_map_ai_prompts",
|
|
462
462
|
mcp: readOnly("Map buyer prompts for AI search"),
|
|
463
463
|
description: workflowDescription(
|
|
464
|
-
"Run the AI-prompt-map workflow:
|
|
464
|
+
"Run the AI-prompt-map workflow: research for a list of buyer prompts worth tracking, from AI search, SEO demand, trends, citations, Reddit, and YouTube data. It returns evidence and a suggested prompt, not a finished list: write the prompts from it, then offer to track the best of them with cite42_tracker_create once the user has seen them."
|
|
465
465
|
),
|
|
466
466
|
inputSchema: import_zod.z.object({
|
|
467
467
|
topic: queryText("Market, product category, buyer problem, or audience to map prompts for."),
|
|
@@ -507,7 +507,7 @@ var aivGenerateContentBrief = (0, import_tools.createTool)({
|
|
|
507
507
|
id: "cite42_generate_content_brief",
|
|
508
508
|
mcp: readOnly("Generate content brief data"),
|
|
509
509
|
description: workflowDescription(
|
|
510
|
-
"Run the content-brief workflow: AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals
|
|
510
|
+
"Run the content-brief workflow: research for a content brief from AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals. It returns evidence and a suggested prompt; write the brief from it."
|
|
511
511
|
),
|
|
512
512
|
inputSchema: import_zod.z.object({
|
|
513
513
|
topic: queryText("Topic, keyword, or content idea to brief."),
|
|
@@ -574,7 +574,7 @@ var TRACKER_BILLING_DESCRIPTION = "Tracker management and stored-report reads ar
|
|
|
574
574
|
var aivTrackerCreate = (0, import_tools.createTool)({
|
|
575
575
|
id: "cite42_tracker_create",
|
|
576
576
|
mcp: mutation("Create Cite42 tracker draft"),
|
|
577
|
-
description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts
|
|
577
|
+
description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts you write from its research. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
|
|
578
578
|
inputSchema: import_zod.z.object(trackerDefinitionFields),
|
|
579
579
|
execute: async (input) => aivPost("/trackers", input)
|
|
580
580
|
});
|
|
@@ -695,7 +695,7 @@ if (!resolveApiKey()) {
|
|
|
695
695
|
);
|
|
696
696
|
process.exit(1);
|
|
697
697
|
}
|
|
698
|
-
buildCite42Server("0.6.
|
|
698
|
+
buildCite42Server("0.6.1").startStdio().catch((error) => {
|
|
699
699
|
console.error("[@cite42/mcp] Fatal error:", error);
|
|
700
700
|
process.exit(1);
|
|
701
701
|
});
|
package/dist/stdio.mjs
CHANGED
|
@@ -460,7 +460,7 @@ var aivMapAiPrompts = createTool({
|
|
|
460
460
|
id: "cite42_map_ai_prompts",
|
|
461
461
|
mcp: readOnly("Map buyer prompts for AI search"),
|
|
462
462
|
description: workflowDescription(
|
|
463
|
-
"Run the AI-prompt-map workflow:
|
|
463
|
+
"Run the AI-prompt-map workflow: research for a list of buyer prompts worth tracking, from AI search, SEO demand, trends, citations, Reddit, and YouTube data. It returns evidence and a suggested prompt, not a finished list: write the prompts from it, then offer to track the best of them with cite42_tracker_create once the user has seen them."
|
|
464
464
|
),
|
|
465
465
|
inputSchema: z.object({
|
|
466
466
|
topic: queryText("Market, product category, buyer problem, or audience to map prompts for."),
|
|
@@ -506,7 +506,7 @@ var aivGenerateContentBrief = createTool({
|
|
|
506
506
|
id: "cite42_generate_content_brief",
|
|
507
507
|
mcp: readOnly("Generate content brief data"),
|
|
508
508
|
description: workflowDescription(
|
|
509
|
-
"Run the content-brief workflow: AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals
|
|
509
|
+
"Run the content-brief workflow: research for a content brief from AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals. It returns evidence and a suggested prompt; write the brief from it."
|
|
510
510
|
),
|
|
511
511
|
inputSchema: z.object({
|
|
512
512
|
topic: queryText("Topic, keyword, or content idea to brief."),
|
|
@@ -573,7 +573,7 @@ var TRACKER_BILLING_DESCRIPTION = "Tracker management and stored-report reads ar
|
|
|
573
573
|
var aivTrackerCreate = createTool({
|
|
574
574
|
id: "cite42_tracker_create",
|
|
575
575
|
mcp: mutation("Create Cite42 tracker draft"),
|
|
576
|
-
description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts
|
|
576
|
+
description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts you write from its research. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
|
|
577
577
|
inputSchema: z.object(trackerDefinitionFields),
|
|
578
578
|
execute: async (input) => aivPost("/trackers", input)
|
|
579
579
|
});
|
|
@@ -694,7 +694,7 @@ if (!resolveApiKey()) {
|
|
|
694
694
|
);
|
|
695
695
|
process.exit(1);
|
|
696
696
|
}
|
|
697
|
-
buildCite42Server("0.6.
|
|
697
|
+
buildCite42Server("0.6.1").startStdio().catch((error) => {
|
|
698
698
|
console.error("[@cite42/mcp] Fatal error:", error);
|
|
699
699
|
process.exit(1);
|
|
700
700
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cite42/mcp",
|
|
3
3
|
"mcpName": "dev.cite42/mcp",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.1",
|
|
5
5
|
"description": "Cite42 MCP server: query the models behind ChatGPT, Claude, Perplexity & Gemini, plus Google AI Overviews, for brand rankings, AI citations, SEO keyword data, and Reddit/YouTube trends, and schedule weekly or monthly trackers that watch a list of prompts over time. Works with Claude Code, Claude Desktop, Codex CLI, Cursor, and any MCP client.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|