Skip to main content
Glama
solangii

Upbit MCP Server

by solangii

Upbit MCP Server

A server implementation for Upbit Cryptocurrency Exchange OpenAPI using the Model Context Protocol (MCP). This project provides tools to interact with Upbit exchange services, such as retrieving market data (quotes, orderbooks, trade history, chart data), account information, creating and canceling orders, managing deposits/withdrawals, and performing technical analysis.

Features

  • Market data retrieval (ticker, orderbook, trades, candle data)

  • Account information (balance, order history)

  • Order creation and cancellation

  • Deposit and withdrawal functions

  • Technical analysis tools

Related MCP server: MCP Bitget Trading Server

Prerequisites

Before you begin, you need to get your Upbit API keys:

  1. Create an account on Upbit if you don't already have one

  2. Go to the Upbit Developer Center

  3. Create a new API key

  4. Make sure to set appropriate permissions (read, trade, withdraw as needed)

  5. Store your API keys(UPBIT_ACCESS_KEY, UPBIT_SECRET_KEY) in the .env file (see Installation section)

Installation

  1. Clone the repository:

    git clone https://github.com/solangii/upbit-mcp-server.git
    cd upbit-mcp-server
  2. Install dependencies:

    cd upbit-mcp-server
    uv sync

    If you don't have uv installed yet, you can install it as follows:

    Using uv provides faster installation and more reliable dependency resolution.

    # Install uv
    curl -Ls https://astral.sh/uv/install.sh | sh
    
     # Add uv to your PATH
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc  # or bashrc, depending on your shell
  3. Set up environment variables: Create a .env file in the project root and add your Upbit API keys:

    UPBIT_ACCESS_KEY=your_access_key_here
    UPBIT_SECRET_KEY=your_secret_key_here

Usage

Install in Claude Desktop

Option 1: Using Claude config file (Direct integration)

You can add the MCP server directly to Claude's configuration file:

  1. Install Claude Desktop

  2. Add the following to your Claude Desktop configuration:

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

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  3. Add the following configuration (adjust paths as needed):

    {
      "mcpServers": {
        "upbit-mcp-server": {
          "command": "/full/path/to/upbit-mcp-server/.venv/bin/python",
          "args": [
            "/full/path/to/upbit-mcp-server/main.py"
          ]
        }
      }
    }
  4. Restart Claude to load the new configuration.

Option 2: Using fastmcp

fastmcp install main.py --name "Upbit API"

Run Directly with Python

uv run python main.py

Development Mode (Web Interface)

fastmcp dev main.py

Caution

  • This server can process real trades, so use it carefully.

  • Keep your API keys secure and never commit them to public repositories.

License

MIT

Available Tools

10 tools
cancel_orderC
업비트에서 주문을 취소합니다.

Args:
    uuid (str): 취소할 주문의 UUID
    
Returns:
    dict: 취소 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states the tool cancels an order but doesn't disclose critical traits: whether cancellation is immediate or queued, if it requires specific permissions, potential side effects (e.g., partial fills), rate limits, or error responses. The return value is vaguely described as '취소 결과' (cancellation result) without format details.

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 appropriately concise with three sentences: purpose statement, parameter explanation, and return value note. Each sentence adds value, and the structure with 'Args' and 'Returns' sections is clear. However, the Korean-only text might limit accessibility in multilingual contexts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool (order cancellation) with no annotations and no output schema, the description is insufficient. It lacks details on behavioral implications (e.g., irreversible action, confirmation requirements), error handling, response format, and integration with sibling tools like 'get_order' to verify cancellation. The agent has inadequate context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explicitly documents the single parameter 'uuid' as '취소할 주문의 UUID' (UUID of the order to cancel), adding meaningful context beyond the schema's 0% coverage. This fully compensates for the schema gap for this one parameter, establishing a clear baseline. No additional parameter insights are needed since there's only one parameter.

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 action ('cancel_order') and target resource ('주문' - order) with specific context ('업비트에서' - on Upbit). It distinguishes from siblings like 'create_order' by specifying cancellation rather than creation. However, it doesn't explicitly differentiate from other potential order modifications beyond the name.

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 prerequisites (e.g., needing an existing order UUID), error conditions, or when other tools like 'get_order' might be needed first. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_orderA
업비트에 주문을 생성합니다.

