mcpField
W
Wincher Mcp

Wincher Mcp

本地服务
github.com/vmandic开发工具18 周前更新

关于 Wincher Mcp

Wincher Mcp 是用于读取 Wincher SEO 数据的 stdio MCP 服务。编码 Agent 可通过九种专用工具查询跟踪的网站、关键词排名、竞争对手、SERP 等数据。

主要功能

  1. 01只读访问 Wincher API
  2. 02列出网站与关键词
  3. 03排名历史与批量数据
  4. 04竞争对手及 SERP 详情
  5. 05可选的紧凑 TOON 输出

适用场景

  1. 01查看已跟踪网站的关键词排名
  2. 02比较自身与竞争对手的排名
  3. 03检查关键词的 SERP 数据

MCP 相关

该服务使用 stdio,向包括 Cursor 和 Claude Code 在内的 MCP 客户端提供九种只读工具,用于查询 Wincher 数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Wincher MCP

CI License: MIT Python MCP

为 AI 编码 Agent 提供只读的 Wincher SEO 数据。
将 Cursor、Claude Code 或任何 MCP 客户端连接到你跟踪的网站:关键词排名、竞争对手、SERP 和分组,无需离开编辑器。

  • 默认只读 — 仅使用 GET 风格的 Wincher API;不会对你的账户进行写入
  • Stdio MCP — 由客户端启动的本地进程;不监听 HTTP
  • 九种专用工具 — 网站、关键词、排名、竞争对手、SERP、分组、批量历史记录、注释
  • 强化的默认设置 — 输入限制、响应上限、安全错误处理、可选的暂存主机验证
  • 可选 TOON 输出 — 紧凑的 Token-Oriented Object Notation 响应,减少大型关键词和排名列表对 LLM token 的占用

规范的开源 Wincher MCP 服务:PyPI 软件包 wincher-mcp、Agent 文档、CI、内置 OpenAPI、可选 TOON 输出和安全强化。源自早期的 chris-tutt/wincher-mcp-server 原型;本仓库是后续开发的维护中心。


目录


为何使用

Wincher 保存着 SEO 工作流所依赖的关键词和竞争对手数据。此服务通过 Model Context Protocol 提供这些数据,让 Agent 可以在聊天中回答问题,无需导出 CSV 或逐一点击仪表板。

适用于以下场景:

  • 在 Agent 会话中查看网站和关键词列表
  • 获取目标查询的竞争对手和 SERP 背景信息
  • 使用精简、可审计的工具集(九种只读工具)

功能

功能MCP 工具
列出跟踪的网站get_websites
关键词和当前排名get_keywords
历史排名序列get_keyword_rankings
竞争对手汇总指标get_competitor_ranking_summaries
各关键词的竞争对手排名get_competitor_keyword_positions
SERP 快照和特征get_serps
关键词分组汇总get_keyword_groups
批量排名历史记录get_bulk_ranking_history
SEO 注释/备注get_annotations

输入验证 — 正整数 ID、有上限的批量列表,以及适用时经过验证的日期字符串。

清晰的错误信息 — HTTP 请求失败时会返回端点和状态码,不会泄露完整 URL、令牌或原始 API 响应正文。


快速开始

Agentic 安装提示词

粘贴到 Cursor、Claude Code 或 Copilot 中,并让 Agent 在你的机器上运行设置。

假设(更改任何内容前请确认):

假设重要原因
Python 3.10+运行 wincher_mcp_server.py 所需
Wincher 账户从 Wincher 设置中获取个人访问令牌
Stdio MCP配置使用 command + args;不使用 HTTP 传输
绝对路径MCP 配置必须指向实际的 .venv/bin/python 和 wincher_mcp_server.py
密钥不入库在 MCP env 或 ~/.zsh_secrets 中设置 WINCHER_API_KEY,绝不提交
Set up the wincher-mcp MCP server from https://github.com/vmandic/wincher-mcp on this machine end-to-end.

Before you change anything, confirm with me:
1) Which MCP client I use (Cursor, Claude Code, or VS Code Copilot).
2) Where to clone the repo (default: ~/source/vmandic/wincher-mcp).

Then:

A) Prerequisites — Python 3.10+, no secrets in git.
B) Clone, venv, test — git clone, python3 -m venv .venv, pip install -r requirements.txt -r requirements-dev.txt, pytest -q, py_compile wincher_mcp_server.py.
C) Wincher token — I create a Personal Access Token in Wincher; add WINCHER_API_KEY to MCP env (or ~/.zsh_secrets if using a wrapper script).
D) MCP config — stdio: command = ABSOLUTE_PATH/.venv/bin/python, args = [ABSOLUTE_PATH/wincher_mcp_server.py], env = { WINCHER_API_KEY }. See docs/MCP_CONFIG.example.json. Do not commit real keys or staging hosts.
E) Verify — restart MCP client, call get_websites, report results or auth errors.

