Mangools MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mangools MCP Find related keywords for 'content marketing'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mangools MCP
Standalone MCP server for the Mangools API with 82 tools covering keyword research, SERP analysis, rank tracking, backlinks, competitor research, and AI search visibility.
Repository: marwa-mrwan/mangools-mcp
Exact Tool Inventory
Service | Tools | Capabilities |
Mangools | 2 | Locations and location details. |
KWFinder | 21 | Related/competitor/suggested keywords, keyword details, trends, difficulty, gap analysis, limits, imports, exports, and lists. |
SERPChecker | 5 | SERPs, reset, URL metrics, request history, and snapshots. |
SERPWatcher | 26 | Trackings, keywords, reports, annotations, tags, statistics, and CRUD operations. |
LinkMiner | 10 | Backlinks, URL metrics, favorites, request history, and exports. |
SiteProfiler | 6 | Overview, audience, backlink profile, top content, competitors, and request history. |
AI Search Watcher | 12 | Models, monitors, prompts, monitor settings, and CRUD operations. |
Total | 82 | One standalone |
Related MCP server: Haloscan MCP Server
Setup
git clone https://github.com/marwa-mrwan/mangools-mcp.git
cd mangools-mcp
npm installCreate either .env or .vscode/mcp.local.env:
MANGOOLS_API_KEY=your_local_api_keyBoth files are ignored by Git. Never commit the API key.
VS Code MCP
The tracked .vscode/mcp.json starts the server automatically from the repository root and loads .vscode/mcp.local.env.
Equivalent configuration:
{
"servers": {
"mangools": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/index.js"],
"envFile": "${workspaceFolder}/.vscode/mcp.local.env"
}
}
}Codex MCP
The root .mcp.json exposes the same server to Codex and loads the local .env file through MCP_SECRETS_ENV_FILE.
Tool Arguments
Each tool accepts named top-level parameters plus optional raw query and body objects.
{
"keyword": "seo agency",
"location_id": 2840,
"language_id": 1000
}For POST, PUT, PATCH, and DELETE tools, top-level non-path parameters are sent as JSON unless an explicit body is provided. Review mutation arguments carefully because these calls can change Mangools resources.
Verification
npm test
npm run list-tools
npm audit --omit=devExpected registry total: 82 unique tools.
Security
API keys stay in ignored local files.
GitHub Actions uses read-only repository permissions and checks tests, the tool registry, dependencies, and common secret formats.
mainis protected against force pushes and deletion and requires the CI check before future changes are merged.Dependabot and GitHub vulnerability alerts monitor dependencies.
Report security problems privately using SECURITY.md.
Available Tools
82 toolsaiwatcher_add_monitor_promptsB
Add prompts to an AI Search Watcher monitor.
Inputs: id (required), body, query.
aiwatcher_create_monitorC
Create AI monitoring for a brand.
Inputs: body, query.
aiwatcher_delete_monitorB
Delete AI monitoring for a brand.
Inputs: id (required), body, query.
aiwatcher_delete_promptsC
Delete AI Search Watcher prompts.
Inputs: body, query.
aiwatcher_generate_promptsB
Generate AI prompts for brand monitoring.
Inputs: body, query.
aiwatcher_modelsB
Get available AI Search Watcher models.
Inputs: body, query.
aiwatcher_monitor_detailC
Get AI monitoring detail for a brand.
Inputs: id (required), body, query.
aiwatcher_monitor_promptsB
Get AI Search Watcher prompt details for a monitor.
Inputs: id (required), body, query.
aiwatcher_monitorsB
Get all AI Search Watcher monitors for the user.
Inputs: body, query.
aiwatcher_monitor_settingsC
Get AI Search Watcher monitor settings.
Inputs: id (required), body, query.
aiwatcher_prompt_detailC
Get AI Search Watcher prompt detail.
Inputs: id (required), body, query.
aiwatcher_update_monitor_settingsC
Update AI Search Watcher monitor settings.
Inputs: id (required), body, query.
kwfinder_add_list_keywordsB
Add keywords to a KWFinder list.
Inputs: list_id (required), body, query, keywords.
kwfinder_competitor_domainsC
Get competitor domains from KWFinder.
Inputs: url, body, query.
kwfinder_competitor_keywordsC
Get competitor keywords for a domain or URL using the GET endpoint.
Inputs: url, body, query.
kwfinder_competitor_keywords_postC
Get competitor keywords for a domain or URL using the POST endpoint.
Inputs: url, body, query.
kwfinder_create_listB
Create a new KWFinder list.
Inputs: body, name, query.
kwfinder_delete_listC
Delete a KWFinder custom list.
Inputs: list_id (required), body, query.
kwfinder_delete_list_keywordsB
Remove keywords from a KWFinder list.
Inputs: list_id (required), body, query, keywords.
kwfinder_export_keywordsC
Export keywords into a CSV file.
Inputs: body, query.
kwfinder_gap_analysisC
Run KWFinder keyword gap analysis.
Inputs: body, query.
kwfinder_kd_requestsC
Get KWFinder KD lookup history.
Inputs: body, query.
kwfinder_keyword_detailsB
Get keyword details, including SERP data.
Inputs: body, query, keyword.
kwfinder_keyword_importsC
Get metrics for a set of imported keywords.
Inputs: body, query, keywords, language_id, +1 more.
kwfinder_limitsC
Get current and free KWFinder limits.
Inputs: body, query.
kwfinder_list_itemsC
Get items in a KWFinder list.
Inputs: list_id (required), body, query.
kwfinder_listsC
Get all KWFinder keyword lists.
Inputs: body, query.
kwfinder_requestsC
Get KWFinder lookup history.
Inputs: body, query.
kwfinder_suggested_keywordsC
Get suggested keywords for a URL.
Inputs: url, body, query.
kwfinder_trendsD
Get KWFinder trends.
Inputs: body, query.
kwfinder_update_listC
Update a KWFinder list name.
Inputs: list_id (required), body, name, query.
kwfinder_url_metricsC
Get KWFinder KD URL metrics.
Inputs: url, body, query.
linkminer_create_exportC
Create a new LinkMiner export task.
Inputs: body, query.
linkminer_delete_favoriteB
Remove a LinkMiner link from a favorite list.
Inputs: list_id (required), body, query.
linkminer_exportsA
Get all LinkMiner exports sorted by creation date.
Inputs: body, query.
linkminer_export_suggestionsC
Get LinkMiner export suggestions for a URL.
Inputs: url, body, query.
linkminer_favorite_detailB
See one LinkMiner favorite link.
Inputs: link_id (required), body, query.
linkminer_favoritesC
See LinkMiner favorite links.
Inputs: body, query.
linkminer_linksC
Get backlinks from LinkMiner.
Inputs: url, body, query.
linkminer_requestsB
Get latest LinkMiner used requests.
Inputs: body, query.
linkminer_set_favorite_linkC
Set a LinkMiner favorite link.
Inputs: link_id (required), body, query.
linkminer_url_metricsC
Get URL metrics for a target URL.
Inputs: url, body, query.
mangools_location_detailB
Get detail for one Mangools location.
Inputs: location (required), body, query.
mangools_locationsB
Get list of all Mangools geo-targeting locations.
Inputs: body, query.
serpchecker_requestsC
Get latest SERPChecker requests.
Inputs: body, query.
serpchecker_serpsC
Get SERP results with all metrics and snapshot.
Inputs: body, query, keyword.
serpchecker_serps_resetC
Get freshly reparsed SERP results with all metrics and snapshot.
Inputs: body, query, keyword.
serpchecker_snapshotB
Get SERP snapshot image URL.
Inputs: serp_id (required), body, query.
serpchecker_url_metricsC
Get URL metrics for a URL.
Inputs: url, body, query.
serpwatcher_add_tracked_keywordC
Track another keyword in a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_assign_tagC
Assign a tag to a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_create_annotationC
Create a SERPWatcher annotation.
Inputs: tracking_id (required), body, query.
serpwatcher_create_multiple_trackingsC
Create multiple SERPWatcher trackings.
Inputs: body, query.
serpwatcher_create_reportB
Create a new SERPWatcher report.
Inputs: tracking_id (required), body, query.
serpwatcher_create_trackingC
Create a SERPWatcher tracking.
Inputs: body, query.
serpwatcher_create_tracking_tagC
Create a new tag for a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_delete_annotationC
Delete a SERPWatcher annotation.
Inputs: tracking_id (required), annotation_id (required), body, query.
serpwatcher_delete_reportB
Delete a SERPWatcher report.
Inputs: report_id (required), tracking_id (required), body, query.
serpwatcher_delete_tracked_keywordB
Remove a keyword from a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_delete_trackingB
Delete a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_delete_tracking_tagC
Delete a tag from a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_reportsA
Get all SERPWatcher reports for a tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_tagsC
Get all SERPWatcher tags.
Inputs: body, query.
serpwatcher_tracked_keyword_detailB
Get one tracked keyword in a SERPWatcher tracking.
Inputs: tracking_id (required), tracked_keyword_id (required), body, query.
serpwatcher_tracked_keywordsB
Get all tracked keywords for a tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_tracking_detailC
Get SERPWatcher tracking detail and keywords.
Inputs: tracking_id (required), body, query.
serpwatcher_tracking_detail_legacyB
Get SERPWatcher tracking detail using the legacy endpoint.
Inputs: tracking_id (required), body, query.
serpwatcher_trackingsC
Get all SERPWatcher trackings.
Inputs: body, query.
serpwatcher_tracking_statsC
Get SERPWatcher tracking stats.
Inputs: tracking_id (required), body, query.
serpwatcher_tracking_tagsC
Get all tags for a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_unassign_tagC
Unassign a tag from a SERPWatcher tracking.
Inputs: tracking_id (required), body, query.
serpwatcher_update_annotationC
Update SERPWatcher annotation text.
Inputs: tracking_id (required), annotation_id (required), body, query.
serpwatcher_update_reportC
Update a SERPWatcher report.
Inputs: report_id (required), tracking_id (required), body, query.
serpwatcher_update_tagC
Update a SERPWatcher tag.
Inputs: tag_id (required), tracking_id (required), body, query.
serpwatcher_update_trackingB
Update a SERPWatcher tracking domain or location.
Inputs: tracking_id (required), body, query.
siteprofiler_audienceC
Get SiteProfiler audience data.
Inputs: url, body, query.
siteprofiler_backlink_profileC
Get SiteProfiler backlink profile.
Inputs: url, body, query.
siteprofiler_competitorsD
Get SiteProfiler competitors.
Inputs: url, body, query.
siteprofiler_overviewC
Get SiteProfiler URL metrics overview.
Inputs: url, body, query.
siteprofiler_requestsC
Get latest SiteProfiler used requests from the last 30 days.
Inputs: body, query.
siteprofiler_top_contentD
Get SiteProfiler top content.
Inputs: url, body, query.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 82 tools
Tools are grouped by product prefix, but many have overlapping purposes (e.g., kwfinder_related_keywords vs kwfinder_suggested_keywords, multiple URL metric tools across products). The _post and _legacy variants add confusion. Descriptions help, but an agent could easily select the wrong tool.
Naming conventions are inconsistent: some use verb_noun (create_tracking), others use noun (favorites, tracking_stats), and there are suffixes like _post, _legacy, and _reset. Mixed snake_case patterns and varying verb placement make the set feel chaotic.
With 82 tools, the server is very heavy. While it covers multiple Mangools products, the sheer number overwhelms an agent's ability to efficiently choose. Most tools are narrowly scoped, but the count is far above typical well-scoped servers.
The tool set covers a wide range of SEO operations across KWFinder, SERPChecker, SERPWatcher, LinkMiner, SiteProfiler, and AIWatcher. Most resources have lifecycle coverage (create/read/update/delete) where relevant, with only minor gaps like no delete for LinkMiner exports or KWFinder keyword imports.
Maintenance
Related MCP Connectors
Unified 15-tool SEO, SERP, clean Markdown & GEO (LLM citation Share-of-Voice) MCP server.
SEO MCP server for keyword research, live SERPs, backlinks, site audits and AI visibility.
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
Remote MCP server that gives Claude, ChatGPT, Cursor or any MCP client Google search volume, CPC, competition and similar keywords for 50+ countries. Works with no signup at 20 lookups a day; sign in with OAuth or an API key for higher limits, or $4.99 a month for unlimited.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI assistants to perform SEO automation tasks including keyword research, SERP analysis, and competitor analysis through Google Ads API integration.1ISC
- AlicenseCqualityDmaintenanceAn MCP server that integrates with the Haloscan SEO API to provide tools for keyword research, SERP analysis, and domain performance tracking. It enables users to perform comprehensive SEO tasks, including competitor analysis and visibility monitoring, within MCP-compatible clients.33113 npm1MIT
- AlicenseNot gradedqualityDmaintenanceAn agent-friendly MCP server for the GeoRanker High-Volume API, enabling SEO rank tracking and keyword management through natural language.35 npm1MIT
- AlicenseBqualityCmaintenanceMCP server & CLI for keyword research, domain analytics, backlinks, traffic analysis, and competitive intelligence using Semrush API data.7773 npm40MIT