# avansaber/seo-monster architecture

> Architecture diagram of the GitHub repository avansaber/seo-monster, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/avansaber/seo-monster
- Repository: https://github.com/avansaber/seo-monster

## Overview

SEOMonster is a local stdio MCP server that exposes SEO analysis tools to an AI assistant. The host dispatches a requested tool; tools use configured service clients and return results for the assistant to explain. Major product branches include Search Console and Analytics, content and keyword research, technical SEO, performance, AI visibility, and site operations. The README documents broad tool coverage, while sampled source is partial, so links between specific unsampled tools and clients are omitted.

Main entry points: [`src/seo_mcp/server.py`](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/server.py) (MCP server), [`src/seo_mcp/clients/gsc.py`](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/gsc.py) (Google clients), [`src/seo_mcp/tools/gsc_tools.py`](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/gsc_tools.py) (Search Console), [`src/seo_mcp/tools/ga4_tools.py`](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ga4_tools.py) (Analytics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["MCP interface"]
  node_server["MCP server<br/>[server.py]"]
  node_prompts["Workflow prompts<br/>[prompts.py]"]
end

subgraph group_analysis["SEO analysis"]
  node_gsc_tools["Search Console<br/>[gsc_tools.py]"]
  node_ga4_tools["Analytics<br/>[ga4_tools.py]"]
  node_content_tools["Content opportunities<br/>[content_tools.py]"]
  node_keyword_tools["Keyword discovery"]
  node_topic_tools["Topic clusters"]
  node_link_tools["Link analysis<br/>[linkgraph_tools.py]"]
  node_ai_tools["AI visibility"]
  node_readiness_tools["AI readiness"]
end

subgraph group_operations["Site operations"]
  node_technical_tools["Technical SEO<br/>[onpage_tools.py]"]
  node_schema_tools["Structured data<br/>[schema_tools.py]"]
  node_robots_tools["Crawl posture"]
  node_performance_tools["Page performance<br/>[psi_tools.py]"]
  node_indexing_tools["Indexing requests<br/>[indexnow_tools.py]"]
  node_cloudflare_tools["Cloudflare controls<br/>[cf_tools.py]"]
end

subgraph group_integrations["Data integrations"]
  node_provider["Client provider<br/>[server.py]"]
  node_google_clients["Google clients<br/>[gsc.py]"]
  node_cf_client["Cloudflare client<br/>[cloudflare.py]"]
  node_ai_client["AI engine client<br/>[ai_engines.py]"]
end

subgraph group_configuration["Configuration"]
  node_config["Runtime config<br/>[config.py]"]
  node_auth["Google auth<br/>[google_auth.py]"]
end

node_assistant(("AI assistant"))
node_google(("Google services"))
node_cloudflare(("Cloudflare API"))
node_ai_engines(("AI answer engines"))

node_assistant -->|"MCP stdio"| node_server
node_server -->|"tool results"| node_assistant
node_server -->|"dispatches"| node_gsc_tools
node_server -->|"dispatches"| node_ga4_tools
node_server -->|"dispatches"| node_content_tools
node_server -->|"dispatches"| node_keyword_tools
node_server -->|"dispatches"| node_topic_tools
node_server -->|"dispatches"| node_link_tools
node_server -->|"dispatches"| node_ai_tools
node_server -->|"dispatches"| node_readiness_tools
node_server -->|"dispatches"| node_technical_tools
node_server -->|"dispatches"| node_schema_tools
node_server -->|"dispatches"| node_robots_tools
node_server -->|"dispatches"| node_performance_tools
node_server -->|"dispatches"| node_indexing_tools
node_server -->|"dispatches"| node_cloudflare_tools
node_server -->|"publishes"| node_prompts
node_server -->|"builds lazily"| node_provider
node_provider -->|"reads"| node_config
node_provider -->|"builds"| node_google_clients
node_provider -->|"builds"| node_cf_client
node_provider -->|"builds"| node_ai_client
node_gsc_tools -->|"gets clients"| node_provider
node_ga4_tools -->|"gets clients"| node_provider
node_content_tools -->|"gets clients"| node_provider
node_cloudflare_tools -->|"gets clients"| node_provider
node_google_clients -->|"API calls"| node_google
node_cf_client -->|"API calls"| node_cloudflare
node_ai_client -.->|"queries"| node_ai_engines
node_auth -->|"resolves credentials"| node_config
node_google_clients -->|"builds credentials"| node_auth

click node_server "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/server.py"
click node_prompts "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/prompts.py"
click node_gsc_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/gsc_tools.py"
click node_ga4_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ga4_tools.py"
click node_content_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/content_tools.py"
click node_keyword_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/keyword_universe_tools.py"
click node_topic_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/topic_cluster_tools.py"
click node_link_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/linkgraph_tools.py"
click node_ai_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ai_citation_tools.py"
click node_readiness_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ai_readiness_tools.py"
click node_technical_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/onpage_tools.py"
click node_schema_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/schema_tools.py"
click node_robots_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/robots_posture_tools.py"
click node_performance_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/psi_tools.py"
click node_indexing_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/indexnow_tools.py"
click node_cloudflare_tools "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/cf_tools.py"
click node_provider "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/server.py"
click node_google_clients "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/gsc.py"
click node_cf_client "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/cloudflare.py"
click node_ai_client "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/ai_engines.py"
click node_config "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/config.py"
click node_auth "https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/google_auth.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_prompts toneBlue
class node_gsc_tools,node_ga4_tools,node_content_tools,node_keyword_tools,node_topic_tools,node_link_tools,node_ai_tools,node_readiness_tools toneAmber
class node_technical_tools,node_schema_tools,node_robots_tools,node_performance_tools,node_indexing_tools,node_cloudflare_tools,node_cloudflare toneMint
class node_provider,node_google_clients,node_cf_client,node_ai_client toneRose
class node_config,node_auth,node_assistant,node_google,node_ai_engines toneIndigo
```

## Components

### MCP interface

- [MCP server](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/server.py): `src/seo_mcp/server.py`
- [Workflow prompts](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/prompts.py): `src/seo_mcp/prompts.py`

### SEO analysis

- [Search Console](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/gsc_tools.py): `src/seo_mcp/tools/gsc_tools.py`
- [Analytics](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ga4_tools.py): `src/seo_mcp/tools/ga4_tools.py`
- [Content opportunities](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/content_tools.py): `src/seo_mcp/tools/content_tools.py`
- [Keyword discovery](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/keyword_universe_tools.py): `src/seo_mcp/tools/keyword_universe_tools.py`
- [Topic clusters](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/topic_cluster_tools.py): `src/seo_mcp/tools/topic_cluster_tools.py`
- [Link analysis](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/linkgraph_tools.py): `src/seo_mcp/tools/linkgraph_tools.py`
- [AI visibility](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ai_citation_tools.py): `src/seo_mcp/tools/ai_citation_tools.py`
- [AI readiness](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/ai_readiness_tools.py): `src/seo_mcp/tools/ai_readiness_tools.py`

### Site operations

- [Technical SEO](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/onpage_tools.py): `src/seo_mcp/tools/onpage_tools.py`
- [Structured data](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/schema_tools.py): `src/seo_mcp/tools/schema_tools.py`
- [Crawl posture](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/robots_posture_tools.py): `src/seo_mcp/tools/robots_posture_tools.py`
- [Page performance](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/psi_tools.py): `src/seo_mcp/tools/psi_tools.py`
- [Indexing requests](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/indexnow_tools.py): `src/seo_mcp/tools/indexnow_tools.py`
- [Cloudflare controls](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/tools/cf_tools.py): `src/seo_mcp/tools/cf_tools.py`

### Data integrations

- [Client provider](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/server.py): `src/seo_mcp/server.py`
- [Google clients](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/gsc.py): `src/seo_mcp/clients/gsc.py`
- [Cloudflare client](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/cloudflare.py): `src/seo_mcp/clients/cloudflare.py`
- [AI engine client](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/ai_engines.py): `src/seo_mcp/clients/ai_engines.py`

### Configuration

- [Runtime config](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/config.py): `src/seo_mcp/config.py`
- [Google auth](https://github.com/avansaber/seo-monster/blob/main/src/seo_mcp/clients/google_auth.py): `src/seo_mcp/clients/google_auth.py`

### Other components

- **AI assistant**
- **Google services**
- **Cloudflare API**
- **AI answer engines**

## Connections

- AI assistant → MCP server: MCP stdio
- MCP server → AI assistant: tool results
- MCP server → Search Console: dispatches
- MCP server → Analytics: dispatches
- MCP server → Content opportunities: dispatches
- MCP server → Keyword discovery: dispatches
- MCP server → Topic clusters: dispatches
- MCP server → Link analysis: dispatches
- MCP server → AI visibility: dispatches
- MCP server → AI readiness: dispatches
- MCP server → Technical SEO: dispatches
- MCP server → Structured data: dispatches
- MCP server → Crawl posture: dispatches
- MCP server → Page performance: dispatches
- MCP server → Indexing requests: dispatches
- MCP server → Cloudflare controls: dispatches
- MCP server → Workflow prompts: publishes
- MCP server → Client provider: builds lazily
- Client provider → Runtime config: reads
- Client provider → Google clients: builds
- Client provider → Cloudflare client: builds
- Client provider → AI engine client: builds
- Search Console → Client provider: gets clients
- Analytics → Client provider: gets clients
- Content opportunities → Client provider: gets clients
- Cloudflare controls → Client provider: gets clients
- Google clients → Google services: API calls
- Cloudflare client → Cloudflare API: API calls
- AI engine client → AI answer engines: queries
- Google auth → Runtime config: resolves credentials
- Google clients → Google auth: builds credentials
