Skip to main content
Glama
whitmanca

Crypto Price MCP Server

by whitmanca

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

  1. Clone the repository:

git clone <your-repo-url>
cd <your-repo-name>
  1. Install dependencies with uv:

uv sync

Testing with MCP Inspector

The MCP Inspector allows you to test your server locally before integrating with Claude.

  1. Install the MCP Inspector:

npm install -g @modelcontextprotocol/inspector
  1. Run your server with the inspector:

npx @modelcontextprotocol/inspector uv run server.py
  1. Open the web interface that appears (usually http://localhost:5173)

  2. Test the tools:

    • Try get_crypto_price_by_name with coin_name: "Bitcoin"

    • Try get_crypto_price_by_symbol with coin_symbol: "BTC"

Claude Desktop Integration

1. Find Your Config File

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %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.py directly 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 tools
get_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)

ParametersJSON Schema
NameRequiredDescriptionDefault
coin_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
coin_symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 2 tool updates
    • First observedget_crypto_price_by_name
    • First observedget_crypto_price_by_symbol

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation2/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness2/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A 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.
    12
    11
    16
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A 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 v3
    3
    23
    1
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A 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.
    50
    5
    -