Crypto Price MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Crypto Price MCP ServerWhat's the current price of Bitcoin?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server
A Model Context Protocol server that provides crypto price fetching capabilities. This server enables LLMs to retrieve and process the latest price for any coin by its name or symbol. This server was created for demo and practice purposes only and has limited capabilities.
Rate Limits: This server utilizes CoinGecko's free Demo API plan which has a rate limit of approximately 30 calls per minute.
Available Tools
get_crypto_price_by_name- Fetches the current price for a coin by coin name.coin_name(string, required): The name of the coin (e.g. Bitcoin)
get_crypto_price_by_symbol- Fetches the current price for a coin by coin symbol.coin_symbol(string, required): The symbol of the coin (e.g. BTC)
Related MCP server: Coin MCP Server
Setup
Prerequisites
Python 3.8+
uv package manager
Installation
Clone the repository:
git clone <your-repo-url>
cd <your-repo-name>Install dependencies with uv:
uv syncTesting with MCP Inspector
The MCP Inspector allows you to test your server locally before integrating with Claude.
Install the MCP Inspector:
npm install -g @modelcontextprotocol/inspectorRun your server with the inspector:
npx @modelcontextprotocol/inspector uv run server.pyOpen the web interface that appears (usually
http://localhost:5173)Test the tools:
Try
get_crypto_price_by_namewithcoin_name: "Bitcoin"Try
get_crypto_price_by_symbolwithcoin_symbol: "BTC"
Claude Desktop Integration
1. Find Your Config File
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
2. Add Server Configuration
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"crypto-price-server": {
"command": "uv",
"args": ["run", "/absolute/path/to/your/server.py"],
"cwd": "/absolute/path/to/your/project/directory"
}
}
}Replace the paths with your actual project paths.
3. Restart Claude Desktop
Close and reopen Claude Desktop completely.
4. Test in Claude
Ask Claude something like:
"What's the current price of Bitcoin?"
"Can you get the price of ETH using the crypto tools?"
"Use the crypto price tool to check the price of Solana"
Troubleshooting
Server won't start:
Make sure you're in the project directory
Try
uv run server.pydirectly to see error messages
Claude can't find the server:
Double-check the absolute paths in your config
Make sure there are no typos in the JSON
Restart Claude Desktop after making changes
Tools return errors:
Check your internet connection
You may have hit the CoinGecko rate limit (wait a minute and try again)
Available Tools
2 toolsget_crypto_price_by_nameB
Get latest price for a coin by its name
Args: coin_name: str = The name of the coin (e.g. Bitcoin)
| Name | Required | Description | Default |
|---|---|---|---|
| coin_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves 'latest price' but does not specify data sources, update frequency, rate limits, error handling (e.g., invalid coin names), or authentication needs. For a read operation with zero annotation coverage, this leaves significant gaps in understanding tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main purpose in the first sentence. The Args section is structured but could be more integrated. It avoids redundancy, though the example in the parameter description is helpful and not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which likely defines the return structure), the description is minimally adequate. However, with no annotations and incomplete behavioral details, it lacks guidance on usage versus siblings and operational constraints, making it incomplete for optimal agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful context: 'coin_name: str = The name of the coin (e.g. Bitcoin).' This clarifies the parameter's purpose and provides an example, which is valuable beyond the schema's basic type definition. However, it does not detail constraints like case sensitivity or supported coin names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get latest price for a coin by its name.' It specifies the verb ('Get'), resource ('latest price'), and key constraint ('by its name'). However, it does not explicitly differentiate from its sibling tool 'get_crypto_price_by_symbol' in the description text itself, though the naming implies a distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its sibling 'get_crypto_price_by_symbol.' It mentions the parameter 'coin_name' but does not explain when to prefer name-based lookup over symbol-based lookup, nor does it address prerequisites, error cases, or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crypto_price_by_symbolB
Get latest price for a coin by its symbol
Args: coin_symbol: str = The symbol of the coin (e.g. BTC)
| Name | Required | Description | Default |
|---|---|---|---|
| coin_symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool gets the 'latest price,' implying a read-only operation, but doesn't cover critical aspects like data freshness (e.g., real-time vs. delayed), rate limits, error handling for invalid symbols, or authentication needs. For a tool with no annotations, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured. The first sentence clearly states the purpose, and the 'Args' section efficiently documents the parameter with an example. Every sentence adds value without redundancy, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which likely handles return values), the description is minimally adequate. However, it lacks details on behavioral aspects like rate limits or error cases, and it doesn't guide usage relative to siblings. With no annotations, it should provide more context to be fully complete for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds valuable semantics beyond the input schema, which has 0% coverage. It explains that 'coin_symbol' is a string representing the coin symbol (e.g., BTC), providing a concrete example that clarifies usage. Since the schema lacks descriptions, this compensates well, though it doesn't detail constraints like valid symbol formats or case sensitivity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get latest price for a coin by its symbol.' It specifies the verb ('Get'), resource ('latest price'), and method ('by its symbol'), making it easy to understand. However, it doesn't explicitly differentiate from its sibling 'get_crypto_price_by_name' (e.g., by noting that this uses symbols like BTC vs. names like Bitcoin), which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tool 'get_crypto_price_by_name' or explain scenarios where using a symbol is preferred over a name (e.g., for brevity or standard ticker formats). Without such context, users might struggle to choose between tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
get_crypto_price_by_name - First observed
get_crypto_price_by_symbol
TDQS
Scored across 2 tools
The two tools have overlapping purposes—both retrieve cryptocurrency prices—with only the input parameter (name vs. symbol) differing. This creates ambiguity, as an agent might struggle to choose between them without clear guidance on which identifier to use. While descriptions specify the parameter difference, the core functionality is identical, leading to potential misselection.
Tool names follow a consistent verb_noun_by_parameter pattern (get_crypto_price_by_name and get_crypto_price_by_symbol), with clear and predictable structure. Both use snake_case and the same verb ('get'), making them easily readable and aligned without any deviations.
With only 2 tools, the server feels under-scoped for a cryptocurrency price domain, as it lacks essential operations like historical data, price comparisons, or multi-coin queries. While the tools cover basic price retrieval, the count is too low to support robust agent workflows, making it borderline inadequate for typical use cases.
The tool set is severely incomplete for a crypto price server, missing critical functionalities such as historical price data, market cap retrieval, volume information, or support for multiple coins in one query. Agents will face dead ends when trying to perform common tasks beyond simple single-coin price lookups, leading to potential failures in broader scenarios.
Maintenance
Related MCP Connectors
Unlock the power of real-time cryptocurrency data with our Crypto Price Insights MCP server.
Live and historical cryptocurrency prices via CoinGecko free API.
CoinGecko MCP — wraps CoinGecko free API (no auth required)
MCP server giving AI agents one-connection access to crypto & DeFi data: DeFi protocol TVL, stableco
Related MCP Servers
- AlicenseBqualityFmaintenanceA Model Context Protocol server that provides read-only access to Bybit's cryptocurrency exchange API, allowing users to query real-time cryptocurrency data using natural language.121116MIT
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that provides access to CoinMarketCap's cryptocurrency data, enabling AI applications to retrieve cryptocurrency listings, quotes, and detailed information.36-
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) server that provides comprehensive cryptocurrency analysis using the CoinCap API. This server offers real-time price data, market analysis, and historical trends through an easy-to-use interface. Updated to use Coin Cap API v33231MIT
- FlicenseBqualityDmaintenanceA Model Context Protocol server that connects Gemini CLI with CoinGecko's API, enabling users to access 46 cryptocurrency data tools including price tracking, market trends, and NFT information through terminal commands.505-