<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gert Nygaard</title>
    <description>The latest articles on DEV Community by Gert Nygaard (@gertnygaard).</description>
    <link>https://dev.to/gertnygaard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4234009%2Fd2f3f34f-3dfc-45f6-a805-5688d3047372.png</url>
      <title>DEV Community: Gert Nygaard</title>
      <link>https://dev.to/gertnygaard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gertnygaard"/>
    <language>en</language>
    <item>
      <title>Give your AI assistant live crypto market data in 2 minutes (MCP, no API key)</title>
      <dc:creator>Gert Nygaard</dc:creator>
      <pubDate>Sun, 08 Nov 2026 18:58:24 +0000</pubDate>
      <link>https://dev.to/gertnygaard/give-your-ai-assistant-live-crypto-market-data-in-2-minutes-mcp-no-api-key-4ch4</link>
      <guid>https://dev.to/gertnygaard/give-your-ai-assistant-live-crypto-market-data-in-2-minutes-mcp-no-api-key-4ch4</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work with Everstrike, the exchange whose MCP server this uses. The server is free and read-only, and you don't need an account.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ask an AI assistant "what's the ETH funding rate right now?" and it will either guess or tell you it can't browse. The Model Context Protocol (MCP) fixes that: you give the assistant tools it can call, and it fetches the real answer.&lt;/p&gt;

&lt;p&gt;This post connects an MCP client to a public market-data server, then shows a few prompts that work well and two gotchas that will save you some debugging.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;The server at &lt;code&gt;https://mcp.everstrike.xyz/mcp&lt;/code&gt; exposes 10 read-only tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it returns&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_ticker&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Last, mark and index price, 24h change (up to 6 markets per call)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_pairs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Every market with tick size, lot size, leverage caps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_assets&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Assets with deposit and withdrawal status&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_depth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Order book for one market&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_trades&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Recent public trades&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_ohlcv&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Candles (15s to 7d)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_funding&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Funding-rate history for perps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Exchange health and maintenance windows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_globals&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Aggregate exchange stats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;everstrike_vault&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Perpetual vault state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No tool can place orders or read an account, so connecting it can't touch anyone's funds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: check it from the terminal
&lt;/h2&gt;

&lt;p&gt;The server speaks JSON-RPC over HTTP and is stateless, so a single request works with no handshake:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sX&lt;/span&gt; POST https://mcp.everstrike.xyz/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Accept: application/json, text/event-stream'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see the ten &lt;code&gt;everstrike_*&lt;/code&gt; tools. Note the &lt;code&gt;Accept&lt;/code&gt; header: it must list &lt;strong&gt;both&lt;/strong&gt; &lt;code&gt;application/json&lt;/code&gt; and &lt;code&gt;text/event-stream&lt;/code&gt;, or you get a 406.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: add it to your client
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cursor&lt;/strong&gt;: add this to &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (or the project's &lt;code&gt;.cursor/mcp.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"everstrike"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.everstrike.xyz/mcp"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http everstrike https://mcp.everstrike.xyz/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Claude Desktop&lt;/strong&gt;: Settings → Connectors → Add custom connector, and paste the URL.&lt;/p&gt;

&lt;p&gt;Restart the client and the tools appear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: ask it things
&lt;/h2&gt;

&lt;p&gt;Prompts that work well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"What are the mark price and funding rate for USD_BTC_PERP right now?"&lt;/li&gt;
&lt;li&gt;"Pull 1h candles for USD_ETH_PERP over the last day and describe the trend in two sentences."&lt;/li&gt;
&lt;li&gt;"Compare the order book depth on USD_BTC_PERP and USD_ETH_PERP. Which is thinner within 1% of mid?"&lt;/li&gt;
&lt;li&gt;"Has funding on USD_ETH_PERP been positive or negative over the last few hours?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The assistant picks the tool, calls it and answers from the data, and most clients show you the raw tool call so you can check it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotcha 1: market names
&lt;/h2&gt;

&lt;p&gt;Perpetuals are named quote-first: the BTC perp is &lt;code&gt;USD_BTC_PERP&lt;/code&gt;, not &lt;code&gt;BTC_USD_PERP&lt;/code&gt;. Spot markets are base-first (&lt;code&gt;USDT_USD&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;The server resolves friendly spellings like &lt;code&gt;XRP/USD&lt;/code&gt;, but only when they're unambiguous. &lt;code&gt;ETH/USD&lt;/code&gt; matches both a spot market and the perp, so the server asks for the exact key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"ETH/USD" matches more than one market: ETH_USD, USD_ETH_PERP. Use the exact key.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tip: tell the assistant "use exact market keys from everstrike_pairs", or name them yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotcha 2: timestamps are milliseconds
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;everstrike_ohlcv&lt;/code&gt; takes &lt;code&gt;start&lt;/code&gt; and &lt;code&gt;end&lt;/code&gt; in Unix &lt;strong&gt;milliseconds&lt;/strong&gt;. Send seconds and you're asking for candles from 1970, and you get an empty list without an error. If an assistant returns "no data", this is usually why.&lt;/p&gt;

&lt;p&gt;Also, candles default to &lt;strong&gt;mark price&lt;/strong&gt;, not last traded price. On quiet markets the last price can sit still for hours, so mark gives a more honest series. Pass &lt;code&gt;"price": "last"&lt;/code&gt; if you want trades.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits worth knowing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;10 requests per second per IP (bursts to 20), 16 concurrent connections.&lt;/li&gt;
&lt;li&gt;Responses are capped at 60,000 characters and truncated from the end. If a response says it was truncated, narrow the request (fewer markets, a smaller &lt;code&gt;limit&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to go from here
&lt;/h2&gt;

&lt;p&gt;Market data in your assistant is useful on its own: research, explaining funding, checking a level before you do anything. If you want to go further, Everstrike also lets you write a strategy as a plain-English prompt that an AI evaluates on a schedule, with every decision logged with its reasoning: &lt;a href="https://everstrike.io/?utm_source=devto&amp;amp;utm_medium=community&amp;amp;utm_campaign=mcp" rel="noopener noreferrer"&gt;https://everstrike.io/?utm_source=devto&amp;amp;utm_medium=community&amp;amp;utm_campaign=mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MCP docs: &lt;a href="https://docs.everstrike.xyz/ai/mcp.md" rel="noopener noreferrer"&gt;https://docs.everstrike.xyz/ai/mcp.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Derivatives trading carries a high risk of loss. Everstrike isn't available in the US, Canada, Denmark and other restricted regions. Nothing here is financial advice.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>vibetrading</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