Summarize: clone path, config file edited, and exact JSON used.
手动设置

1. 克隆并安装

git clone https://github.com/vmandic/wincher-mcp.git
cd wincher-mcp
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

2. API 密钥 — Wincher → Settings → Personal Access Tokens。复制令牌后仅存储在环境变量或本地密钥文件中。

3. MCP 客户端 — Cursor 配置示例(~/.cursor/mcp.json):

{
  "mcpServers": {
    "wincher-mcp": {
      "command": "/absolute/path/to/wincher-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/wincher-mcp/wincher_mcp_server.py"],
      "env": {
        "WINCHER_API_KEY": "YOUR_KEY_HERE"
      }
    }
  }
}

生产环境、可选的暂存环境和 TOON 配置项请参阅 docs/MCP_CONFIG.example.json。

4. 重启客户端,然后询问:“列出我的 Wincher 网站”(get_websites)。

完整操作指南:docs/SETUP.md。更多提示词:docs/EXAMPLES.md。


要求

要求备注
Python3.10 或更高版本(CI 测试 3.10–3.12)
Wincher 账户需具备 API 访问权限,并有已跟踪的网站/关键词
API 令牌个人访问令牌;环境变量 WINCHER_API_KEY
MCP 客户端Cursor、Claude Code 或任何 stdio MCP 宿主

安装

从 PyPI 安装(推荐)
pipx install wincher-mcp
# or: pip install wincher-mcp

之后,MCP 配置使用控制台脚本(无需克隆路径):

{
  "mcpServers": {
    "wincher": {
      "command": "wincher-mcp",
      "args": [],
      "env": { "WINCHER_API_KEY": "YOUR_KEY_HERE" }
    }
  }
}

如需查找二进制文件路径:pipx which wincher-mcp。

软件包:pypi.org/project/wincher-mcp。发布:docs/PYPI.md。

从克隆的仓库安装(开发)
git clone https://github.com/vmandic/wincher-mcp.git
cd wincher-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest -q

仓库根目录中的旧启动器 wincher_mcp_server.py 仍可用于现有 MCP JSON 路径。

虚拟环境名称

使用 .venv(与 CI 一致),或在 MCP 宿主中使用 pipx。相应更新 MCP 配置中的 command。


身份验证

服务绝不会将令牌存储到磁盘。它会从进程环境中读取 WINCHER_API_KEY(在 MCP env 中设置或在 shell 中导出)。

内容用途
个人访问令牌用于 https://api.wincher.com(生产环境)的 Bearer 身份验证
可选的暂存环境MCP 参数 "--use-staging",以及仅在你的机器上设置的环境变量 WINCHER_STAGING_API_HOST

生产环境的 API 主机已在服务中硬编码。暂存环境主机绝不能提交到此仓库。

向 Wincher 团队获取暂存环境 URL;仅在私有 MCP 配置中设置。参阅 docs/MCP_CONFIG.example.json(示例中的 wincher-staging 未设置主机)。

可选的 TOON 响应(减少令牌用量)

TOON 是一种用于向大模型发送结构化数据的紧凑编码格式。Wincher 的表格类数据(关键词、竞争对手、批量历史记录)使用 TOON 时,所需令牌通常比默认的易读文本布局减少 30–60%。

模式方法
服务默认使用 TOON在 MCP 服务的 args 数组中添加 "--use-toon"(参阅 docs/MCP_CONFIG.example.json 中的 wincher-toon)
单次调用在任何工具调用中传入 "output_format": "toon"(若启用了 --use-toon,也可传入 "text" 强制使用易读文本)

响应包含简短的前导说明和 TOON 正文。使用 python-toon 在 Python 中解码:

from toon import decode

如果未设置 --use-toon,默认仍为易读的文本格式。

包装器模式(可选): shell 脚本可以先 source ~/.zsh_secrets,然后 exec .venv/bin/python wincher_mcp_server.py,这样即使从 Dock 打开 Cursor,也能获取密钥。不要提交包含密钥的脚本。

将 .env.example 复制为 .env,仅供本地 shell 使用;.env 已加入 gitignore。


连接 MCP 客户端

客户端配置位置配置键
Cursor~/.cursor/mcp.json 或项目 .cursor/mcp.jsonmcpServers
Claude Code~/.claude.json 或项目 .mcp.jsonmcpServers
VS Code Copilot.vscode/mcp.jsonservers(stdio)

Claude 桌面应用(如果你使用)在 macOS/Windows 上使用 claude_desktop_config.json,结构与 mcpServers 相同;请参阅 docs/SETUP.md。

所有示例都使用 stdio:客户端会启动 Python,并通过 stdin/stdout 进行 JSON-RPC 通信。日志和错误会写入 stderr。

项目级 MCP: 有些仓库会提交 .cursor/mcp.json,其中的 command 指向本地包装脚本(JSON 中不包含机密信息)。全局用户配置也可以为所有工作区配置同一个服务。


工具参考

