Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Per-wallet KOL deep dive — a tracked trader's portfolio P&L and its trades on a given mint.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
THREE_WS_BASE, THREE_WS_TIMEOUT_MSYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"kol": {
"command": "npx",
"args": [
"-y",
"@three-ws/kol-mcp"
],
"env": {
"THREE_WS_BASE": "your-value",
"THREE_WS_TIMEOUT_MS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add kol --env THREE_WS_BASE=your-value --env THREE_WS_TIMEOUT_MS=your-value -- npx -y @three-ws/kol-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"kol": {
"command": "npx",
"args": [
"-y",
"@three-ws/kol-mcp"
],
"env": {
"THREE_WS_BASE": "your-value",
"THREE_WS_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"kol": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@three-ws/kol-mcp"
],
"env": {
"THREE_WS_BASE": "your-value",
"THREE_WS_TIMEOUT_MS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
THREE_WS_BASE envTHREE_WS_TIMEOUT_MS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account nirholas, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.2) reached the registry 27 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, sync. labs
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@three-ws/kol-mcp
Track one smart trader: a tracked KOL wallet's holdings, real on-chain P&L, and its trades on a given mint, from any AI agent.
A Model Context Protocol server for the per-wallet KOL deep dive. Where
@three-ws/intel-mcpranks the whole tracked KOL set (kol_leaderboard) and shows everyone's trades on a mint (kol_trades), this server zooms in on one smart trader: pull their live portfolio card (holdings plus real on-chain P&L), then inspect their own buys/sells of a specific token: everything an agent needs to decide whether to copy or analyze them.
Holdings come from the three.ws Birdeye proxy (the Birdeye key lives server-side); P&L is FIFO-computed from the wallet's own on-chain trades, and trade history comes from the three.ws Helius-backed KOL feed. All live, read-only: no API key, signer, or payment on the client. Point THREE_WS_BASE at a deployment and go.
npm install @three-ws/kol-mcp
Or run with npx (no install):
npx @three-ws/kol-mcp
Claude Code, one line:
claude mcp add kol -- npx -y @three-ws/kol-mcp
Claude Desktop / Cursor (claude_desktop_config.json or mcp.json):
{
"mcpServers": { "kol": { "command": "npx", "args": ["-y", "@three-ws/kol-mcp"] } } }
Inspect the surface with the MCP Inspector:
npx -y @modelcontextprotocol/inspector npx @three-ws/kol-mcp
| Tool | Type | What it does |
|---|---|---|
get_wallet_portfolio | read-only | One KOL wallet's live portfolio card: holdings value, position count and top holding, plus 30d realized P&L, win rate, trades and volume from its own on-chain trades. |
get_wallet_trades | read-only | That wallet's recent buys/sells of a given mint — side, SOL size, token amount, price, USD value, and timing, newest first. |
Both tools read live data: holdings, P&L and trade feeds move between calls, so neither is idempotent.
`get_wallet_portfolio` — wallet (required).
`get_wallet_trades` — wallet (required), mint (required), limit (1–100, default 20).
The three.ws trade feed is mint-keyed (it scans every tracked KOL wallet for activity on one mint), so a per-wallet view is that feed narrowed to your wallet.
get_wallet_tradestherefore needs both awalletand amint. To see *every* tracked wallet's trades on a mint, usekol_tradesin@three-ws/intel-mcp.
// get_wallet_portfolio
{ "wallet": "5xY…KoL" }
{ "ok": true, "wallet": "5xY…KoL", "has_activity": true, "portfolio_value_usd": 38120, "holdings": 14, "top_token": { "symbol": "THREE", "valueUsd": 21500 }, "realized_pnl_usd": 124300, "win_rate": 0.64, "total_trades": 412, "volume_usd": 2840000, "pnl_source": "onchain-fifo", "pnl_window": "30d" }
// get_wallet_trades
{ "wallet": "5xY…KoL", "mint": "FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump", "limit": 3 }
{ "ok": true, "wallet": "5xY…KoL", "mint": "FeMbDoX7R1Psc4GEcvJdsbNbZA3bfztcyDCatJVJpump", "count": 2, "trades": [ { "side": "buy", "amountSol": 4.2, "amountToken": 1830000, "price": 0.0000022, "usd": 612.4, "time": "2026-06-24T09:12:03.000Z", "source": "kol", "label": "Top Trader" } ] }
has_activity: false on a portfolio (no holdings and no trades) means the proxy has no recorded history for that address yet: an honest "no data", not a failure. A null P&L field with pnl_source: null is the same kind of honesty at field level: three.ws has no trade history for that wallet in the window, so it reports nothing rather than a zero that would read as a flat record.
An outage is never dressed up as either of those. When the holdings provider is down or rate-limited, three.ws omits the wallet's row rather than inventing one, and get_wallet_portfolio fails with `upstream_unavailable` instead of answering with an empty card. A quiet wallet and a dark provider are different answers, and an agent copying a trader needs to be able to tell them apart.
Runnable examples live in examples/:
node examples/list-tools.mjs # both tools with their full input schemas
node examples/wallet-card.mjs # a trader's portfolio card + trades, live
Both spawn this server over stdio and read the live public KOL API. Every tool here is read-only, so nothing can be signed, spent, or published. See examples/README.md for expected output.
https://three.ws (or your own THREE_WS_BASE).| Variable | Required | Default |
|---|---|---|
THREE_WS_BASE | no | https://three.ws |
THREE_WS_TIMEOUT_MS | no | 20000 |
No key on the client: the Birdeye key that backs the holdings half and the Helius key behind the trade feed both live server-side on three.ws.
Part of the three.ws SDK suite — 3D AI agents, on-chain identity, and agent payments.
Website · Changelog · GitHub