feat: MCP server for Snipe search/scoring #27

Closed
opened 2026-04-07 18:00:27 -07:00 by pyr0ball · 0 comments
Owner

Summary

Add a lightweight MCP (Model Context Protocol) server that wraps the Snipe FastAPI so Claude Code and other MCP clients can search eBay and get trust-scored listings as tool calls — without needing a browser session.

Motivation

Current workflow: Playwright navigates the Vue frontend → brittle, slow, requires Xvfb.
Desired workflow: snipe_search(q, category, pages) → structured JSON response Claude can reason over directly.

Proposed tools

Tool Maps to Description
snipe_search GET /api/search Search eBay, return trust-scored listings
snipe_enrich POST /api/enrich Enrich a single listing with seller history
snipe_saved_searches GET /api/saved-searches List saved searches
snipe_blocklist GET /api/blocklist Read seller blocklist

Implementation

  • MCP server in snipe/mcp_server/ using mcp Python SDK (FastMCP)
  • Thin wrapper: each tool calls the existing FastAPI endpoint, returns the listings array
  • No new business logic — trust scoring stays in FastAPI
  • Registered in ~/.claude/mcp_servers.json (or equivalent) so Claude Code picks it up automatically
  • manage.sh mcp start|stop|status for lifecycle

Config

SNIPE_API_URL=http://localhost:8510   # default

Out of scope

  • Auction sniping / bid placement (separate feature)
  • Auth / multi-user (single-user tool)

Labels

enhancement, mcp, dx

## Summary Add a lightweight MCP (Model Context Protocol) server that wraps the Snipe FastAPI so Claude Code and other MCP clients can search eBay and get trust-scored listings as tool calls — without needing a browser session. ## Motivation Current workflow: Playwright navigates the Vue frontend → brittle, slow, requires Xvfb. Desired workflow: `snipe_search(q, category, pages)` → structured JSON response Claude can reason over directly. ## Proposed tools | Tool | Maps to | Description | |------|---------|-------------| | `snipe_search` | `GET /api/search` | Search eBay, return trust-scored listings | | `snipe_enrich` | `POST /api/enrich` | Enrich a single listing with seller history | | `snipe_saved_searches` | `GET /api/saved-searches` | List saved searches | | `snipe_blocklist` | `GET /api/blocklist` | Read seller blocklist | ## Implementation - MCP server in `snipe/mcp_server/` using `mcp` Python SDK (FastMCP) - Thin wrapper: each tool calls the existing FastAPI endpoint, returns the `listings` array - No new business logic — trust scoring stays in FastAPI - Registered in `~/.claude/mcp_servers.json` (or equivalent) so Claude Code picks it up automatically - `manage.sh mcp start|stop|status` for lifecycle ## Config ``` SNIPE_API_URL=http://localhost:8510 # default ``` ## Out of scope - Auction sniping / bid placement (separate feature) - Auth / multi-user (single-user tool) ## Labels `enhancement`, `mcp`, `dx`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/snipe#27
No description provided.