Args:
    market (str): 마켓 코드 (예: KRW-BTC)
    side (str): 주문 종류 - bid(매수) 또는 ask(매도)
    ord_type (str): 주문 타입 - limit(지정가), price(시장가 매수), market(시장가 매도)
    volume (str, optional): 주문량 (지정가, 시장가 매도 필수)
    price (str, optional): 주문 가격 (지정가 필수, 시장가 매수 필수)
    
Returns:
    dict: 주문 결과
ParametersJSON Schema
NameRequiredDescriptionDefault
marketYes
sideYes
ord_typeYes
volumeNo
priceNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it correctly identifies this as a creation/mutation operation, it provides minimal information about what happens when invoked - no details about authentication requirements, rate limits, error handling, or what constitutes a successful order creation. The return value description ('dict: 주문 결과') is extremely vague.

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 well-structured with clear sections (Args, Returns) and efficiently conveys necessary information. While slightly longer than minimal, every sentence adds value given the complex parameter dependencies. The Korean language doesn't affect conciseness scoring as it's appropriately translated and structured.

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?

For a 5-parameter order creation tool with no annotations and no output schema, the description provides adequate but incomplete coverage. The parameter documentation is excellent, but there's insufficient information about the tool's behavior, return format, error conditions, and integration context. The agent would need additional context to use this tool effectively in real trading scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given 0% schema description coverage, the description provides excellent parameter semantics. It explains each parameter's purpose, provides examples (KRW-BTC), clarifies enum meanings (bid=매수, ask=매도), and specifies conditional requirements (which parameters are mandatory for which order types). This fully compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('create order') and target resource ('Upbit'), distinguishing it from sibling tools like cancel_order or get_orders. It uses a precise verb ('create') and identifies the exact platform where the operation occurs.

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 like cancel_order or get_order. While the purpose is clear, there's no mention of prerequisites, error conditions, or contextual factors that would help an agent decide when this is the appropriate tool to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountsB
업비트 계정의 잔고 정보를 조회합니다.

Returns:
    list[dict]: 보유 중인 자산 목록
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 balance information, implying a read-only operation, but doesn't specify any behavioral traits like authentication requirements, rate limits, error handling, or whether it returns real-time or cached data. For a tool with zero annotation coverage, this is a significant gap in transparency.

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 concise and well-structured, with two sentences: one stating the purpose and another describing the return value. It's front-loaded with the core functionality and avoids unnecessary details. However, it could be slightly improved by integrating the return information more seamlessly, but overall it's efficient with minimal waste.

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 (0 parameters, no output schema, no annotations), the description is adequate but has clear gaps. It explains what the tool does and the return type, but without annotations or output schema, it lacks details on behavioral aspects like authentication or error handling. This makes it minimally viable but incomplete for optimal agent use.

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 tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to add parameter semantics, as there are no parameters to document. This meets the baseline of 4 for tools with no parameters, as it appropriately doesn't waste text on non-existent inputs.

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: '업비트 계정의 잔고 정보를 조회합니다' (Retrieves balance information for Upbit accounts). It specifies the verb '조회합니다' (retrieves) and the resource '잔고 정보' (balance information). However, it doesn't explicitly differentiate from sibling tools like 'get_deposits_withdrawals' or 'get_orders', which might also retrieve account-related data, so it doesn't reach a score of 5.

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 any prerequisites, context for usage, or comparisons to sibling tools such as 'get_deposits_withdrawals' or 'get_orders', which could be relevant for account-related queries. This lack of usage instructions limits its effectiveness for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deposits_withdrawalsB
업비트 계정의 입출금 내역을 조회합니다.

Args:
    currency (str, optional): 통화 코드 (예: BTC)
    txid (str, optional): 거래 ID
    transaction_type (str): 거래 유형 - deposit(입금) 또는 withdraw(출금)
    page (int): 페이지 번호
    limit (int): 페이지당 결과 개수 (최대 100)
    
Returns:
    list[dict]: 입출금 내역
