Skip to main content
Glama
cesarvarela

Alpaca MCP Server

by cesarvarela
README.md
# Alpaca MCP Server
[![smithery badge](https://smithery.ai/badge/@cesarvarela/alpaca-mcp)](https://smithery.ai/server/@cesarvarela/alpaca-mcp)

Expose Alpaca Market Data & Broker API as MCP tools.

## Installation

### Installing via Smithery

To install Alpaca Market Data Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@cesarvarela/alpaca-mcp):

```bash
npx -y @smithery/cli install @cesarvarela/alpaca-mcp --client claude
```

### Manual Installation
```bash
npm install alpaca-mcp
```

## Local Development

```bash
git clone <repo-url>
cd alpaca-mcp
npm install
```

## Environment Variables

Create a `.env` at project root with:

```env
ALPACA_ENDPOINT=https://data.alpaca.markets
ALPACA_BROKER_ENDPOINT=https://broker-api.alpaca.markets
ALPACA_API_KEY=YOUR_ALPACA_API_KEY
ALPACA_SECRET_KEY=YOUR_ALPACA_SECRET_KEY
```

## Commands

- **start** (dev): `npm start` (runs `npx tsx index.ts`)
- **build**: `npm run build` (compiles to `dist/`)
- **run compiled**: `node dist/index.js`

## Usage

Once running, the MCP server listens on stdin/stdout. Use any MCP client or the CLI:

```bash
npm link      # optional
alpaca-mcp    # starts server globally
```

### Available Tools

- **get-assets** `{ assetClass?: "us_equity" | "crypto" }`
- **get-stock-bars** `{ symbols: string[]; start: string; end: string; timeframe: string }`
- **get-market-days** `{ start: string; end: string }`
- **get-news** `{ start: string; end: string; symbols: string[] }`

Each returns JSON in `content[0].text` or an error.

## MCP Client Configuration

To integrate via `mcp.config.json`, add the following under the `mcpServers` key:

```json
{
  "mcpServers": {
    "alpaca-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "alpaca-mcp"
      ],
      "env": {
        "ALPACA_ENDPOINT": "https://data.alpaca.markets",
        "ALPACA_BROKER_ENDPOINT": "https://broker-api.alpaca.markets",
        "ALPACA_API_KEY": "<YOUR_API_KEY>",
        "ALPACA_SECRET_KEY": "<YOUR_SECRET_KEY>"
      }
    }
  }
}

## Publishing

```bash
npm publish
```

## License

ISC

TDQS

D1.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get-assets retrieves assets, get-market-days provides market schedule information, get-news fetches news data, and get-stock-bars obtains stock price bars. There is no overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with hyphens (get-assets, get-market-days, get-news, get-stock-bars). This uniformity makes the tool set predictable and easy to understand.

Tool Count3/5

With only 4 tools, the set feels thin for a financial data server, potentially lacking operations like trading, account management, or more granular data queries. However, it covers basic data retrieval functions adequately.

Completeness2/5

The tool surface is severely incomplete for a financial domain, offering only read operations (get-*) with no create, update, delete, or trading capabilities. This limits agents to passive data access without supporting full investment workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues