npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@akcanetwork/mcp-server

v0.9.0

Published

Akca x402 MCP Server - Proxy and VPN tools for AI agents

Readme

@akcanetwork/mcp-server

MCP server that gives AI agents anonymous web access through the Akca x402 proxy and VPN network. Three ways to pay: subscription token, Solana wallet keypair, or Phantom MCP.

Setup

Add to your Claude Code MCP settings (~/.claude/mcp.json):

Option A: Zero config (recommended)

No wallet, no token — just install. The agent asks for your subscription token at runtime via akca_login, or pays per-request through Phantom MCP.

{
  "mcpServers": {
    "akca": {
      "command": "npx",
      "args": ["-y", "@akcanetwork/mcp-server"]
    },
    "phantom": {
      "command": "npx",
      "args": ["-y", "@phantom/mcp-server"]
    }
  }
}

Option B: With wallet keypair (automatic payment)

{
  "mcpServers": {
    "akca": {
      "command": "npx",
      "args": ["-y", "@akcanetwork/mcp-server"],
      "env": {
        "SOLANA_KEYPAIR_PATH": "/path/to/wallet.json",
        "SOLANA_RPC_URL": "https://api.mainnet-beta.solana.com"
      }
    }
  }
}

Option C: With base58 private key

{
  "mcpServers": {
    "akca": {
      "command": "npx",
      "args": ["-y", "@akcanetwork/mcp-server"],
      "env": {
        "SOLANA_PRIVATE_KEY": "your-base58-private-key",
        "SOLANA_RPC_URL": "https://api.mainnet-beta.solana.com"
      }
    }
  }
}

How It Works

Subscriber flow (akca_login):

User: "Fetch this URL through akca proxy"
Agent: "Do you have an Akca account token, or would you like to pay per-request?"
User: "Here's my token: eyJ..."

1. akca_login({ account_token: "eyJ..." })
   -> { ok: true, message: "Logged in. Proxy included in subscription." }

2. akca_proxy_fetch({ url: "https://example.com", country: "DE" })
   -> { status: 200, body: "...", proxy: { exit_country: "DE" } }

Per-request flow (Phantom MCP):

1. akca_proxy_fetch({ url: "https://example.com" })
   -> { payment_required: true, amount_usdc: 0.001, pay_to: "ATA_ADDRESS" }

2. phantom transfer({ to: "ATA_ADDRESS", amount: "0.001", token: "USDC" })
   -> signature: "5xYz..."

3. akca_proxy_fetch({ url: "https://example.com", payment_signature: "5xYz..." })
   -> { status: 200, body: "..." }

Wallet keypair flow (automatic):

1. akca_proxy_fetch({ url: "https://example.com" })
   -> SDK auto-pays USDC on 402
   -> { status: 200, body: "..." }

Tools

akca_login

Authenticate with a subscription token for the current session. After login, all proxy and VPN requests are included — no per-request payment needed.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | account_token | string | yes | Account JWT token (from Akca dashboard x402 page or serial key login) |

akca_proxy_fetch

Fetch a URL through the Akca anonymous proxy network. User-Agent headers are auto-rotated for bot detection avoidance. Supports IP rotation and smart HTML extraction.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | url | string | yes | URL to fetch | | method | string | no | HTTP method (default: GET) | | headers | object | no | Request headers (User-Agent auto-rotated if not set) | | body | string | no | Request body | | country | string | no | Exit country code (DE, US, JP...) | | rotate | boolean | no | Enable IP rotation — each request uses a different exit node (round-robin) | | extract | string | no | Smart extract mode: text (body text), markdown (clean markdown — best for AI), links (all links), metadata (title, description, OG tags), tables (table data), json (JSON-LD) | | cookie_jar | string | no | Cookie jar ID — persist cookies across multiple fetch calls. Use any string as ID. Cookies stored server-side for 30 min. | | payment_signature | string | no | Solana tx signature (after a payment_required response) |

Example with extract:

akca_proxy_fetch({
  url: "https://news.ycombinator.com",
  extract: "markdown",
  rotate: true
})
-> { status: 200, extracted: { markdown: "# Hacker News\n\n- [Title](url)..." }, proxy: {...} }

Example with cookie jar (multi-step login):

1. akca_proxy_fetch({ url: "https://site.com/login", method: "POST",
     body: '{"user":"x","pass":"y"}', cookie_jar: "sess1" })
   -> stores login cookies

2. akca_proxy_fetch({ url: "https://site.com/dashboard", cookie_jar: "sess1" })
   -> sends stored cookies, gets authenticated page

akca_proxy_search

Search the web anonymously through proxy and get structured results. Supports DuckDuckGo (default, more reliable) and Google.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | query | string | yes | Search query | | engine | string | no | duckduckgo (default) or google | | country | string | no | Exit country code (affects search locality) | | rotate | boolean | no | Enable IP rotation | | num_results | number | no | Max results (default 10, max 20) | | payment_signature | string | no | Solana tx signature |

Example:

akca_proxy_search({ query: "solana x402 protocol", num_results: 5 })
-> { query: "...", count: 5, results: [{title: "...", url: "...", snippet: "..."}, ...] }

akca_proxy_batch

Fetch multiple URLs in parallel through the proxy network. Up to 50 URLs per batch with configurable concurrency.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | urls | array | yes | Array of URL strings or {url, method, headers, body} objects | | method | string | no | Default HTTP method for all URLs | | headers | object | no | Default headers for all URLs | | country | string | no | Exit country code | | rotate | boolean | no | Enable IP rotation across batch requests | | extract | string | no | Smart extract mode: text, markdown, links, metadata, tables, json | | concurrency | number | no | Max parallel requests (default 5, max 10) | | cookie_jar | string | no | Cookie jar ID for session persistence | | payment_signature | string | no | Solana tx signature |

Example:

akca_proxy_batch({
  urls: [
    "https://example.com/page1",
    "https://example.com/page2",
    "https://example.com/page3"
  ],
  extract: "metadata",
  rotate: true
})
-> { count: 3, results: [{url, status, extracted: {title, description, og}}, ...] }

akca_proxy_render

Render a web page via headless browser routed through proxy and capture a screenshot. Returns a base64-encoded image (PNG or JPEG). Useful for visual snapshots and capturing JS-rendered content. Includes free stealth mode for Cloudflare/bot bypass.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | url | string | yes | URL to render and screenshot | | country | string | no | Exit country code | | server_id | string | no | Specific proxy server ID | | viewport | object | no | {width, height} — viewport dimensions (default: 1280x720) | | full_page | boolean | no | Capture full scrollable page (default: false) | | format | string | no | Image format: png (default) or jpeg | | stealth | boolean | no | Stealth mode — bypass Cloudflare/bot detection (free, no extra charge) | | wait_for_selector | string | no | CSS selector to wait for before screenshot | | payment_signature | string | no | Solana tx signature |

Example:

akca_proxy_render({
  url: "https://example.com",
  viewport: { width: 1920, height: 1080 },
  full_page: true,
  stealth: true,
  wait_for_selector: "#content",
  country: "DE"
})
-> { title: "Example", screenshot: "data:image/png;base64,...", html_length: 12345 }

akca_proxy_crawl

Crawl a website by discovering pages via sitemap.xml or link extraction, then fetch them all through proxy. Returns content for each discovered page.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | url | string | yes | Root URL to crawl (checks sitemap.xml at this origin) | | max_pages | number | no | Max pages to fetch (default 10, max 100) | | extract | string | no | Smart extract mode for all pages | | country | string | no | Exit country code | | rotate | boolean | no | Enable IP rotation across crawl requests | | cookie_jar | string | no | Cookie jar ID for session persistence across crawled pages | | payment_signature | string | no | Solana tx signature |

Example:

akca_proxy_crawl({
  url: "https://docs.example.com",
  max_pages: 20,
  extract: "text",
  rotate: true
})
-> { pages_found: 47, pages_fetched: 20, results: [{url, status, extracted: {text}}, ...] }

akca_vpn_connect

Create a WireGuard VPN session. Returns a config file.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | server_id | string | yes | Server ID from akca_list_servers | | duration | string | no | 24h, 7d, or 30d (default: 24h) | | payment_signature | string | no | Solana tx signature (after a payment_required response) |

akca_vpn_disconnect

Disconnect an active VPN session and remove the WireGuard peer from the server.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | session_id | string | yes | Session ID from akca_vpn_connect or akca_vpn_status |

akca_proxy_session

Create a 24-hour unlimited proxy session. After creation, all proxy requests use the session — no per-request payment needed.

| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | country | string | no | Exit country code (DE, US, JP...) | | payment_signature | string | no | Solana tx signature |

akca_vpn_status

Check the status of all active VPN sessions, including remaining time and expiry.

akca_pricing

Get current pricing for all Akca proxy and VPN services.

akca_list_servers

List available proxy/VPN servers with their locations and current load. No payment required.

Payment Required Response

When not logged in via akca_login and no wallet is configured:

{
  "payment_required": true,
  "amount_usdc": 0.50,
  "pay_to": "RECIPIENT_ATA_ADDRESS",
  "currency": "USDC",
  "network": "solana",
  "instruction": "Use Phantom MCP transfer to send 0.50 USDC to the address above, then call this tool again with payment_signature"
}

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | SOLANA_KEYPAIR_PATH | no | Path to Solana wallet JSON file (enables automatic payment) | | SOLANA_PRIVATE_KEY | no | Base58 private key (alternative to keypair file) | | SOLANA_RPC_URL | no | Custom Solana RPC URL | | AKCA_API_URL | no | API base URL (default: https://api.akca.network) | | AKCA_ACCOUNT_TOKEN | no | Pre-set subscription token (alternative to runtime akca_login) |

Pricing

| Product | Tier | Price | |---------|------|-------| | Proxy | Single fetch | 0.001 USDC | | Proxy | Web search | 0.001 USDC | | Proxy | Batch fetch (up to 50 URLs) | 0.001 USDC | | Proxy | Page render / screenshot (stealth included) | 0.005 USDC | | Proxy | Sitemap crawl | 0.001 USDC | | Proxy | 24-hour session | 1.00 USDC | | VPN | 24 hours | 0.50 USDC | | VPN | 7 days | 2.00 USDC | | VPN | 30 days | 6.00 USDC |

VPN subscribers and NFT holders get proxy access included — use akca_login with your account token.

License

MIT - Akca Network