ParametersJSON Schema
NameRequiredDescriptionDefault
currencyNo
txidNo
transaction_typeNodeposit
pageNo
limitNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a retrieval operation ('조회합니다'), implying it's read-only, but doesn't confirm safety aspects like non-destructiveness. It mentions pagination (page/limit) but doesn't describe rate limits, authentication needs, error conditions, or what happens if parameters are invalid. For a financial data tool with zero annotation coverage, this leaves significant behavioral gaps.

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 well-structured and appropriately sized. It starts with a clear purpose statement, followed by an 'Args' section with bullet-like parameter explanations, and ends with a 'Returns' section. Every sentence adds value—no fluff or repetition. However, the mix of Korean and English might slightly hinder readability for non-Korean agents, but the structure is efficient.

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 moderate complexity (5 parameters, financial data retrieval) and no annotations or output schema, the description is partially complete. It covers parameters well but lacks behavioral context (e.g., safety, errors, auth). The return value is vaguely described as 'list[dict]: 입출금 내역' without detailing structure or fields. For a tool with no structured output schema, more return value specifics would improve completeness.

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 substantial meaning beyond the input schema, which has 0% schema description coverage. It explains all 5 parameters in Korean with examples (e.g., '통화 코드 (예: BTC)') and clarifies transaction_type options (deposit/withdraw). It also specifies the limit constraint ('최대 100'/maximum 100). This effectively compensates for the schema's lack of descriptions, though it doesn't detail default behaviors for optional parameters beyond what the schema shows.

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: '업비트 계정의 입출금 내역을 조회합니다' (Retrieve deposit/withdrawal history for Upbit account). It specifies the verb (조회/retrieve) and resource (입출금 내역/deposit-withdrawal history), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like get_accounts or get_orders, which might also retrieve financial data.

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 sibling tools like get_accounts (which might show balances) or get_orders (which might show trade history), nor does it specify prerequisites (e.g., authentication requirements) or contextual constraints. The usage is implied by the purpose statement but lacks explicit when/when-not instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_summaryB
주요 암호화폐 시장의 요약 정보를 제공합니다.

Returns:
    dict: 주요 암호화폐 시장 요약 정보
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only states what the tool returns ('주요 암호화폐 시장 요약 정보') without describing what that summary contains, how current the data is, whether it's cached or real-time, rate limits, authentication requirements, or error conditions. For a market data tool with zero annotation coverage, this is insufficient behavioral context.

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 appropriately concise with two sentences that directly state the purpose and return type. The first sentence clearly states what the tool does, and the second specifies the return format. There's no unnecessary information or repetition. However, the Korean-to-English translation in the Returns section creates minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of market data tools and the absence of both annotations and output schema, the description is incomplete. It doesn't explain what 'summary information' includes (e.g., market caps, volumes, top gainers/losers, overall trends), the scope of 'major cryptocurrencies,' data freshness, or format details. For a tool that presumably returns structured market data, more context is needed about what the agent can expect.

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 tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the absence of parameters. The description appropriately doesn't discuss parameters since none exist. The baseline for 0 parameters with full schema coverage is 4, as there's nothing to compensate for and the description doesn't incorrectly mention parameters.

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: '주요 암호화폐 시장의 요약 정보를 제공합니다' (Provides summary information of major cryptocurrency markets). It specifies the verb '제공합니다' (provides) and the resource '주요 암호화폐 시장 요약 정보' (major cryptocurrency market summary information). However, it doesn't explicitly differentiate from sibling tools like get_ticker or get_orderbook, which also provide market-related information.

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 what makes this 'summary' different from other market data tools like get_ticker (single asset price), get_orderbook (depth data), or get_trades (recent transactions). There's no context about when this aggregated view is preferable to more detailed tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderC
업비트에서 특정 주문의 정보를 조회합니다.

Args:
    uuid (str, optional): 주문 UUID
    identifier (str, optional): 조회용 사용자 지정 값
    
Returns:
    dict: 주문 정보
