@akcanetwork/mcp-server
v0.9.0
Published
Akca x402 MCP Server - Proxy and VPN tools for AI agents
Maintainers
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 pageakca_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
