A Model Context Protocol (MCP) server that provides access to QuiverAPI's Tier 1 endpoints for financial and political data. Designed for integration with LibreChat and other MCP clients.
This server implements the complete Model Context Protocol specification, including:
- β
Core Protocol:
initialize,initialized,ping - β
Tools:
tools/list,tools/call(21 QuiverAPI endpoints) - β
Resources:
resources/list,resources/read(extensible) - β
Prompts:
prompts/list,prompts/get(extensible) - β
Utilities:
$/cancelRequest, health checks - β Capability Negotiation: Full feature discovery
- β LibreChat Compatible: Streamable HTTP transport
This MCP server provides access to 21 Tier 1 endpoints from QuiverAPI, including:
- Congress Trading: Live and historical trading data for U.S. Congress members
- Government Contracts: Recent and historical government contract data
- Lobbying Data: Live and historical lobbying spending information
- Bill Summaries: Recent bill summaries and legislation data
- Company & Fund Data: Lists of companies and SEC 13F fund information
- Off-Exchange Data: Daily off-exchange trading activity
- Docker and Docker Compose (recommended)
- OR Node.js 18+ (for manual installation)
- A valid QuiverAPI token (Get one here)
# Using GitHub Container Registry (recommended)
docker run -d \
--name quiver-mcp-server \
-p 3000:3000 \
-e QUIVER_API_TOKEN=your_token_here \
ghcr.io/usnavy13/quivermcp:latest-
Clone the repository
git clone https://github.com/usnavy13/quiverMCP.git cd quiverMCP -
Set up environment variables
cp .env.example .env # Edit .env and add your QuiverAPI token -
Start the server
docker-compose up -d
-
Verify it's running
curl http://localhost:3000/health
# Build the image locally
docker build -t quiver-mcp-server .
# Run the container
docker run -d \
--name quiver-mcp-server \
-p 3000:3000 \
-e QUIVER_API_TOKEN=your_token_here \
quiver-mcp-server-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env and add your QuiverAPI token -
Build and start
npm run build npm start
QUIVER_API_TOKEN: Your QuiverAPI authentication token (required)QUIVER_BASE_URL: Base URL for QuiverAPI (default: https://api.quiverquant.com)PORT: Server port (default: 3000)LIBRECHAT_ORIGIN: CORS origin for LibreChat (default: *)
QUIVER_API_TOKEN=your_quiver_api_token_here
QUIVER_BASE_URL=https://api.quiverquant.com
PORT=3000
LIBRECHAT_ORIGIN=http://localhost:3080Add the following to your LibreChat configuration file (librechat.yaml):
# MCP Server Configuration
mcpServers:
quiver:
name: "QuiverAPI"
description: "Access to QuiverAPI financial and political data"
url: "http://localhost:3000"
# For Docker deployment:
# url: "http://quiver-mcp-server:3000"
transport: "http"
endpoints:
- "/message"
tools:
- name: "financial_data"
description: "Access QuiverAPI financial data"If you're running LibreChat with Docker, add the MCP server to your docker-compose.yml:
version: '3.8'
services:
librechat:
# ... your LibreChat configuration
depends_on:
- quiver-mcp-server
environment:
- MCP_QUIVER_URL=http://quiver-mcp-server:3000
networks:
- librechat-network
quiver-mcp-server:
build:
context: ./quiverMCP
dockerfile: Dockerfile
container_name: quiver-mcp-server
environment:
- QUIVER_API_TOKEN=${QUIVER_API_TOKEN}
- QUIVER_BASE_URL=https://api.quiverquant.com
- PORT=3000
networks:
- librechat-network
restart: unless-stopped
networks:
librechat-network:
driver: bridgeOnce configured, you can use the QuiverAPI tools in your LibreChat conversations:
Show me recent Congress trading activity for AAPL
What are the latest government contracts awarded?
Get lobbying data for Microsoft
get_companies- Get list of companiesget_funds- Get fund information from SEC 13F data
get_recent_congress_trading- Recent Congress transactionsget_congress_holdings- Live Congress holdings dataget_historical_congress_trading- Historical Congress trading for a tickerget_recent_house_trading- Recent House transactionsget_recent_senate_trading- Recent Senate transactionsget_historical_house_trading- Historical House trading for a tickerget_historical_senate_trading- Historical Senate trading for a tickerget_bulk_congress_trading- Full history of Congress transactions
get_recent_gov_contracts- Recent government contractsget_recent_gov_contracts_all- All recently announced contractsget_historical_gov_contracts- Historical quarterly contracts for a tickerget_historical_gov_contracts_all- All historical contracts for a ticker
get_recent_lobbying- Recent lobbying spending instancesget_historical_lobbying- Historical lobbying data for a ticker
get_recent_bill_summaries- Recent bill summariesget_recent_legislation- Recent legislation data
get_live_off_exchange- Yesterday's off-exchange activityget_historical_off_exchange- Historical off-exchange activity for a tickerget_ticker_data- Comprehensive ticker data
curl http://localhost:3000/healthcurl http://localhost:3000/mcp# Test ping (health check)
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"ping"}'
# Test initialize (capability negotiation)
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":2,
"method":"initialize",
"params":{
"protocolVersion":"2024-11-05",
"capabilities":{"roots":{"listChanged":true}}
}
}'
# Test tools list
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/list"}'
# Test resources list
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":4,"method":"resources/list"}'
# Test prompts list
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":5,"method":"prompts/list"}'# Test QuiverAPI tool (requires valid token)
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":6,
"method":"tools/call",
"params": {
"name": "get_recent_congress_trading",
"arguments": {
"normalized": true
}
}
}'# HTTP server (for LibreChat)
npm run dev
# Stdio server (for Claude Desktop)
npm run dev:stdionpm run buildnpm run watchThis server supports two transport modes:
-
HTTP Mode (default): For LibreChat and web-based MCP clients
- Endpoint:
http://localhost:3000/message - Start with:
npm start
- Endpoint:
-
Stdio Mode: For Claude Desktop and CLI-based MCP clients
- Uses stdin/stdout communication
- Start with:
npm run start:stdio
docker logs quiver-mcp-server -fThe server includes health checks that monitor:
- Server responsiveness
- API token validity
- Tool availability
- Non-root user execution in Docker
- CORS protection for web access
- Input validation for all parameters
- Secure environment variable handling
-
Server won't start
- Check that
QUIVER_API_TOKENis set - Verify the token is valid
- Check port 3000 is available
- Check that
-
API calls failing
- Verify your QuiverAPI token has sufficient permissions
- Check network connectivity
- Review server logs for detailed errors
-
LibreChat integration issues
- Ensure the MCP server URL is correct in LibreChat config
- Check CORS settings if accessing from different origins
- Verify both services are on the same Docker network
# Check server status
curl http://localhost:3000/health
# View available tools
curl http://localhost:3000/mcp
# Check Docker logs
docker logs quiver-mcp-server
# Test tool manually
curl -X POST http://localhost:3000/message \
-H "Content-Type: application/json" \
-d '{"method": "tools/list"}'- Lightweight Alpine Linux base image
- Efficient Node.js runtime
- Connection pooling for API requests
- Health checks for reliability
Pre-built Docker images are automatically published to GitHub Container Registry on every release:
- Latest stable:
ghcr.io/usnavy13/quivermcp:latest - Specific version:
ghcr.io/usnavy13/quivermcp:v1.0.0 - Branch builds:
ghcr.io/usnavy13/quivermcp:main
latest- Latest stable releasemain- Latest from main branchv1.x.x- Specific version releasesv1.x- Major.minor releasesv1- Major releases
Images are built for:
linux/amd64(Intel/AMD 64-bit)linux/arm64(ARM 64-bit, including Apple Silicon)
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
- Push to
mainβ Triggers Docker build and publisheslatesttag - Create tag
v*β Triggers release build and GitHub release - Pull requests β Builds for testing (no publish)
MIT License - see the LICENSE file for details.
For issues related to:
- This MCP server: Check the logs and ensure your QuiverAPI token is valid
- QuiverAPI: Contact QuiverAPI support
- LibreChat: Check LibreChat documentation and community