ParametersJSON Schema
NameRequiredDescriptionDefault
uuidNo
identifierNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a retrieval operation ('조회합니다'), which implies read-only behavior, but doesn't mention authentication requirements, rate limits, error conditions, or what happens when parameters are omitted. The description adds minimal behavioral context beyond the basic operation.

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 efficiently structured with a clear purpose statement followed by Args and Returns sections. It's appropriately sized for a simple lookup tool, though the parameter documentation could be more detailed given the lack of schema coverage. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a financial API tool with no annotations, no output schema, and 0% schema description coverage, the description is insufficient. It doesn't explain the return format beyond 'dict: 주문 정보' (dictionary: order information), doesn't mention authentication requirements for the Upbit platform, and provides minimal guidance on parameter usage. Given the complexity of financial APIs, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides parameter information in the Args section, explaining that 'uuid' is the order UUID and 'identifier' is a user-defined value for lookup. However, with 0% schema description coverage, the schema provides no parameter documentation. The description adds meaningful semantics but doesn't fully compensate for the complete lack of schema documentation, especially regarding the relationship between the two optional parameters.

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: '업비트에서 특정 주문의 정보를 조회합니다' (Retrieves information about a specific order from Upbit). It specifies the verb ('조회합니다' - retrieves/checks) and resource ('특정 주문' - specific order), but doesn't explicitly differentiate from sibling tools like 'get_orders' (plural) which might retrieve multiple orders.

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 sibling tools like 'get_orders' (for multiple orders) or 'cancel_order' (for order management), nor does it specify prerequisites or appropriate contexts for using this specific order lookup tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderbookC

