본문으로 건너뛰기
cccskills
무료GitHub에 공개

verify-local-mcp

Verify a local OpenSEO MCP server, which exposes tools to AI agents, through real DataForSEO calls and a headless Claude trial. Check protocol correctness alongside tool discovery, input rules, response size, errors, and asynchronous task recovery.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Verify the OpenSEO MCP server end-to-end on a local dev server — protocol-level correctness against real DataForSEO, then a headless-agent consumer probe that tests tool ergonomics (descriptions, schemas, output size, errors, async flows) without the maintainer manually driving an MCP client. Use after adding or changing MCP tools, or when asked to check that the MCP "works" or "is ergonomic".

설치 방법 보기

이럴 때 유용합니다

  • Checking an MCP tool after adding or changing it
  • Testing whether an agent can choose tools from their descriptions
  • Verifying queued tasks and recovery using taskId
  • Finding oversized responses and unclear errors

포함된 파일(1)

  • SKILL.md5.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Verify local MCP

Two layers, in order. The protocol layer proves the server and provider behave; the consumer layer proves an agent that has never seen the code can use the tools well. They catch different bugs — protocol testing found DataForSEO quirks (zoom-dependent empty SERPs), the consumer probe found ergonomics failures (9KB provider rows overflowing client token budgets, fractional inputs rejected upstream with raw provider errors). Do both.

1. Boot

  • .env.local needs AUTH_MODE=local_noauth and DATAFORSEO_API_KEY (base64 of login:password). Never print the key.
  • Start pnpm dev:agents in the background. The server URL is branch-prefixed: http://<branch-suffix>.open-seo.localhost:1355 (the exact URL is printed on boot; logs tee to .logs/dev-server.log).
  • With local_noauth, /mcp needs no token. Vite hot-reloads server code, so fix → re-call without restarting.
  • After changing a tool's input or output schema, refresh the client's tool discovery (tools/list) or reconnect the MCP client before calling it again. Clients can cache validators from the previous tool list and reject valid results after the provider call has already incurred a charge.

2. Protocol smoke (cheap, deterministic)

Raw JSON-RPC against /mcp — the layer for asserting exact shapes and driving edge cases (resume taskIds, empty results, invalid inputs):

curl -sS http://<url>/mcp \
  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# tools/call: {"method":"tools/call","params":{"name":"<tool>","arguments":{...}}}
  • Bootstrap: list_projects, then create_project if empty — most tools need a projectId.
  • Test the happy path AND at least one edge per changed tool: an empty result (obscure query), an invalid identifier, and for queued tools the full lifecycle including resuming with the returned taskId.
  • These are real, billed DataForSEO calls (metering itself short-circuits in local_noauth — billing needs unit tests, not this). Keep depths 10–20.

3. Consumer probe (the ergonomics test)

Spawn a headless Claude subprocess connected as a real MCP client. Write a config:

{
  "mcpServers": {
    "openseo-local": { "type": "http", "url": "http://<url>/mcp" }
  }
}

Then run a NATURAL task — never name the tools; whether the model finds them from descriptions alone is the test:

claude -p "<natural task a customer would ask>. Keep spend minimal: depths 10-20, one 3x3 grid max, ~10 paid calls.
Deliver two sections: 1. FINDINGS — the task result. 2. MCP FEEDBACK — critique the MCP as a first-time consumer:
were descriptions enough to pick tools without trial and error? confusing schemas, surprising output shapes or sizes,
unclear errors, credit-cost surprises? Did async/taskId flows behave as described? List anything that made you hesitate or retry." \
  --mcp-config mcp-local.json --strict-mcp-config \
  --allowedTools "mcp__openseo-local,mcp__openseo-local__*" \
  --model sonnet --max-turns 30

Use --model sonnet as the typical-client proxy — if sonnet navigates it cold, weaker clients likely can too. Read FINDINGS for correctness (did it get real, sensible data?) and MCP FEEDBACK for the rubric below.

4. Ergonomics rubric — what feedback to act on

  • Tool selection: the probe should pick the right tool first try. Retries or wrong-tool detours mean a description needs a sharper "use this when / not this" sentence.
  • Schemas: every constraint the provider enforces silently must be in the field's .describe() (units, whole-number requirements, defaults, what's ignored when). If the probe guessed-and-retried an input, encode the rule server-side (coerce/round) or document it — prefer coercing.
  • Output size: budget roughly a few KB per row. Provider rows carrying popular_times/attribute trees/photo URLs must be trimmed to the fields the tool's job needs; point to the single-entity tool for the full shape.
  • Errors: actionable, never a raw upstream field name without a hint at the fix. Failures after a billed step must keep the recovery handle (e.g. the taskId) in the message.
  • Async copy: descriptions must match typical latency ("usually completes within this call") and the resume path must actually work when driven by the probe, not just by curl.
  • Credit honesty: each description's credit sentence matches reality, including cache-hit and resume paths.

5. Iterate and clean up

Fix findings → hot-reload picks them up → re-verify just the changed behavior via curl (cheap) → rerun the full consumer probe once per iteration round (it re-tests selection and flow, not just the fix). When done: stop the dev server background task, run the repo's tests/ci:check, and fold genuine provider quirks into code comments or tests so the next agent doesn't rediscover them.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Research questions about a market, examine recorded ChatGPT answers and cited websites, and identify themes where a brand appears or is missing. Receive ranked prompt groups and suggested questions for future tracking.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Finding question themes related to a product category
  • Checking brand mentions and cited websites
  • Identifying themes with limited brand visibility
every-app/open-seo2.4만2026년 10월 14일 업데이트

Audit how a brand appears in AI answers by examining mentions, website citations, competitors, and cited pages. Receive one to three evidence-based priorities, such as improving a page, seeking inclusion in a relevant source, or fixing access barriers.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Investigate why AI answers recommend competitors
  • Check brand mentions and website citations
  • Prioritize pages to improve or create
every-app/open-seo2.4만2026년 10월 14일 업데이트

Compare several competitors to see which sites lead a search market, what content earns rankings, and where opportunities remain. The report covers keyword reach, links from other sites, and practical next steps.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Identifying leading sites in a search market
  • Comparing competitors' successful content themes
  • Finding underserved topics to target
every-app/open-seo2.4만2026년 10월 14일 업데이트

Analyze a named competitor's unpaid search traffic, ranking keywords, content themes, and links from other websites. Identify strengths, weaknesses, and relevant opportunities, with an optional comparison to your own site and a report of recommended actions.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Investigate a specific competitor's SEO strengths
  • Find pages and keywords worth targeting
  • Compare a competitor with your own site
every-app/open-seo2.4만2026년 10월 14일 업데이트

Create or update skills using OpenSEO's repository conventions. Keep one canonical source, distinguish internal and public workflows, maintain Claude Code links, and register public skills in documentation, the in-app agent, and plugin bundles.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Add a new skill to the OpenSEO repository
  • Turn a development workflow into an internal skill
  • Repair drift between skill directories
every-app/open-seo2.4만2026년 10월 14일 업데이트

deslop

무료

Edit blog posts, documentation, marketing copy, and PR descriptions to remove formulaic AI writing patterns. Replace filler, vague claims, and staged emphasis with plain statements while preserving concrete details and the writer's voice.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Editing AI-drafted blog posts
  • Removing wordy introductions from documentation
  • Toning down exaggerated marketing copy
every-app/open-seo2.4만2026년 10월 14일 업데이트

every-app의 스킬 모두 보기

이 스킬의 문제 신고