Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
c7ae411
INIT: make Project folder, README.md
SeungWoonSong Mar 28, 2025
98cc1af
FEAT: APIs for Login and User Profile
SeungWoonSong Mar 28, 2025
125aaa0
FEAT: add API Flow for Front
SeungWoonSong Mar 28, 2025
791023d
initial commit: project setup, layout, sign in with MetaMask
HerrineKim Mar 28, 2025
39a4f1c
FEAT: Deposit Smart Contract
SeungWoonSong Mar 28, 2025
79c48ee
FEAT: Withdraw Smart Contract & Swagger update
SeungWoonSong Mar 28, 2025
b0b016f
FIX: use native HSK, not new
SeungWoonSong Mar 28, 2025
876bae7
FEAT: add all pages, UI fixes
HerrineKim Mar 29, 2025
f7e74a0
FEAT: build profile page
HerrineKim Mar 29, 2025
ec7c4ee
FEAT: build tier page, cleanup
HerrineKim Mar 29, 2025
cdccfc9
FEAT: Test files for backend
SeungWoonSong Mar 29, 2025
b909520
FEAT: build usage page
HerrineKim Mar 29, 2025
c5c2f06
FIX: Swagger issue solved
SeungWoonSong Mar 29, 2025
316185c
FEAT: build hot page
HerrineKim Mar 29, 2025
670b0f3
FEAT: build search page and pagination
HerrineKim Mar 29, 2025
2f2a098
FIX: UI fixes
HerrineKim Mar 29, 2025
73d8db8
FEAT: add more mock APIs and fix UI
HerrineKim Mar 29, 2025
b60d929
FIX: User DB fixed. No additional Info
SeungWoonSong Mar 29, 2025
f9715e9
FIX: Swagger URL changed
SeungWoonSong Mar 29, 2025
828025c
FIX: Root API changed(Router changed)
SeungWoonSong Mar 29, 2025
20847e8
chore: create README
HerrineKim Mar 29, 2025
2352a45
FEAT: add secret page
HerrineKim Mar 29, 2025
5892ccd
FIX: fix unused var
HerrineKim Mar 29, 2025
3ede81d
chore: add env variable
HerrineKim Mar 29, 2025
783b827
FIX: API Keys class changed
SeungWoonSong Mar 29, 2025
48b3c4b
FEAT: add secret page
HerrineKim Mar 29, 2025
6eae994
FIX: secret design fixes
HerrineKim Mar 29, 2025
c962654
FEAT: Crypto API added(4API)
SeungWoonSong Mar 29, 2025
f0ac7c1
FEAT: API Lists for users
SeungWoonSong Mar 29, 2025
4591578
FEAT: secret deletion and UI fixes
HerrineKim Mar 29, 2025
c5a1405
REMOVE: Non native Token contract removed
SeungWoonSong Mar 29, 2025
89b01dd
UPDATE: requirement for crypto api
SeungWoonSong Mar 29, 2025
91782ec
FEAT: implement get info
HerrineKim Mar 29, 2025
8069f28
TEST: transfer
HerrineKim Mar 29, 2025
869653a
FEAT: Key and Secret both needed
SeungWoonSong Mar 29, 2025
ab445d1
FIX: deposit address
HerrineKim Mar 29, 2025
3b04299
FIX: chainId
HerrineKim Mar 29, 2025
cc88812
UPDATE: remove legacy auth
SeungWoonSong Mar 29, 2025
d2cba04
UPDATE: Notify Logic fix
SeungWoonSong Mar 29, 2025
91e0e14
FIX: Swagger Update
SeungWoonSong Mar 29, 2025
af3c612
Create LICENSE
HerrineKim Mar 29, 2025
30c2629
Delete LICENSE
HerrineKim Mar 29, 2025
348fc16
Create LICENSE
HerrineKim Mar 29, 2025
7540d32
Create LICENSE
HerrineKim Mar 29, 2025
ec2936b
Delete LICENSE
HerrineKim Mar 29, 2025
d9b4a47
UPDATE: Wallet address to lower
SeungWoonSong Mar 29, 2025
088186a
FEAT: MCP Library for HashScope
SeungWoonSong Mar 29, 2025
8fc308a
FIX: Update Deposit func
SeungWoonSong Mar 29, 2025
310c4b9
FIX: Deposit func
SeungWoonSong Mar 29, 2025
aeb595b
FIX: no User ID
SeungWoonSong Mar 29, 2025
2f31eee
FIX: use checksum
SeungWoonSong Mar 29, 2025
f358760
FEAT: implement deposit
HerrineKim Mar 29, 2025
0a47532
FIX: no Auth for api catalog
SeungWoonSong Mar 29, 2025
59ee8b5
FIX: top bar balance to actual num
HerrineKim Mar 29, 2025
a4a28c1
FEAT: Deduction of Cost feature
SeungWoonSong Mar 29, 2025
d157a1a
TYPO: No Korean in Code
SeungWoonSong Mar 29, 2025
66bf7fa
FIX: apply real data to hot page
HerrineKim Mar 29, 2025
f003332
FIX: no id use wallet address
SeungWoonSong Mar 29, 2025
9f8274b
FIX: apply real data to search page
HerrineKim Mar 29, 2025
12c141e
FEAT: Deduction on OnchainData and testfile
SeungWoonSong Mar 29, 2025
dc33bd3
FIX: about to upgrade
HerrineKim Mar 29, 2025
3dfa61a
FIX: Minor Error in ABI
SeungWoonSong Mar 29, 2025
7e5be82
FIX: Safe but it is Secret so.. in .env
SeungWoonSong Mar 29, 2025
446f2b7
FIX: remove axios and use fetch
HerrineKim Mar 29, 2025
40b63a5
FIX: ABI Align
SeungWoonSong Mar 29, 2025
3a5e167
FIX: Deduction Logic
SeungWoonSong Mar 29, 2025
834371a
Update README.md
HerrineKim Mar 29, 2025
38095da
FIX: Price down
SeungWoonSong Mar 29, 2025
17316ee
FIX: Fee Wallet Seperate
SeungWoonSong Mar 29, 2025
1d607b7
FEAT: API Key Usage history
SeungWoonSong Mar 29, 2025
5b21118
UPDATE: Korean explain to English
SeungWoonSong Mar 29, 2025
be998ff
FIX: real data for usage
HerrineKim Mar 29, 2025
c7768c9
FIX: use wallet address not user id
SeungWoonSong Mar 29, 2025
fd0242c
FIX: Cost Wei to HSK
SeungWoonSong Mar 29, 2025
05f2d7d
FIX: API usage with real data
HerrineKim Mar 29, 2025
f422ecb
FEAT: wrap up usage page
HerrineKim Mar 29, 2025
0305ff5
README: update README
SeungWoonSong Mar 29, 2025
0095dbd
FEAT: replace our logo
HerrineKim Mar 29, 2025
96f38e9
FEAT: Mock api lists will be updated
SeungWoonSong Mar 29, 2025
0579391
FEAT: add more cards on home
HerrineKim Mar 29, 2025
8bbb118
Update README.md
HerrineKim Mar 29, 2025
296215b
Update README.md
HerrineKim Mar 29, 2025
687f6d0
FIX: hot page system and UI fixes
HerrineKim Mar 29, 2025
786c91a
FIX: hot page system and UI fixes
HerrineKim Mar 29, 2025
a5b8e74
FIX: top bar amount
HerrineKim Mar 29, 2025
115ee51
FEAT: add API host
HerrineKim Mar 29, 2025
7782107
FIX: MCP Module update with exsit API
SeungWoonSong Mar 29, 2025
342db4e
FIX: typo
HerrineKim Mar 29, 2025
f111078
README: update Readme with Project Deck
SeungWoonSong Mar 29, 2025
d430ffa
README: more explanation
SeungWoonSong Mar 29, 2025
37fd238
README: add EVM address for air-drop
SeungWoonSong Mar 29, 2025
9ff73e2
Create LICENSE
HerrineKim Mar 29, 2025
3bc0420
FIX: UI fixes
HerrineKim Mar 30, 2025
15930ad
README: update imgaes
SeungWoonSong Mar 30, 2025
d9f3656
CHORE: add README for frontend
HerrineKim Mar 30, 2025
41240aa
TEST: Test code to print rsp
SeungWoonSong Mar 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2025 Hyerin (April) Kim

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
1 change: 1 addition & 0 deletions projects/HashScope/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