Get orderbook snapshot for a given symbol

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'snapshot,' implying a read-only operation, but doesn't specify if it's real-time or cached, rate limits, authentication needs, or what the output format looks like. This leaves significant gaps for an agent to understand how to handle the tool's 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 a single, efficient sentence that directly states the tool's function without any wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of market data tools, no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on output format, behavioral traits like latency or limits, and differentiation from siblings, making it inadequate for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/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 for the undocumented parameter. It adds meaning by specifying that the 'symbol' parameter is used to identify the market for the orderbook, but doesn't explain format (e.g., 'BTC/USD'), constraints, or examples, leaving the agent with incomplete information.

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 action ('Get orderbook snapshot') and resource ('for a given symbol'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_ticker' or 'get_market_summary' that also provide market data, leaving some ambiguity about when this specific tool is preferred.

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 like 'get_ticker' or 'get_market_summary' for market data, nor does it mention prerequisites or exclusions. It only states what the tool does, not when it should be selected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ordersA
업비트에서 주문 내역을 조회합니다.

Args:
    market (str, optional): 마켓 코드 (예: KRW-BTC)
    state (str): 주문 상태 - wait(대기), done(완료), cancel(취소)
    page (int): 페이지 번호
    limit (int): 페이지당 주문 개수 (최대 100)
    
Returns:
    list[dict]: 주문 내역
ParametersJSON Schema
NameRequiredDescriptionDefault
marketNo
stateNowait
pageNo
limitNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only operation ('조회합니다' - retrieve) and mentions pagination via 'page' and 'limit', which adds useful context. However, it lacks details on authentication requirements, rate limits, error handling, or response structure beyond 'list[dict]', leaving gaps for a tool with 4 parameters.

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 well-structured and appropriately sized. It starts with a clear purpose statement, followed by organized sections for 'Args' and 'Returns', with bullet-like formatting. Every sentence adds value, though the Korean-only text might limit accessibility for non-Korean agents, slightly reducing efficiency.

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 no annotations and no output schema, the description is moderately complete. It covers the purpose and parameters well but lacks details on authentication, error cases, or the structure of the returned 'list[dict]'. For a tool with 4 parameters and no structured safety hints, more behavioral context would improve completeness, though it meets a baseline for a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant semantic value beyond the input schema, which has 0% description coverage. It explains each parameter in Korean with examples ('예: KRW-BTC'), clarifies 'state' options (wait, done, cancel), and specifies constraints like '최대 100' (maximum 100) for 'limit'. This fully compensates for the schema's lack of descriptions, making parameters clear and actionable.

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: '업비트에서 주문 내역을 조회합니다' (Retrieves order history from Upbit). It specifies the verb '조회합니다' (retrieve/query) and resource '주문 내역' (order history), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_order' (singular) or 'get_trades', leaving some ambiguity about scope.

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 sibling tools like 'get_order' (for a single order) or 'get_trades' (for trade history), nor does it specify prerequisites or contexts where this tool is preferred. The agent must infer usage from the tool name and parameters alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tickerC

Get the latest ticker data from Upbit

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' data, implying a read-only operation, but doesn't cover critical aspects like rate limits, authentication needs, response format, or potential errors. This is a significant gap for a tool with zero annotation coverage.

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 a single, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of financial data retrieval, no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on behavior, output, and parameter meaning, making it inadequate for effective tool use in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description adds no information about the 'symbol' parameter beyond what the schema provides (a required string). It doesn't explain what 'symbol' represents (e.g., a trading pair like 'BTC-KRW'), format expectations, or examples, failing to compensate for the low coverage.

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 verb ('Get') and resource ('latest ticker data from Upbit'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'get_market_summary' or 'get_orderbook', which likely provide different financial data, so it misses full sibling differentiation.

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 what 'ticker data' includes compared to other data retrieval tools in the sibling list, such as 'get_market_summary' or 'get_orderbook', leaving the agent without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tradesC

Get recent trade ticks for a symbol

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only states basic functionality. It doesn't disclose behavioral traits like rate limits, authentication needs, pagination, or what 'recent' means (e.g., time window). This leaves significant gaps for a tool that likely returns time-sensitive data.

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 a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (likely returning time-series trade data), no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on return format (e.g., list of ticks with timestamps), error handling, or prerequisites, making it insufficient for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/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 but adds minimal meaning. It mentions 'symbol' as the parameter but doesn't explain format (e.g., trading pair like BTC-USD) or constraints. This is inadequate for a single required parameter with no schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get recent trade ticks for a symbol' clearly states the verb ('Get') and resource ('recent trade ticks'), but it's vague about scope (e.g., time range, limit) and doesn't distinguish from siblings like get_orderbook or get_ticker. It avoids tautology but lacks specificity.

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?

No guidance is provided on when to use this tool versus alternatives such as get_orderbook (for market depth) or get_ticker (for price summaries). The description implies usage for trade history but offers no explicit context or exclusions.

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. Dates show when Glama detected each change.

  1. 10 tool updates
    • First observedcancel_order
    • First observedcreate_order
    • First observedget_accounts
    • First observedget_deposits_withdrawals
    • First observedget_market_summary
    • First observedget_order
    • First observedget_orderbook
    • First observedget_orders
    • First observedget_ticker
    • First observedget_trades

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific resources and actions in the Upbit cryptocurrency exchange domain. For example, create_order, cancel_order, get_order, and get_orders handle different aspects of order management without overlap, while get_accounts, get_deposits_withdrawals, get_market_summary, get_orderbook, get_ticker, and get_trades each focus on unique data retrieval functions. No tools appear to do the same thing, making selection unambiguous for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_accounts, create_order, and cancel_order. This predictable naming convention enhances readability and usability, with no deviations or mixed styles observed across the toolset. The consistency supports easy identification and reduces cognitive load for agents.

Tool Count5/5

With 10 tools, the server is well-scoped for its purpose of interacting with the Upbit cryptocurrency exchange. Each tool earns its place by covering essential operations like account management, order handling, and market data retrieval. This count aligns with typical server sizes (3-15 tools) and avoids being too thin or heavy, providing comprehensive functionality without unnecessary complexity.

Completeness4/5

The tool surface offers near-complete coverage for the cryptocurrency exchange domain, including CRUD operations for orders (create, get, cancel, list), account and transaction management, and market data access. Minor gaps exist, such as the lack of tools for modifying orders or handling advanced trading features like stop-loss orders, but agents can work around these with the available tools. Overall, the set supports core workflows effectively.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables interaction with the Upbit cryptocurrency exchange through public market data tools and optional private trading tools. Supports getting ticker data, orderbooks, trades, account information, and executing trading operations through natural language.
    19
    14
    2
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to interact with Bitget cryptocurrency exchange for spot and futures trading. Supports real-time market data, order management, account balances, leverage control, and position tracking with demo trading capabilities.
    17
    5
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables interaction with the Bithumb cryptocurrency exchange API to fetch market data, manage account balances, and execute trading operations including limit orders, market orders, and withdrawals.
    19
    20
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides programmatic access to the Binance.US cryptocurrency exchange, enabling users to manage spot trading, wallet operations, and market data via natural language. It supports a wide range of features including order management, staking, sub-account transfers, and account history tracking.
    93
    26
    24
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/solangii/upbit-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server