JTX Markets MCP Server
Enables read-only querying of JTX Markets account and market data, including balance, positions, orders, trades, funding history, and market summaries, through natural language in MCP-compatible clients.
README
@jtxmarkets/mcp-server
Model Context Protocol server for JTX Markets — query your account and market data from Claude Desktop (and other MCP-compatible clients) in plain English.
Phase 1 (this release): read-only. Positions / orders / trades / balance / funding / market data. Trade-placement tools land in Phase 2.
Quick start
1. Create a Read-scoped API key
- Sign in to staging-app.jtxmarkets.com (or the production dashboard once it's live)
- Go to
/account/api→ Additional API Keys → + Create API Key - Scope: Read — the MCP server can't submit orders. This is Phase 1.
- (Optional) Add your machine's public IP to the IP allowlist
- Copy the
api_keyandsecret— the secret is shown only once
2. Find your Client ID
Your engine client_id is on /account/overview under the "API Info" section, or you can copy it from your dashboard URL.
3. Add to Claude Desktop config
Open claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add an mcpServers.jtx-markets entry:
{
"mcpServers": {
"jtx-markets": {
"command": "npx",
"args": ["-y", "@jtxmarkets/mcp-server"],
"env": {
"JTX_MARKETS_API_KEY": "your-api-key-here",
"JTX_MARKETS_API_SECRET": "your-api-secret-here",
"JTX_MARKETS_CLIENT_ID": "11111111-1111-1111-1111-111111111111",
"JTX_MARKETS_ENV": "production"
}
}
}
}
4. Restart Claude Desktop
Open a new chat, click the tools icon, and you should see jtx-markets listed with a green dot.
Tools (Phase 1 — read-only)
| Tool | Purpose |
|---|---|
get_balance |
Balance / Available / Withdrawable / Locked / uPNL / rPNL with plain-English explanations of what each number means |
get_positions |
Open positions with entry, mark, uPNL, liquidation price |
get_orders |
Open (resting) orders — symbol, side, type, price, size, id |
get_trades |
Recent fills. Optional symbol filter + limit (default 25) |
get_funding_history |
Funding payments received or paid |
list_markets |
Every listed symbol with mark + 24h volume |
get_market_summary |
Mark / funding rate / next funding / open interest / 24h volume for one symbol |
Example prompts
- "How much can I withdraw right now?" — calls
get_balance, distinguishes Available from Withdrawable - "Show me my open ETH-PERP positions" — calls
get_positions - "Which of my open orders are furthest below the mark?" — combines
get_orders+get_market_summary - "Total funding received this month on BTC-PERP?" — calls
get_funding_historyand sums
Environment variables
| Name | Required | Default | Notes |
|---|---|---|---|
JTX_MARKETS_API_KEY |
✅ | — | Public API key from /account/api |
JTX_MARKETS_API_SECRET |
✅ | — | HMAC-SHA384 secret; shown once at key creation |
JTX_MARKETS_CLIENT_ID |
✅ | — | Engine client_id UUID |
JTX_MARKETS_ENV |
production |
production (default). staging will resolve once the staging engine host is provisioned. |
|
JTX_MARKETS_BASE_URL |
derived from JTX_MARKETS_ENV |
Override for self-host / testing |
Default is production because staging DNS has not yet been provisioned. Once a staging-engine.jtxmarkets.com host exists you can flip to staging first to test against non-live money.
Safety notes
- This is Phase 1. It cannot place, modify, or cancel orders. It cannot withdraw. It literally does not have those endpoints wired up.
- API keys are scoped. The recommended
Readscope is enforced by the engine on every request (perp-engine auth middleware). If a key is compromised, aReadkey still can't drain funds — worst case is disclosure of account state. - Withdrawals never touch MCP. They require email verification code + TOTP + admin approval on the dashboard. That flow does not translate to natural language and never will.
- Do not share a chat containing active JTX Markets tool calls — it exposes account state to whoever sees the transcript.
Development
npm install
npm test # 34 tests, all TDD-first
npm run build # emits dist/
License
MIT © JTX Markets — markets@jtxmarkets.com
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.