Kraken Pro MCP
# Kraken Pro MCP
A Model Context Protocol (MCP) server that provides real-time cryptocurrency market data from the Kraken Pro exchange.
## Overview
This MCP server exposes Kraken's public API as MCP tools, allowing AI assistants to fetch real-time cryptocurrency prices, trading pairs, and market data.
## Available Tools
| Tool | Description |
|------|-------------|
| `get_system_status` | Check if Kraken API is online and operational |
| `get_ticker` | Get real-time ticker data for a trading pair (e.g., XBTUSD, ETHUSD) |
| `get_asset_info` | List all available assets on Kraken with their details |
## Installation
```bash
pnpm install
```
## Development
Run in development mode with hot reload:
```bash
pnpm run dev
```
## Build
Compile TypeScript to JavaScript:
```bash
pnpm run build
```
## Usage
Start the MCP server:
```bash
pnpm start
```
The server runs on stdio and communicates via the Model Context Protocol.
### Claude Desktop
To use this server with Claude Desktop, add the following to your Claude Desktop configuration file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"kraken-pro": {
"command": "node",
"args": [
"<PATH TO REPO>/kraken-pro-mcp/dist/index.js"
]
}
}
}
```
Replace `<PATH TO REPO>` with the absolute path to this repository on your system.
### Development Mode
For development and testing new changes with hot reload, use the development mode instead:
```json
{
"mcpServers": {
"kraken-pro": {
"command": "pnpm",
"args": ["run", "dev"],
"cwd": "<PATH TO REPO>/kraken-pro-mcp"
}
}
}
```
This will automatically restart the server when you make changes to the source code.
## Testing
```bash
# Run all tests in watch mode
pnpm test
# Run unit tests only (with mocks)
pnpm run test:unit
# Run acceptance tests (hits real Kraken API - rate limited)
pnpm run test:acceptance
```
## Linting & Formatting
```bash
# Check linting
pnpm run lint
# Format code
pnpm run format
# Run all checks (lint + format + organize imports)
pnpm run check
```
## Project Structure
```
src/
index.ts # MCP server entry point with tool registrations
kraken-client.ts # Kraken API client using native fetch
types.ts # Shared TypeScript interfaces
test/
unit/ # Fast unit tests with mocked fetch
acceptance/ # Slower integration tests hitting real API
```
## Technologies
- [Model Context Protocol](https://modelcontextprotocol.io/) - Protocol for AI tool integration
- [Zod](https://zod.dev/) - Schema validation
- TypeScript 5.9 with strict mode
- Vitest for testing
- Biome for linting and formatting
## License
ISC
TDQS
Scored across 8 tools
Each tool targets a distinct data type or endpoint (assets, pairs, OHLC, order book, trades, spreads, ticker, system status) with no overlapping purposes. An agent can easily select the correct tool for a given market data need.
All tools follow a consistent get_<noun> pattern in snake_case (e.g., get_asset_info, get_order_book, get_recent_trades). The naming is predictable and uniform throughout.
Eight tools is well-scoped for a market data API, covering the essential public endpoints without redundancy. Each tool earns its place and the set is not bloated.
The tool set comprehensively covers market data and system status, but for a server named 'Kraken Pro' it lacks any trading or account operations (e.g., place order, cancel order, get balances, list open orders). These are notable missing operations that would limit an agent's ability to interact with the platform.