Finance 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., "@Finance MCP Servershow me Bitcoin price and USD/KRW exchange rate"
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.
Finance MCP Server - 실시간 금융 정보 MCP 서버
MCP(Model Context Protocol)를 활용한 실시간 금융 정보 제공 서버입니다.
MCP란?
**Model Context Protocol (MCP)**는 AI 애플리케이션이 외부 데이터 소스 및 도구와 표준화된 방법으로 통신할 수 있게 하는 오픈 프로토콜입니다.
MCP 아키텍처
┌─────────────────┐ ┌─────────────────┐
│ MCP Client │ │ MCP Server │
│ (Claude Code) │ ◄─────► │ (이 프로젝트) │
│ │ JSON- │ │
│ │ RPC │ - Resources │
│ │ │ - Tools │
│ │ │ - Prompts │
└─────────────────┘ └─────────────────┘Related MCP server: currency-exchange-mcp
제공하는 금융 정보
실시간 데이터:
💱 환율: USD/KRW (달러/원), JPY/KRW (엔/원)
₿ 비트코인: 실시간 BTC 가격 (KRW, USD)
🥇 금시세: 3.75그램 기준 금 가격
📈 S&P 500: 미국 주요 지수
데이터 소스:
환율: Open Exchange Rates API
암호화폐/금: CoinGecko API
S&P 500: Yahoo Finance
이 서버가 제공하는 기능
1. Resources (리소스)
finance://USD/KRW- 달러/원 환율finance://JPY/KRW- 엔/원 환율finance://BTC- 비트코인 가격finance://GOLD- 금 시세finance://SP500- S&P 500 지수
2. Tools (도구)
get_exchange_rate- 특정 환율 조회get_bitcoin_price- 비트코인 가격 조회get_gold_price- 금 시세 조회get_sp500- S&P 500 지수 조회get_all_prices- 모든 금융 정보 한번에 조회
설치 및 실행
1. 의존성 설치
npm install2. 빌드
npm run build3. Claude Desktop에 MCP 서버 등록
~/Library/Application Support/Claude/claude_desktop_config.json 파일을 편집:
{
"mcpServers": {
"finance": {
"command": "node",
"args": ["/Users/jongunpark/PracticeDev/testMCP/build/index.js"]
}
}
}중요: 경로를 실제 프로젝트의 절대 경로로 변경하세요!
4. Claude Desktop 재시작
Claude Desktop을 재시작하면 금융 정보 MCP 서버가 연결됩니다.
사용 예시
Claude Desktop이나 Claude Code에서 다음과 같이 사용할 수 있습니다:
"현재 달러 환율 알려줘"
→ get_exchange_rate 도구 사용
"비트코인 가격은?"
→ get_bitcoin_price 도구 사용
"금시세 확인해줘"
→ get_gold_price 도구 사용
"모든 금융 정보 보여줘"
→ get_all_prices 도구 사용코드 구조 설명
핵심 개념
실시간 데이터 fetching
// 외부 API에서 실시간 데이터 가져오기 async function getExchangeRates() { const response = await fetch('https://open.er-api.com/v6/latest/USD'); const data = await response.json(); // ... }MCP Tools 제공
server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "get_bitcoin_price", description: "실시간 비트코인 가격을 가져옵니다", inputSchema: { /* ... */ } }, // ... ] }; });Tool 실행
server.setRequestHandler(CallToolRequestSchema, async (request) => { switch (request.params.name) { case "get_bitcoin_price": // 비트코인 가격 조회 및 반환 break; // ... } });
API 제한 사항
무료 API 사용:
환율 API: 월 1,500 요청 제한 (무료 티어)
CoinGecko: 분당 10-50 요청 제한
Yahoo Finance: 비공식 API, 제한 가능성 있음
권장사항:
프로덕션 환경에서는 유료 API 사용 권장
필요시 캐싱 로직 추가
Rate limiting 구현 고려
확장 아이디어
이 MCP 서버를 바탕으로 다음과 같이 확장할 수 있습니다:
더 많은 환율 쌍 추가 (EUR/KRW, CNY/KRW 등)
다른 암호화폐 추가 (Ethereum, Ripple 등)
한국 주식 시세 (KOSPI, KOSDAQ)
원자재 시세 (은, 구리, 원유 등)
과거 데이터 조회 및 차트 생성
알림 기능 (가격 변동 알림)
트러블슈팅
API 호출 실패 시:
인터넷 연결 확인
API 서비스 상태 확인
Rate limit 초과 여부 확인
MCP 서버 연결 안될 때:
빌드가 성공했는지 확인 (
npm run build)설정 파일의 경로가 정확한지 확인
Claude Desktop 완전히 재시작
로그 확인:
~/Library/Logs/Claude/mcp*.log
참고 자료
라이선스
MIT License
Available Tools
5 toolsget_all_pricesA
모든 금융 정보를 한번에 가져옵니다 (환율, 비트코인, 금, S&P500)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 that all financial info is returned but does not describe the response structure, timing, or any potential limitations. For a simple read-only aggregation, this is moderately transparent but lacks detail.
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?
A single, concise sentence that is front-loaded with the primary action and includes parenthetical detail for the exact data types. Every word earns its place, with no unnecessary filler.
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?
For a tool with no parameters, no output schema, and no annotations, the description provides sufficient context: it names the specific financial instruments covered. While it doesn't describe return format or usage scenarios, the simplicity of the tool means this is mostly complete for an AI agent.
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 tool has zero parameters, so the input schema is trivially complete. The description does not need to add parameter semantics, and with no parameters, the baseline of 4 is appropriate.
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 that this tool fetches all financial information at once, explicitly listing the components (exchange rate, bitcoin, gold, S&P500). This distinguishes it from sibling tools that fetch individual data points, making its purpose unambiguous.
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 implies that this tool is for getting multiple financial data points simultaneously, but it does not explicitly contrast with sibling tools or state when to prefer this over individual getters. There is no explicit alternative naming or exclusion, so the guidance remains implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bitcoin_priceA
실시간 비트코인 가격을 가져옵니다 (KRW 기준)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It adds 'real-time' and 'KRW' context, but does not disclose return format, failure behavior, or other operational details. The added context is minimal but not misleading.
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 a single, front-loaded sentence with no redundant words. Every part contributes to meaning, making it highly efficient and easy to parse.
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?
For a simple zero-parameter tool with no output schema, the description is adequate: it states the purpose and currency. It lacks details like return format, but given the simplicity, it is sufficiently complete for an AI agent to select and invoke correctly.
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?
There are zero parameters, so the baseline is 4. The description adds no parameter-specific details, but none are needed. The tool is self-contained.
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 a specific action (fetch real-time price) and resource (Bitcoin price in KRW), distinguishing it from siblings like gold or exchange rates. The verb and object are explicit and unambiguous.
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 implies usage for real-time Bitcoin price in KRW, providing clear context. It does not explicitly mention alternatives or exclusions, but the intended use is evident given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_exchange_rateB
실시간 환율 정보를 가져옵니다 (USD/KRW, JPY/KRW)
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | 환율 쌍 (USD/KRW 또는 JPY/KRW) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits on its own. It only mentions 'real-time' and the supported pairs, omitting the return format, rate type, or any limitations such as delayed data or API restrictions, leaving the behavior under-specified.
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 a single sentence that directly conveys the purpose and supported pairs, with no filler or repetition. It is well-structured and front-loaded with the main action.
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?
This is a simple tool with one parameter, but the absence of an output schema means the description should explain what data is returned. It does not, and it also lacks any mention of the response format or the source of the rates, making the description incomplete for robust 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?
The single 'pair' parameter is fully described in the schema with an enum and description, and the description simply repeats the allowed values without adding semantics. Since schema coverage is 100%, a baseline of 3 is appropriate.
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 explicitly states the tool 'fetches real-time exchange rate information' (실시간 환율 정보를 가져옵니다) and names the specific currency pairs (USD/KRW, JPY/KRW). This clearly defines the verb+resource+scope, distinguishing it from sibling tools that fetch other asset prices.
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 implies the tool is for exchange rate lookups but does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference alternative tools for other asset types. An agent must infer usage from the tool name and domain rather than from direct instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gold_priceA
실시간 금 시세를 가져옵니다 (3.75그램 기준)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the price is real-time and based on 3.75 grams, but does not describe return format, caching, or any error/rate-limit behavior. This is minimal for a tool with no annotation context.
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 one short sentence that immediately states the tool's core function and the unit. Every word earns its place; no fluff.
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?
For a zero-parameter read tool, the description is adequate but leaves gaps: no return format, no mention of the currency (likely KRW but unstated), and no guidance on how this relates to other tools. The lack of output schema makes this slightly under-specified.
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?
No parameters exist, so baseline is 4. The description adds useful context about the measurement basis (3.75g), which helps the agent interpret the output even though no parameters are involved.
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 a specific verb '가져옵니다' (retrieve) and a specific resource '실시간 금 시세' (real-time gold price), with a clarifying unit (3.75g). This distinguishes it from sibling tools like get_exchange_rate and get_bitcoin_price.
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?
No mention of when to use this tool versus alternatives like get_all_prices. The description provides no exclusions or preferences, so the agent must infer usage solely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sp500A
S&P 500 지수를 가져옵니다
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 only states the action (fetching the index) and provides no detail about data source, update frequency, return format, or any caveats. The lack of any behavioral context beyond the purpose itself is a significant gap.
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 a single sentence that directly states the purpose without any filler. Every word earns its place, and the structure is appropriately front-loaded with the action.
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?
For a parameterless tool, this is minimally viable. The purpose is clear and invocation is straightforward. However, the lack of any return value description (no output schema exists) and the absence of usage guidance relative to sibling tools leave clear gaps in the overall context.
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 tool has zero parameters, so the schema is empty. Per the guidelines, the baseline for 0 params is 4. The description adds no parameter information, but none is needed since there are no arguments to explain.
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 function with a specific verb ('가져옵니다' / gets) and a specific resource ('S&P 500 지수' / S&P 500 index). This distinguishes it from sibling tools like get_exchange_rate or get_bitcoin_price, each targeting a different financial data point.
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?
There is no guidance on when to use this tool versus alternatives such as get_all_prices. The description does not mention any context, exclusions, or comparisons to sibling tools, leaving the agent without decision support for selection.
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.
5 tool updates
v1.0.0- First observed
get_all_prices - First observed
get_bitcoin_price - First observed
get_exchange_rate - First observed
get_gold_price - First observed
get_sp500
TDQS
Scored across 5 tools
Each tool targets a distinct financial asset or data type (exchange rate, bitcoin, gold, S&P 500). The get_all_prices tool is clearly a bulk variant, but its purpose is distinct from individual getters, and descriptions make the choice unambiguous.
All tools follow a consistent get_ prefix with a noun describing the data (exchange_rate, bitcoin_price, gold_price, sp500, all_prices). This is a uniform and predictable pattern.
With only 5 tools, the server is well-scoped for a financial data retrieval service. Each tool serves a specific purpose, and there is no unnecessary bloat or sparse implementation.
The server covers the four core assets it mentions (exchange rates, bitcoin, gold, S&P 500) and adds a bulk fetch. Minor gaps exist, such as no support for additional currency pairs or historical data, but these are not critical for the stated real-time focus.
Maintenance
Related MCP Connectors
Unlock the power of real-time financial data with our Finance MCP. Easily retrieve the latest
Financial data MCP for market, company, news, macro, and US Congress research.
Real-time market events, sentiment, and technical analysis as MCP tools, backed by real data.
Live financial data MCP: FX, crypto, stocks, news, URL reader. x402 on Base: $0.001/call.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides real-time weather alerts, forecasts, stock prices, historical data, and stock-related news through an MCP interface.55 npm6MIT
- AlicenseNot gradedqualityDmaintenanceReal-time currency exchange rates and crypto prices via MCP. Convert between 60+ fiat currencies and 30+ cryptocurrencies with multi-source failover. No API keys needed for upstream data.8 npmISC
- AlicenseCqualityCmaintenanceEnables querying real-time and historical financial market data for stocks, options, forex, and crypto, including quotes, trades, technical indicators, and reference data through a set of MCP tools.713MIT
- AlicenseNot gradedqualityBmaintenanceFetches Korean and global financial data (indices, stocks, ETFs, exchange rates, crypto) via local MCP tools, bypassing web search limitations.1MIT