所有工具均为只读。参数使用 get_websites / get_keywords 返回的 Wincher 网站 ID/关键词 ID。

工具主要输入
get_websites—
get_keywordswebsite_id
get_keyword_rankingswebsite_id、keyword_id、日期范围
get_competitor_ranking_summarieswebsite_id
get_competitor_keyword_positionswebsite_id、竞争对手筛选条件
get_serpswebsite_id、keyword_id
get_keyword_groupswebsite_id
get_bulk_ranking_historywebsite_id、关键词 ID 列表(数量有限制)
get_annotationswebsite_id

字段级详情:随附的 docs/api/wincher-openapi.json 和 Wincher API 文档。


面向 Agent 的提示词示例

  • “列出我 Wincher 账户中的所有网站。”
  • “对于网站 ID 12345,显示排名前 10 的关键词。”
  • “比较此网站上我们的排名与竞争对手 X 的排名。”
  • “显示关键词 ID 67890 对应的 SERP。”
  • “哪个关键词组的平均排名最好?”

安全

此服务使用你的 API 令牌调用你的 Wincher 账户。请像对待任何具有出站 HTTPS 通信能力的本地工具一样对待它。

我们在代码中实施的措施
控制措施详情
只读工具不创建/更新/删除 Wincher 资源
仅限 Stdio服务不监听网络
固定生产主机源代码中为 https://api.wincher.com
暂存 URL 验证仅允许 HTTPS;阻止 localhost/私有/元数据主机
不跟随重定向HTTP 客户端设置 follow_redirects=False
限制输入/输出范围对 ID 进行验证、限制批量数量、限制格式化响应中的行数
错误信息脱敏工具错误信息不会包含令牌和完整响应正文
你应该做的事
  1. 切勿提交 .env、包含真实密钥的 MCP JSON,或 WINCHER_STAGING_API_HOST 的值。
  2. 如果 .cursor/mcp.json 可能包含与机密信息工作流相关的本地路径,请优先将其加入项目的 gitignore。
  3. 请查看 security_best_practices_report.md,了解完整审计结果和剩余风险(包括暂存环境配置错误时的 SSRF 风险)。
威胁模型(简要)
模式谁可以调用工具?
stdio启动 Python 进程的 MCP 客户端(你的 IDE / Agent 宿主)

API 参考

OpenAPI 文件随附自 wincher.com/docs/api:

文件用途
docs/api/wincher-openapi.json规范快照
docs/api/META.jsonfetched_at、source_chunk_sha256
docs/api/README.md刷新说明

在本地刷新:

python3 scripts/fetch_wincher_openapi.py

CI 每周会根据 META.json 运行一次漂移检查(scripts/fetch_wincher_openapi.py --check)。


故障排除

症状尝试方法
未列出 MCP 服务重启客户端;检查 .venv/bin/python 和 wincher_mcp_server.py 的绝对路径。
未设置 WINCHER_API_KEY将令牌添加到 MCP env,或添加到用于加载密钥文件的包装器中。
HTTP 401在 Wincher 中重新生成令牌;更新环境变量;重启客户端。
数据为空或不完整确认 Wincher UI 中存在网站/关键词;检查网站/关键词 ID。
暂存环境错误确保在 args 中设置 --use-staging,并在 env 中设置 WINCHER_STAGING_API_HOST(仓库中不包含此主机)。

手动测试 API 密钥:

curl -sS -H "Authorization: Bearer YOUR_KEY" https://api.wincher.com/v1/websites

开发

每次推送到 main 以及每个拉取请求都会运行 CI:

作业执行内容
testPython 3.10 / 3.11 / 3.12 — pip install、py_compile、pytest、pip-audit
api-spec-check每周(以及按计划)— 验证 Wincher 文档分块哈希与 docs/api/META.json 是否一致
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt -r requirements-dev.txt
pytest -q
pip-audit -r requirements.txt -r requirements-dev.txt
python3 scripts/fetch_wincher_openapi.py          # refresh spec
python3 scripts/fetch_wincher_openapi.py --check  # drift check

目录结构:

wincher_mcp_server.py   # MCP entry (stdio)
scripts/                # OpenAPI fetch
docs/api/               # Vendored spec + META
test/                   # pytest (security, fetch script)
.cursor/                # Agent rules and skills
AGENTS.md               # Pointer for coding agents

Agent:从 AGENTS.md 和 .cursor/rules/ 开始。

Dependabot:.github/dependabot.yml(pip + GitHub Actions)。


源流与许可证

项目链接
仓库github.com/vmandic/wincher-mcp
PyPIpypi.org/project/wincher-mcp
早期原型github.com/chris-tutt/wincher-mcp-server
Wincher APIwincher.com/docs/api
MCP SDKmodelcontextprotocol/python-sdk

MIT — 由 Vedran Mandić 和贡献者维护。

欢迎通过议题和拉取请求贡献。在提交 PR 前运行 pytest 和 pip-audit。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。