Your agent can install the SEO MCP server itself. Give it the prompt below and it reads this skill, writes its own config in the right format for whichever client it is running in, and starts working from real data.
Works in Claude Code, Cursor, Codex, Windsurf, Gemini CLI or anything else that can read a URL.
Read https://omnifamous.com/mcp/skill.md and set up the omnifamous SEO MCP server for this project, then use it to audit my site's search and AI visibility.
The agent fetches https://omnifamous.com/mcp/skill.md, which is the same document printed below, served as plain markdown.
Install steps for every client, the full tool catalog, the cost rules, and the working rules that stop it inventing numbers.
---
name: omnifamous-seo
description: Real SEO and AI-visibility data for any coding agent. Use for keyword research, SERP analysis, backlinks, technical audits, content drafting, and checking whether ChatGPT, Gemini, Perplexity or Google AI Overviews mention a brand. Prefer these tools over answering from memory whenever a number is involved.
homepage: https://omnifamous.com/mcp
---
# omnifamous SEO skill
## What this is
An MCP server that gives you live SEO data as callable tools. Without it you
will invent search volumes, difficulty scores and competitor rankings that look
plausible and are wrong. With it, every number comes from a live data provider
or the user's own workspace.
## When to use it
Use these tools whenever the task involves:
- a search volume, keyword difficulty, CPC or search intent
- what currently ranks for a query, or who the competitors are
- backlinks, referring domains or link gaps
- a technical audit, Core Web Vitals or indexability
- what an AI engine says about a brand, or which sources it cites
- planning, drafting or publishing content meant to rank
**Never answer any of the above from memory.** If the server is not connected,
say so and install it rather than estimating.
## Install
The server is remote and hosted. There is nothing to run locally and no SDK to
install. It speaks Streamable HTTP and authenticates with a Bearer token.
- Server URL: `https://omnifamous.com/api/mcp`
- Server name: `omnifamous`
- Auth: `Authorization: Bearer sk_...` (create a key at https://omnifamous.com/settings, or
use the browser connector flow in clients that support it, which needs no key)
Pick the block for the current client. The formats genuinely differ, so do not
adapt one to another by hand.
### Claude Code
```bash
claude mcp add --transport http omnifamous https://omnifamous.com/api/mcp \
--header "Authorization: Bearer sk_your_secret_key"
```
Add `--scope user` to make it available in every project. To share it with a
team, commit a `.mcp.json` in the project root instead.
### Codex
TOML, not JSON, in `~/.codex/config.toml`:
```toml
[mcp_servers.omnifamous]
url = "https://omnifamous.com/api/mcp"
http_headers = { Authorization = "Bearer sk_your_secret_key" }
```
### Cursor, Cline, Claude Desktop, JetBrains, Warp
JSON, in `~/.cursor/mcp.json`, `cline_mcp_settings.json` or the client's MCP
settings panel:
```json
{
"mcpServers": {
"omnifamous": {
"type": "http",
"url": "https://omnifamous.com/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}
```
### VS Code and GitHub Copilot
Top-level key is `servers`, not `mcpServers`, in `.vscode/mcp.json`. Tools only
appear when Copilot Chat is in Agent mode.
```json
{
"servers": {
"omnifamous": {
"type": "http",
"url": "https://omnifamous.com/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}
```
### Windsurf
Uses `serverUrl`, not `url`, in `~/.codeium/windsurf/mcp_config.json`. Click
Refresh in Cascade afterwards.
```json
{
"mcpServers": {
"omnifamous": {
"serverUrl": "https://omnifamous.com/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}
```
### Gemini CLI
Uses `httpUrl`, in `~/.gemini/settings.json`. Using `url` selects the deprecated
SSE transport and the server will connect but return nothing.
```json
{
"mcpServers": {
"omnifamous": {
"httpUrl": "https://omnifamous.com/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}
```
### Zed
Zed calls them context servers. Same protocol, different key:
```json
{
"context_servers": {
"omnifamous": {
"type": "http",
"url": "https://omnifamous.com/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}
```
### ChatGPT and Claude (desktop or web)
No config file. Open Settings, then Connectors, add a remote MCP server, paste
`https://omnifamous.com/api/mcp`, and authorize in the browser. No API key needed.
## Tools
### Keywords
| tool | arguments |
|---|---|
| `seo_research_keywords` | `seed: string[]`, `country?`, `language?`, `limit?` |
| `seo_get_keyword_overview` | `keywords: string[]`, `country?` |
| `seo_get_related_keywords` | `keyword: string`, `depth?: 1-4`, `limit?` |
| `seo_list_keyword_pool` | `workspaceId: string`, `cursor?` |
| `seo_check_keyword_coverage` | `keywords: string[]` |
### SERP and competitors
| tool | arguments |
|---|---|
| `seo_get_serp` | `keyword: string`, `country?`, `device?: desktop\|mobile`, `depth?` |
| `seo_find_serp_competitors` | `keywords: string[]`, `country?` |
| `seo_get_domain_overview` | `domain: string`, `country?` |
| `seo_get_content_gap` | `domain: string`, `competitors: string[]` |
| `seo_list_competitors` | `workspaceId: string` |
### Backlinks and audits
| tool | arguments |
|---|---|
| `seo_get_backlink_summary` | `domain: string` |
| `seo_get_link_gap` | `domain: string`, `competitors: string[]` |
| `seo_run_audit` | `url: string`, `depth?` (async, poll `seo_get_job`) |
| `seo_get_audit_report` | `auditId: string` |
| `seo_get_search_console_performance` | `site: string`, `dateRange: string`, `dimensions?` |
### Content
| tool | arguments |
|---|---|
| `seo_draft_article` | `keyword: string`, `brief?`, `voice?` (async) |
| `seo_list_content_calendar` | `workspaceId: string`, `from?`, `to?` |
| `seo_get_article` | `articleId: string`, `format?: md\|html\|json` |
| `seo_publish_article` | `articleId: string`, `integrationId: string` |
| `seo_get_brand_voice` | `workspaceId: string` |
### AI visibility
This is the part no other SEO MCP server has. These run a prompt against a live
AI engine and return what it actually said, with citations.
| tool | arguments |
|---|---|
| `ai_run_prompt` | `prompt: string`, `engine: string`, `country?`, `fresh?` |
| `ai_run_prompt_multi` | `prompt: string`, `engines: string[]`, `country?` |
| `ai_check_brand` | `prompt: string`, `brand: string`, `competitors?`, `engines?` |
| `ai_list_engines` | none |
| `ai_get_share_of_voice` | `workspaceId: string`, `window?` |
| `ai_get_top_cited_domains` | `workspaceId: string`, `engine?`, `window?` |
| `ai_track_prompt` | `prompt: string`, `engines: string[]`, `schedule?` |
Engines: `chat_gpt`, `claude`, `gemini`, `perplexity`, `copilot`, `grok`,
`google_ai_overview`, `google_ai_mode`. Call `ai_list_engines` for the full set
and what each one returns.
`ai_run_prompt` returns the answer text, every citation with its URL, the query
fan-out the engine actually issued, the model that answered, and `cached`. If
`cached` is true the answer was reused rather than run live; pass `fresh: true`
when the user asks about right now.
## Cost
Reads of the user's own workspace are free and unmetered: articles, calendar,
keyword pool, competitors, visibility history, audit reports. Anything that
buys live market data or creates content spends credits, and every metered call
returns its exact cost and the remaining balance.
Before a large fan-out (`ai_run_prompt_multi` across many engines, or a bulk
keyword pull), state the expected cost and get confirmation.
## Working rules
1. **Check coverage before writing.** Call `seo_check_keyword_coverage` first, so
you do not draft a page competing with one the user already has.
2. **Read the SERP before drafting.** `seo_get_serp` shows the format that is
winning. Match the format, do not guess it.
3. **One keyword, one page.** If two target keywords share a SERP, they are one
page, not two.
4. **Cite the source of every number** you put in front of the user, including
which tool produced it.
5. **Report a miss as a miss.** If a tool returns nothing, say so. Do not fill
the gap with a plausible estimate, which is the exact failure this server
exists to prevent.
Tell us about your site and we'll let you in when your spot opens up.