Skip to content

MCP: add write access to rank tracking (add/remove tracked keywords) #125

Description

@manuel-will

Problem

get_rank_tracker lets an agent read existing rank-tracking results, but there's no way to add or remove tracked keywords via MCP — that's UI-only today. "Start tracking these 20 keywords for this project" is a common agent-shaped request (onboarding a new project, or reacting to fresh keyword research), and it currently has to stop and ask a human to add them by hand in the dashboard.

Proposal

  • add_rank_tracking_keywords — thin wrapper over RankTrackingService.addKeywords (src/server/features/rank-tracking/services/RankTrackingService.ts).
  • remove_rank_tracking_keywords — wrapper over RankTrackingService.removeKeywords.
  • (only if a project has no tracker config yet) create_rank_tracking_config / update_rank_tracking_config wrapping createConfig/updateConfig.

Pattern to follow: same shape as get-rank-tracker.ts (project-scoped auth via withMcpProjectAuth), but with readOnlyHint: false.

Cost transparency (the important part of this proposal): adding tracked keywords carries an ongoing DataForSEO credit cost — every scheduled check re-queries SERP position for every tracked keyword. RankTrackingService.estimateCost already exists for exactly this. The new tool should call it and return the estimate as part of its response, not add keywords silently and let the cost surprise show up later.

Scope: keyword add/remove only. Whether to also expose triggerCheck (manually kick off a check outside the schedule) is an open question for discussion — it would need to respect whatever rate-limit/cooldown logic already exists in rankCheckRunGuards.ts.

Prior art

Checked existing issues/PRs before writing this up — no existing issue or PR proposes MCP write access to rank tracking. Closest-but-unrelated hits: #37 / PR #40 (per-keyword tracking interval overrides — a different feature), #98 / PR #114 (create_project — unrelated tool, different feature area).

Notes

Happy to open a PR following the get-rank-tracker.ts pattern, including tests and the cost-estimate call, once aligned on scope — specifically whether triggerCheck belongs in the same PR or a follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions