geoaeo for Windsurf
Connect the geoaeo MCP server to Windsurf. Audit a site and generate GEO and AEO artifacts from Cascade.
What you get
- CLI bins:
geoaeoandgeoaeo-mcp - CLI commands:
audit,init,gen,humanize,mcp. No other commands exist. - MCP server command:
npx -y geoaeo mcpover stdio - MCP tools:
audit,gen,humanize
Prerequisites
- Node.js 20 or later
- Windsurf (latest)
- A site directory or URL to audit
Install geoaeo
# one-off
npx geoaeo audit ./ --json
# or add to the project
npm install -D geoaeo
npx geoaeo --help
# verify the MCP server starts (it waits on stdin; Ctrl+C to stop)
npx -y geoaeo mcpWindsurf starts geoaeo mcp for you. You do not run it by hand.
Configure the MCP server
Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Use mcpServers with command and args.
Add this entry to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"geoaeo": {
"command": "npx",
"args": ["-y", "geoaeo", "mcp"]
}
}
}If the file does not exist, create it with the block above. If it exists, merge the geoaeo key under mcpServers.
Steps:
- Open
~/.codeium/windsurf/mcp_config.json. - Paste the block. Validate JSON with
cat ~/.codeium/windsurf/mcp_config.json | jq .. - Restart Windsurf.
- Open Cascade and check MCP servers. Confirm geoaeo shows as connected with 3 tools.
Alternative project config some builds read: .windsurf/mcp_config.json with the same shape. Use the global file first.
Verify the connection
- Open Cascade (Cmd+L).
- Ask: "What MCP tools does geoaeo provide?"
- Confirm
audit,gen, andhumanizeappear.
If the server shows as error, see Troubleshooting.
Walkthrough 1 — audit a site
Prompt Cascade:
Audit ./ with geoaeo and give me the score plus the 3 most important fixes. If you need a URL, use https://example.com.
What the agent does:
- Calls
auditwith{"target": "./"}or{"target": "https://example.com"}. - Receives JSON:
score,checks[],topFixes[]. - Summarizes the score and fixes.
Equivalent CLI:
npx geoaeo audit ./ --json
npx geoaeo audit https://example.com --jsonUse topFixes to decide which artifact to generate next.
Walkthrough 2 — generate an artifact with gen
This uses gen, which reads geoaeo.config.ts from the current directory.
- Scaffold config if missing:
npx geoaeo init ./ cat geoaeo.config.ts - Prompt Cascade:
Use geoaeo gen to create llms.txt for this site. Show the first 40 lines and write the full file to public/llms.txt.
What the agent does:
- Calls
genwith{"artifact": "llms"}. - Returns the text.
- Writes it to
public/llms.txton confirmation.
Other artifacts:
{"artifact": "llms-full"}{"artifact": "sitemap"}{"artifact": "robots"}{"artifact": "webmcp"}{"artifact": "jsonld", "type": "software"}— type may besoftware,product,faq, orbreadcrumb
Equivalent CLI:
npx geoaeo gen llms
npx geoaeo gen llms -o ./public/llms.txt
npx geoaeo gen jsonld --type breadcrumb -o ./public/jsonld.jsonThe humanize tool is also available: {"glob": "content/**/*.md", "write": false}.
Troubleshooting
MCP server shows Failed to start or ENOENT. Run which npx and node --version in Windsurf's terminal. If Node is not on PATH, add it or use the absolute path to npx in command.
Config file not found. Confirm the path is ~/.codeium/windsurf/mcp_config.json (not ~/.windsurf/...). Run ls -la ~/.codeium/windsurf/mcp_config.json.
JSON parse error. Validate with jq. Ensure no trailing comma after the last entry in mcpServers.
audit returns empty result. Use {"target": "./"} from the workspace root. Ensure the directory contains site files. For a URL, include the scheme https://.
gen fails with Cannot find config. Run npx geoaeo init ./ in the workspace root, then retry gen.
Reference
- Package:
geoaeo. Bins:geoaeo,geoaeo-mcp. - Transport: stdio only.
- Tools:
audittakestarget(string).gentakesartifactenum and optionaltype.humanizetakesgloband optionalwrite(boolean).