Polymarket의 리더보드와 실시간 거래 체결 데이터를 조회하여 AI 클라이언트가 스마트 머니 트레이더를 추적할 수 있게 합니다.
다른 이름 polymarketwallets/pmwallets-node, pmwallets-node
- 스타
- 0
- Tools
- —
- 다운로드, 30일
- 655
- 최신 버전
- 0.6.6
- 마지막 커밋
- 2026년 11월 6일
- 라이선스
- MIT
PMWallets MCP란?
PMWallets은(는) MCP server입니다. Polymarket의 리더보드와 실시간 거래 체결 데이터를 조회하여 AI 클라이언트가 스마트 머니 트레이더를 추적할 수 있게 합니다.
프로젝트 README에서 생성된 요약
PMWallets MCP server 정보
PMWallets는 Polygon 블록체인의 데이터를 분석하여 Polymarket에서 수익을 내는 트레이더를 모니터링할 수 있는 특화된 인터페이스를 제공합니다. 이 MCP server를 통해 개발자와 AI agent는 스마트 머니 리더보드에 접근하고 실시간 거래 체결 데이터를 수신할 수 있습니다. 특정 지갑의 활동을 추적하거나 정치, 스포츠, 암호화폐 등 다양한 카테고리에서 성과가 높은 트레이더를 찾고자 하는 사용자에게 적합합니다.
이 server를 사용하려면 PMWallets 웹사이트에서 발급받은 PMW_API_KEY를 제공해야 합니다. MCP 구현을 통해 Claude Desktop, Cursor, Windsurf와 같은 AI 클라이언트가 플랫폼과 직접 상호작용할 수 있습니다. 사용자는 특정 승률 임계값을 기준으로 리더보드를 조회하거나, 개별 지갑 엔티티를 구독하고, 라이브 거래 데이터를 스트리밍할 수 있습니다. 시스템은 누락된 체결 데이터를 리플레이하고 지속성 있는 커서를 사용하여 재시작 시 데이터 공백이 생기지 않도록 안정성을 보장합니다.
활용 사례
- 1수익성 높은 트레이더 식별AI agent가 특정 카테고리에서 최소 승률을 보유한 트레이더를 리더보드에서 스캔할 수 있습니다.
- 2특정 지갑 활동 모니터링AI에게 특정 트레이더를 팔로우하도록 지시하고, 해당 트레이더가 거래를 실행할 때 알림을 받도록 설정할 수 있습니다.
- 3실시간 거래 체결 스트리밍개발자는 시장 체결 데이터의 라이브 피드를 구축하여 자동화된 응답이나 분석을 트리거할 수 있습니다.
- 4과거 거래 데이터 내보내기압축된 CSV 파일을 통해 포괄적인 거래 내역을 가져올 수 있습니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
PMWallets MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 PMWallets MCP 설치
$ claude mcp add --env 'PMW_API_KEY=<YOUR_PMW_API_KEY>' pmwallets-node -- npx -y pmwalletsCursor에 PMWallets MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"pmwallets-node": {
"command": "npx",
"args": [
"-y",
"pmwallets"
],
"env": {
"PMW_API_KEY": "<YOUR_PMW_API_KEY>"
}
}
}
}VS Code에 PMWallets MCP 설치
.vscode/mcp.json
{
"servers": {
"pmwallets-node": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"pmwallets"
],
"env": {
"PMW_API_KEY": "<YOUR_PMW_API_KEY>"
}
}
}
}VS Code CLI에 PMWallets MCP 설치
$ code --add-mcp '{"name":"pmwallets-node","type":"stdio","command":"npx","args":["-y","pmwallets"],"env":{"PMW_API_KEY":"<YOUR_PMW_API_KEY>"}}'Claude Desktop에 PMWallets MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"pmwallets-node": {
"command": "npx",
"args": [
"-y",
"pmwallets"
],
"env": {
"PMW_API_KEY": "<YOUR_PMW_API_KEY>"
}
}
}
}Codex에 PMWallets MCP 설치
$ codex mcp add pmwallets-node --env 'PMW_API_KEY=<YOUR_PMW_API_KEY>' --env 'PMW_API_KEY=<YOUR_PMW_API_KEY>' -- npx -y pmwalletsCodex config.toml에 PMWallets MCP 설치
~/.codex/config.toml
[mcp_servers.pmwallets-node] command = "npx" args = ["-y", "pmwallets"] [mcp_servers.pmwallets-node.env] PMW_API_KEY = "<YOUR_PMW_API_KEY>"
Gemini CLI에 PMWallets MCP 설치
$ gemini mcp add -s user -e 'PMW_API_KEY=<YOUR_PMW_API_KEY>' -e 'PMW_API_KEY=<YOUR_PMW_API_KEY>' pmwallets-node npx -- -y pmwalletsGemini settings.json에 PMWallets MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"pmwallets-node": {
"command": "npx",
"args": [
"-y",
"pmwallets"
],
"env": {
"PMW_API_KEY": "<YOUR_PMW_API_KEY>"
}
}
}
}구성
PMW_API_KEY필수비밀PMWallets API key (pmw_...), from https://pmwallets.com/keys
PMW_API_KEY필수비밀PMWallets API key (pmw_...), from https://pmwallets.com/keys
| 이름 | 설명 | 유형 |
|---|---|---|
| PMW_API_KEY | PMWallets API key (pmw_...), from https://pmwallets.com/keys | 필수비밀 |
| PMW_API_KEY | PMWallets API key (pmw_...), from https://pmwallets.com/keys | 필수비밀 |
자동 검사
2026년 11월 14일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식 · 점수를 높이기 위해 수정할 항목
- 소스 저장소 연결 및 접근 가능polymarketwallets/pmwallets-node is public and reachablegithub.com/polymarketwallets/pmwallets-node ↗통과
- 패키지가 이 저장소를 소스로 명시pmwallets names https://github.com/polymarketwallets/pmwallets-python/issues as its sourcepypi.org/project/pmwallets/ ↗결함 발견
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-11-06github.com/polymarketwallets/pmwallets-node ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from pmwallets, pmwallets통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음7 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음0 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨검사되지 않음
- 원격 엔드포인트가 MCP 핸드셰이크에 응답HTTPS endpoint answered 401 (sign-in required)통과
README
GitHub에서 보기pmwallets — Node.js SDK for PMWallets
Official Node.js / TypeScript client for PMWallets: the Polymarket smart-money leaderboard computed from the Polygon chain, and the real-time fills of the Polymarket wallets you follow — delivered in order, exactly once, with every gap replayed.
中文说明 · Python SDK: pmwallets-python · Ready-to-run copy-trading bot built on it: polymarket-copy-trading-bot
Install
npm install pmwallets # Node.js ≥ 20
Create an API key on pmwallets.com/keys.
Signals and radar (Pro and Max)
const { entries } = await pmw.signals({ category: 'sports' });
const big = await pmw.radar({ minUsd: 25000, smart: true });
await pmw.saveSignalRule('signal', { enabled: true, scope: 'official', minWallets: 3, windowMin: 30, minUsd: 5000, channels: ['ws', 'webhook'] });
For live alerts use new SignalStream({ client: pmw, onAlert: (a) => … }).start(), or pmwallets alerts on the command line. Amounts keep two significant figures, times the minute, and traders are named by handle.
Usage
import { PmwClient, FillStream, FileStateStore, verifyWebhook } from 'pmwallets';
const pmw = new PmwClient({ apiKey: process.env.PMW_API_KEY! });
// who is making money on Polymarket, and how
const board = await pmw.leaderboard({ minWinLo: 0.55, minEligible: 30, style: 'taker', status: 'active', limit: 50 });
// only wallets whose address unlocks for free or for the $1 band (0 = free … 5; the ladder is board.pricing.bands)
const cheap = await pmw.leaderboard({ bands: [0, 1], minWinLo: 0.55 });
// follow one (billed per entity per hour; 402 = balance too low, 409 = dormant)
await pmw.subscribe({ entityId: board.rows[0].entityId, channels: ['ws'] });
// every fill of every entity you follow
const stream = new FillStream({
client: pmw,
store: new FileStateStore('./stream.json'), // a restart resumes exactly where it stopped
onFill: async (fill, { source }) => console.log(source, fill.side, fill.price, fill.tokenId),
onEvent: (e) => e.type === 'fatal' && console.error(e.error.message), // e.g. another bot already holds the stream
// takeover: true, // replace whichever API client holds this account's stream (it stops with `replaced`)
});
await stream.start();
What is in it
PmwClient |
leaderboard, entities, address unlocks (balance or plan), your unlocked addresses (myAddresses), plans (quote, buyPlan from the balance) and balance, invites, subscriptions, webhook status and deliveries, fills replay (fills, fillsSince), trade-history exports |
FillStream |
WebSocket with reconnect and keep-alive; detects missed frames by session/seq and replays them from the last fill delivered; de-duplicates by eventId; anchors behind the chain head on first start; persisted cursor |
verifyWebhook(rawBody, signature, secret) |
checks x-pmw-signature (HMAC-SHA256 of the raw body) |
One stream per account:
- An API-key connection takes priority over the pmwallets.com feed page (the page never takes the stream from it).
- Between two API connections the first one keeps the stream. A second one — another key of the same account, or the same bot started twice — is refused:
blocked, thenfatal, and the stream stops. Passtakeover: trueto replace the holder instead; the holder getsreplaced, thenfatal, and stops (it does not fight back). - A
FillStreamidentifies itself with a randomclientId, so its own reconnects after a network drop replace its own dead connection without needingtakeover. - When the server restarts it closes the socket with
1012; the stream reconnects at once (eventrestarting) and replays anything it missed.HTTPS_PROXY: passwsOptions: { agent }for the WebSocket and set a global fetch dispatcher.
PMWallets' servers are in the United Kingdom. A consumer that also trades on Polymarket should run from Ireland (AWS eu-west-1): Polymarket does not accept API orders from the UK, the US and several EU countries.
AI agents: command line and MCP
The package installs a pmwallets command that prints JSON — for scripts, and for AI agents (Claude Code, Codex,
Gemini CLI, Cursor, WorkBuddy, …) that act on the fills of the traders you follow.
export PMW_API_KEY=pmw_…
npx pmwallets leaderboard --minWinLo 0.55 --category politics --limit 20
npx pmwallets subscribe <handle> # billed per hour
npx pmwallets new-fills # fills since the previous call, each once (poll it)
npx pmwallets watch # live: one JSON line per fill, with its market and decimal amounts
npx pmwallets watch --batch-sec 30 --exec 'claude -p "Fills from traders I follow are on stdin. …"'
npx pmwallets mcp # the same as MCP tools
npx pmwallets skill # the guide to give your agent (SKILL.md)
watch --execruns the command once per batch, the fills on its stdin as JSON lines (and in$PMW_BATCH_FILE); fills that arrive while it runs make the next batch. A batch is handed over at most once: one whose command fails, times out or is interrupted is kept inpmw-watch/failed/and never re-run — the agent may already have placed an order. Restarts resume from where the stream stopped.- To trade, give the agent pmwallets-copytrade:
order buy <tokenId> --usdc 5 --key <eventId>(the same key never orders twice),market,balance,positions. - Platforms without a shell (Dify, Coze, n8n, GPT Actions): import openapi.json.
HTTPS_PROXY/NO_PROXYare honoured by the command line.
MCP config (Claude Desktop, Cursor, Windsurf, WorkBuddy, …):
{
"mcpServers": {
"pmwallets": {
"command": "npx",
"args": ["-y", "pmwallets", "mcp"],
"env": { "PMW_API_KEY": "pmw_..." }
}
}
}
Trade-history exports
A purchase is access to files: one zstd-compressed CSV per wallet per UTC day, downloadable at once and again later.
const order = await client.createExport({ entityIds: ['0x…'], from: '2026-09-01', to: '2026-09-30' });
const { files } = await client.exportFiles(String(order.id));
for (const f of files) {
const bytes = await client.downloadExportFile(f.wallet, f.day); // .csv.zst
}
exportFileUrl(wallet, day) returns the short-lived link instead; the API key is never sent to the storage host.
Resources
- Polymarket smart-money leaderboard — profitable Polymarket traders scored from the Polygon chain, with win-rate confidence intervals
- Polymarket copy trading guide — which wallets are worth following and how to get their fills in time
- How to learn from Polymarket smart money — reading a trader's record: confidence intervals, maker vs taker, market specialism
- PMWallets API documentation — WebSocket and webhook fill push, fills replay, trade-history exports
- Measured fill-push latency — block-to-push p50 / p95, published live
- Ways to follow Polymarket wallets, compared — official leaderboard, free trackers, SQL dashboards
- FAQ · 中文站
Guides
- PMWallets SDKs — Node.js and Python clients, side by side
- How to get a Polymarket wallet's trades in real time — polling the Data API, reading OrderFilled events on Polygon, or a pushed fill stream with replay
- Polymarket WebSocket API — what the market and user channels give you, and what they don't
- Polymarket trade alerts by webhook — verify the HMAC-SHA256 signature, answer fast, deduplicate on eventId
- How to export a Polymarket wallet's full trade history — past the Data API's 10,000-trade cap: every fill from the chain, one CSV per wallet per day
- Polymarket token IDs, condition IDs and slugs — how they connect
- How to calculate a Polymarket wallet's PnL — and why sites disagree
- Polymarket leaderboards by category — sports, crypto, politics, esports and more, ranked from on-chain PnL
- Busiest Polymarket markets — the 1,000 most-traded markets of the last 30 days and how their traders did
- All guides · llms.txt
License
MIT
PMWallets MCP 질문
PMWallets MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add --env 'PMW_API_KEY=<YOUR_PMW_API_KEY>' pmwallets-node -- npx -y pmwallets를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
PMWallets MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
실시간 거래 업데이트를 받을 수 있나요?
네, FillStream은 WebSocket 연결을 통해 실시간 체결 데이터를 제공하며, 연결이 끊겼을 때 데이터 누락을 방지하기 위한 리플레이 메커니즘을 포함하고 있습니다.
Polymarket 스마트 머니 리더보드에 어떻게 접근하나요?
PmwClient를 통해 리더보드에 접근할 수 있으며, 온체인 PnL 기준으로 트레이더 순위를 확인하거나 스포츠, 정치 등의 카테고리별로 필터링할 수 있습니다.