站点地图
STDIOHTTP-SSE获取、解析和可视化网站地图,发现站点结构
获取、解析和可视化网站地图,发现站点结构
Discover website architecture and analyze site structure by fetching, parsing, and visualizing sitemaps from any URL. Uncover hidden pages and extract organized hierarchies without manual exploration.
Includes ready-to-use prompt templates for Claude Desktop that let you analyze websites, check sitemap health, extract URLs, find missing content, and create visualizations with just a URL input.
Get answers to questions about any website leveraging the power of sitemaps.
Click on the "attach" button next to the tools button:
Then select visualize_sitemap:
Now we enter windsurf.com:
And we get a visualization of teh sitemap:
Make sure uv is installed.
Add this entry to your claude_desktop_config.json, Cursor settings, etc.:
{ "mcpServers": { "sitemap": { "command": "uvx", "args": ["sitemap-mcp-server"], "env": { "TRANSPORT": "stdio" } } } }
Restart Claude if it's running. For Cursor simply press refresh and/or enable the MCP Server in the settings.
To install sitemap for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @mugoosse/sitemap --client claude
npx @modelcontextprotocol/inspector env TRANSPORT=stdio uvx sitemap-mcp-server
Open the MCP Inspector at http://127.0.0.1:6274, select stdio transport, and connect to the MCP server.
# Start the server uvx sitemap-mcp-server # Start the MCP Inspector in a separate terminal npx @modelcontextprotocol/inspector connect http://127.0.0.1:8050
Open the MCP Inspector at http://127.0.0.1:6274, select sse transport, and connect to the MCP server.
If you want to use the SSE transport, follow these steps:
uvx sitemap-mcp-server
{ "mcpServers": { "sitemap": { "transport": "sse", "url": "http://localhost:8050/sse" } } }
For instructions on building and running the project from source, please refer to the DEVELOPERS.md guide.
The following tools are available via the MCP server:
get_sitemap_tree - Fetch and parse the sitemap tree from a website URL
url (website URL), include_pages (optional, boolean)get_sitemap_pages - Get all pages from a website's sitemap with filtering options
url (website URL), limit (optional), include_metadata (optional), route (optional), sitemap_url (optional), cursor (optional)get_sitemap_stats - Get statistics about a website's sitemap
url (website URL)parse_sitemap_content - Parse a sitemap directly from its XML or text content
content (sitemap XML content), include_pages (optional, boolean)The server includes ready-to-use prompts that appear as templates in Claude Desktop. After installing the server, you'll see these templates in the "Templates" menu (click the + icon next to the message input):
To use these prompts:
{ "name": "get_sitemap_tree", "arguments": { "url": "https://example.com", "include_pages": true } }
{ "name": "get_sitemap_pages", "arguments": { "url": "https://example.com", "limit": 100, "include_metadata": true, "route": "/blog/" } }
{ "name": "get_sitemap_pages", "arguments": { "url": "https://example.com", "limit": 100, "include_metadata": true, "sitemap_url": "https://example.com/blog-sitemap.xml" } }
The server implements MCP cursor-based pagination to handle large sitemaps efficiently:
Initial Request:
{ "name": "get_sitemap_pages", "arguments": { "url": "https://example.com", "limit": 50 } }
Response with Pagination:
{ "base_url": "https://example.com", "pages": [...], // First batch of pages "limit": 50, "nextCursor": "eyJwYWdlIjoxfQ==" }
Subsequent Request with Cursor:
{ "name": "get_sitemap_pages", "arguments": { "url": "https://example.com", "limit": 50, "cursor": "eyJwYWdlIjoxfQ==" } }
When there are no more results, the nextCursor field will be absent from the response.
{ "name": "get_sitemap_stats", "arguments": { "url": "https://example.com" } }
The response includes both total statistics and detailed stats for each subsitemap:
{ "total": { "url": "https://example.com", "page_count": 150, "sitemap_count": 3, "sitemap_types": ["WebsiteSitemap", "NewsSitemap"], "priority_stats": { "min": 0.1, "max": 1.0, "avg": 0.65 }, "last_modified_count": 120 }, "subsitemaps": [ { "url": "https://example.com/sitemap.xml", "type": "WebsiteSitemap", "page_count": 100, "priority_stats": { "min": 0.3, "max": 1.0, "avg": 0.7 }, "last_modified_count": 80 }, { "url": "https://example.com/blog/sitemap.xml", "type": "WebsiteSitemap", "page_count": 50, "priority_stats": { "min": 0.1, "max": 0.9, "avg": 0.5 }, "last_modified_count": 40 } ] }
This allows MCP clients to understand which subsitemaps might be of interest for further investigation. You can then use the sitemap_url parameter in get_sitemap_pages to filter pages from a specific subsitemap.
{ "name": "parse_sitemap_content", "arguments": { "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"><url><loc>https://example.com/</loc></url></urlset>", "include_pages": true } }
This project is licensed under the MIT License. See the LICENSE file for details.