160 changes: 160 additions & 0 deletions projects/HashScope/MCP/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# HashScope MCP - LangChain Tool Integration

HashScope MCP는 AI Agent가 HashScope API를 통해 암호화폐 데이터에 쉽게 접근할 수 있도록 하는 LangChain Tool 통합 라이브러리입니다.

## 배포 링크

- **API 엔드포인트**: [https://hashkey.sungwoonsong.com/api](https://hashkey.sungwoonsong.com/api)
- **API 문서**: [https://hashkey.sungwoonsong.com/docs](https://hashkey.sungwoonsong.com/docs)

## 설치 방법

```bash
pip install -e .
```

## 사용 방법

### 기본 사용법

```python
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from hashscope_mcp import HashScopeToolkit

# HashScope API 키 설정
api_key_id = "hsk_your_api_key_id"
api_key_secret = "sk_your_api_key_secret"

# HashScope 도구 초기화 (로컬 서버 사용)
toolkit = HashScopeToolkit(api_key_id=api_key_id, api_key_secret=api_key_secret, base_url="https://hashkey.sungwoonsong.com")
tools = toolkit.get_tools()

# LangChain Agent 초기화
llm = OpenAI(temperature=0)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# Agent 실행
agent.run("비트코인의 현재 가격과 김치 프리미엄을 알려줘")
```

### 개별 도구 사용

```python
from hashscope_mcp import (
get_btc_usd_tool,
get_btc_krw_tool,
get_kimchi_premium_tool
)
from hashscope_mcp.hashscope_client import HashScopeClient

# HashScope 클라이언트 초기화
client = HashScopeClient(
api_key_id="hsk_your_api_key_id",
api_key_secret="sk_your_api_key_secret",
base_url="https://hashkey.sungwoonsong.com"
)

# 개별 도구 생성
btc_usd_tool = get_btc_usd_tool(client)
btc_krw_tool = get_btc_krw_tool(client)
kimchi_premium_tool = get_kimchi_premium_tool(client)

# 도구 사용
btc_usd = btc_usd_tool.run()
print(btc_usd)

btc_krw = btc_krw_tool.run()
print(btc_krw)

kimchi_premium = kimchi_premium_tool.run()
print(kimchi_premium)
```

## 사용 가능한 도구

HashScope MCP는 다음과 같은 도구를 제공합니다:

### 암호화폐 데이터
1. **get_btc_usd_price**: BTC/USD 가격 조회 (Binance)
2. **get_btc_krw_price**: BTC/KRW 가격 조회 (Upbit)
3. **get_usdt_krw_price**: USDT/KRW 가격 조회 (Upbit)
4. **get_kimchi_premium**: 김치 프리미엄 조회

### 소셜 미디어 데이터
5. **get_trump_posts**: Donald Trump의 최신 포스트 조회
6. **get_elon_posts**: Elon Musk의 최신 포스트 조회
7. **get_x_trends**: X(Twitter) 트렌드 조회

### 파생상품 시장 데이터
8. **get_funding_rates**: 암호화폐 선물 시장의 펀딩 비율 조회
9. **get_open_interest**: 암호화폐 파생상품의 미결제 약정 비율 조회

### 블록체인 프로젝트 데이터
10. **get_hsk_updates**: HashKey Chain의 최신 업데이트 조회
11. **get_ethereum_standards**: 이더리움 표준 및 제안 정보 조회
12. **get_solana_updates**: Solana 블록체인의 최신 업데이트 조회

### 오픈소스 데이터
13. **get_bitcoin_activity**: Bitcoin Core 저장소 활동 조회
14. **get_ethereum_activity**: Ethereum Core 저장소 활동 조회

## 예제: LangChain과 함께 사용하기

```python
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from hashscope_mcp import HashScopeToolkit

# API 키 설정
api_key_id = "hsk_your_api_key_id"
api_key_secret = "sk_your_api_key_secret"

# HashScope 도구 초기화
toolkit = HashScopeToolkit(api_key_id=api_key_id, api_key_secret=api_key_secret, base_url="https://hashkey.sungwoonsong.com")
tools = toolkit.get_tools()

# LangChain Agent 초기화
llm = ChatOpenAI(model="gpt-4", temperature=0)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# 복잡한 질문에 대한 응답
response = agent.run("""
다음 질문에 답해줘:
1. 비트코인의 현재 가격은 얼마인가? (USD와 KRW 모두)
2. 현재 김치 프리미엄은 얼마인가?
3. 최근 Elon Musk는 어떤 내용을 포스팅했는가?
4. HashKey Chain의 최신 업데이트는 무엇인가?
""")

print(response)
```

## API 키 발급 방법

HashScope API 키를 발급받으려면:

1. [HashScope 웹사이트](https://hashscope.vercel.app/)에 방문하여 계정을 생성합니다.
2. 대시보드에서 "API 키 관리" 섹션으로 이동합니다.
3. "새 API 키 생성" 버튼을 클릭합니다.
4. API 키 ID와 시크릿을 안전하게 저장합니다.

## 주의사항

- API 키 시크릿은 절대로 공개 저장소에 커밋하지 마세요.
- 환경 변수나 안전한 시크릿 관리 도구를 사용하여 API 키를 관리하세요.
- API 사용량에 따라 과금될 수 있으므로 사용량을 모니터링하세요.

## 라이선스

MIT License
21 changes: 21 additions & 0 deletions projects/HashScope/MCP/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""
HashScope MCP - LangChain Tool Integration

This package provides tools for integrating HashScope API with LangChain.
"""

from .hashscope_tools import (
HashScopeToolkit,
get_crypto_price_tool,
get_crypto_market_data_tool,
get_crypto_onchain_data_tool,
get_crypto_social_data_tool,
)

__all__ = [
"HashScopeToolkit",
"get_crypto_price_tool",
"get_crypto_market_data_tool",
"get_crypto_onchain_data_tool",
"get_crypto_social_data_tool",
]
66 changes: 66 additions & 0 deletions projects/HashScope/MCP/example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
"""
HashScope MCP Example - Using HashScope with LangChain

This example demonstrates how to use HashScope API with LangChain to create
an AI agent that can access cryptocurrency data.
"""

import os
from langchain.agents import initialize_agent, AgentType
from langchain.chat_models import ChatOpenAI
from hashscope_tools import HashScopeToolkit

def main():
# API 키 설정 (환경 변수에서 가져오거나 직접 입력)
api_key_id = os.environ.get("HASHSCOPE_API_KEY_ID", "hsk_your_api_key_id")
api_key_secret = os.environ.get("HASHSCOPE_API_KEY_SECRET", "sk_your_api_key_secret")

# 개발 환경에서는 로컬 서버 사용
base_url = os.environ.get("HASHSCOPE_API_URL", "http://localhost:8001")

print(f"Connecting to HashScope API at {base_url}")

# HashScope 도구 초기화
toolkit = HashScopeToolkit(
api_key_id=api_key_id,
api_key_secret=api_key_secret,
base_url=base_url
)
tools = toolkit.get_tools()

# 사용 가능한 도구 출력
print(f"Available tools: {len(tools)}")
for tool in tools:
print(f"- {tool.name}: {tool.description}")

# OpenAI API 키 확인
openai_api_key = os.environ.get("OPENAI_API_KEY")
if not openai_api_key:
print("Warning: OPENAI_API_KEY not set. LangChain agent example will not work.")
return

# LangChain Agent 초기화
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)

# 사용자 입력 받기
query = input("\nEnter your cryptocurrency question (or press Enter to use default): ")
if not query:
query = "비트코인의 현재 가격과 지난 7일간의 가격 변화, 그리고 소셜 미디어에서의 감성을 분석해줘."
print(f"Using default query: {query}")

# Agent 실행
try:
response = agent.run(query)
print("\nAgent Response:")
print(response)
except Exception as e:
print(f"Error running agent: {e}")

if __name__ == "__main__":
main()
Loading