MCP Server
GEO Optimizer exposes its core functionality as an MCP (Model Context Protocol) server, making all tools available inside AI coding assistants like Claude Code, Cursor, and Windsurf.
Installation
Install with the mcp extra:
pip install geo-optimizer-skill[mcp]
This installs the geo-mcp entry point alongside the mcp Python SDK.
Setup
Claude Code
claude mcp add geo-optimizer -- geo-mcp
Thatβs it. The tools are immediately available in your Claude Code session.
Cursor
Add to your .cursor/mcp.json:
{
"mcpServers": {
"geo-optimizer": {
"command": "geo-mcp",
"args": []
}
}
}
Windsurf / Generic MCP Client
Any MCP client that supports stdio transport can connect:
geo-mcp
The server runs on stdio transport by default. No port configuration needed.
Direct Python Invocation
python -m geo_optimizer.mcp.server
Tools (8)
1. geo_audit
Run a complete GEO audit on a website. Analyzes 7 areas: robots.txt, llms.txt, JSON-LD schema, SEO meta tags, content quality, signals, and AI discovery. Returns a score 0β100 with detailed breakdown and recommendations.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL of the site to audit |
Example output (abbreviated):
{
"url": "https://example.com",
"score": 72,
"band": "good",
"score_breakdown": {
"robots": 18,
"llms": 6,
"schema": 16,
"meta": 14,
"content": 10,
"signals": 5,
"ai_discovery": 3
},
"recommendations": [
"Add llms-full.txt for comprehensive AI indexing",
"Add FAQPage schema for better AI extraction"
]
}
2. geo_fix
Generate automatic GEO fixes for a website. Audits the site and produces corrective artifacts: robots.txt patches, llms.txt content, missing JSON-LD schemas, and HTML meta tag snippets.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL of the site to optimize |
only |
string | no | Filter categories (comma-separated): robots, llms, schema, meta. Empty = all |
Example output (abbreviated):
{
"fixes": [
{
"category": "robots",
"description": "Create robots.txt with access for all 24 AI bots",
"file_name": "robots.txt",
"action": "create"
},
{
"category": "llms",
"description": "Generate llms.txt from sitemap (42 URLs)",
"file_name": "llms.txt",
"action": "create"
}
],
"score_before": 34,
"score_estimated_after": 78
}
3. geo_llms_generate
Generate complete llms.txt content for a website. Discovers the sitemap, categorizes URLs by content type, and produces a structured markdown file following the llmstxt.org specification.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | Base URL of the site |
Example output:
# Example Site
> A brief description of the site for AI search engines.
## Documentation
- [Getting Started](https://example.com/docs/getting-started)
- [API Reference](https://example.com/docs/api)
## Blog & Articles
- [How We Built X](https://example.com/blog/how-we-built-x)
4. geo_citability
Analyze content citability using the 11 GEO methods (Princeton KDD 2024 + AutoGEO ICLR 2026). Evaluates the page content and returns a citability score 0β100 with per-method breakdown.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL of the page to analyze |
Example output (abbreviated):
{
"url": "https://example.com/blog/post",
"score": 65,
"methods": {
"quotation_addition": { "score": 8, "max": 10 },
"statistics_addition": { "score": 10, "max": 12 },
"fluency_optimization": { "score": 9, "max": 12 },
"cite_sources": { "score": 6, "max": 10 },
"answer_first": { "score": 7, "max": 10 },
"passage_density": { "score": 5, "max": 10 }
},
"suggestions": [
"Add 2-3 direct quotes from domain experts",
"Add inline citations to authoritative sources"
]
}
5. geo_schema_validate
Validate a JSON-LD schema against schema.org requirements. Checks that all required fields are present for the given schema type.
| Argument | Type | Required | Description |
|---|---|---|---|
json_string |
string | yes | JSON-LD string to validate (max 512 KB) |
schema_type |
string | no | Schema type (e.g. website, faqpage). Auto-detected if empty |
Example output:
{
"valid": true,
"error": null,
"schema_type": "website"
}
6. geo_compare
Compare GEO scores across multiple websites (max 5). Returns a ranked comparison with score, band, and per-category breakdown.
| Argument | Type | Required | Description |
|---|---|---|---|
urls |
string | yes | Comma-separated URLs (e.g. "site1.com, site2.com") |
Example output:
{
"comparison": [
{ "url": "https://site1.com", "score": 82, "band": "good" },
{ "url": "https://site2.com", "score": 45, "band": "foundation" }
],
"total_sites": 2
}
7. geo_ai_discovery
Check AI discovery endpoints on a website. Verifies the presence of /.well-known/ai.txt, /ai/summary.json, /ai/faq.json, and /ai/service.json based on the geo-checklist.dev emerging standard.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL to check |
Example output:
{
"well_known_ai_txt": true,
"ai_summary_json": true,
"ai_faq_json": false,
"ai_service_json": false,
"score": 4,
"max_score": 6
}
8. geo_check_bots
Check which AI bots can access a website via robots.txt. Returns per-bot status (allowed/blocked/missing) with 3-tier classification (training/search/user) and citation bot verification.
| Argument | Type | Required | Description |
|---|---|---|---|
url |
string | yes | URL to check |
Example output (abbreviated):
{
"url": "https://example.com",
"robots_found": true,
"citation_bots_ok": true,
"bots": {
"OAI-SearchBot": { "description": "OpenAI (ChatGPT search citations)", "status": "allowed", "tier": "search" },
"ClaudeBot": { "description": "Anthropic (Claude citations)", "status": "allowed", "tier": "search" },
"GPTBot": { "description": "OpenAI (ChatGPT training)", "status": "blocked", "tier": "training" }
},
"summary": { "allowed": 20, "blocked": 2, "missing": 2 }
}
Resources (5)
MCP resources provide read-only reference data. Access them via the geo:// URI scheme.
| URI | Description |
|---|---|
geo://ai-bots |
List of all 24 tracked AI bots with 3-tier classification (training/search/user) and citation bot identification |
geo://score-bands |
GEO score band definitions (critical, foundation, good, excellent) with ranges |
geo://methods |
The 11 citability methods with measured impact data and max scores |
geo://changelog |
Latest changes from CHANGELOG.md (first 50 lines) |
geo://ai-discovery-spec |
AI discovery endpoint specification (geo-checklist.dev standard) with required fields and JSON schemas |
Usage Examples
Claude Code β Full Site Audit
> Use geo_audit to check https://mysite.com and tell me what to fix first.
Claude will call the geo_audit tool, parse the results, and give you prioritized recommendations in natural language.
Claude Code β Generate and Validate Schema
> Generate a WebSite JSON-LD schema for mysite.com, then validate it with geo_schema_validate.
Cursor β Compare Competitors
> Use geo_compare to compare mysite.com against competitor1.com and competitor2.com.
> Show me where I'm losing points.
Fix Workflow
> Run geo_fix on https://mysite.com with only=robots,llms.
> Show me the generated files.
Security
All URL inputs are validated against SSRF attacks before making any HTTP requests. Private IPs, localhost, and internal network addresses are rejected. HTTP response size is capped at 10 MB.