Guides / MCP
MCP 연결
Claude, ChatGPT, Cursor 같은 AI 도구에서 Phoenix AI의 공시·재무·시세 데이터를 도구로 씁니다. Data API 키(ck_live_)로 붙으면 Data API 도구가, PRO API 키나 OAuth로 붙으면 대화형 리서치를 포함한 PRO 도구가 열립니다. 플랜과 한도는 각 API의 것을 그대로 씁니다.
키에 따라 열리는 도구
ck_live_…)로 연결하면 Data API 도구가, PRO API 키(ck_pers_…)나 OAuth로 연결하면 PRO 도구가 나옵니다. Data API 키로 ask_phoenix 같은 PRO 도구를 부르거나 API 문서 세션 키(ck_docs_…)로 연결하면 WRONG_KEY_SCOPE를 받습니다. 아래 Data API 키로 연결을 보세요.서버 정보
| 항목 | 값 |
|---|---|
| 서버 주소 | https://www.chickstockfi.com/openapi/pro/v1/mcp |
| 전송 방식 | Streamable HTTP(JSON-RPC 2.0), 상태 없음. POST만 받고 GET(SSE)·DELETE는 405입니다. |
| 인증 | Data API 키(Authorization: Bearer ck_live_…) — Data API 도구 · PRO API 키(Authorization: Bearer ck_pers_…) 또는 OAuth 2.1(PKCE · 동적 클라이언트 등록) — PRO 도구 |
| 범위(scope) | mcp 하나. 쓸 수 있는 도구는 계정의 PRO 플랜이 정합니다. |
| 필요한 플랜 | Data API 키: Data API 플랜(PoC · Launch · Business · Scale · Enterprise). PRO API 키·OAuth: PRO 플랜(Data · Ask · Bundle 중 하나). Data만 있으면 질문 도구가 없고, Ask만 있으면 데이터 도구가 없습니다. |
OAuth 인가 서버(issuer)는 https://www.chickstockfi.com/openapi/pro/v1입니다. MCP 연결은 www.chickstockfi.com 주소를 쓰세요.
Data API 키로 연결
Data API 고객은 Data API 키(ck_live_…)를 Authorization 헤더에 넣어 연결합니다. PRO API 플랜은 없어도 됩니다. 서버 주소는 같고, 어떤 키로 붙느냐에 따라 나오는 도구가 달라집니다.
- 도구 하나가 Data API 엔드포인트 하나에 대응합니다. 도구 호출 1번은 Data API 요청 1번이고, REST와 같은 하루 한도·분당 한도에서 셉니다.
tools/list에는 그 키로 쓸 수 있는 도구만 나옵니다. 계약하지 않은 시장의 도구는 빠지고(한국만 계약했으면get_earnings_calendar가 없습니다), 예전 Free 키는get_news·search_news·grounded_answer·get_api_usage만 나옵니다.- 결과는 REST 응답 본문에
usage가 붙은 모양입니다.quota(하루)·rate_limit(분당)가 들어 있고, AI 호출 한도가 있는 계정(PoC · Launch · Business · Scale)은ai_quota도 있습니다. - 오류 코드와 문구는 REST와 같습니다. 예:
MARKET_NOT_ENTITLED,PLAN_REQUIRED,POC_ENDED,QUOTA_EXCEEDED,RATE_LIMITED,AI_QUOTA_EXCEEDED. PoC가 끝나면 연결 단계에서403 POC_ENDED가 옵니다. - OAuth 로그인은 PRO 계정용입니다. Data API 키는 헤더로 연결하세요. API 문서 세션 키(
ck_docs_…)로는 연결할 수 없고(401 WRONG_KEY_SCOPE),ask_phoenix같은 PRO 도구를 부르면WRONG_KEY_SCOPE가 옵니다.
Claude Code
claude mcp add --transport http phoenix-data https://www.chickstockfi.com/openapi/pro/v1/mcp \
--header "Authorization: Bearer $PHOENIX_DATA_KEY"Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"phoenix-data": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.chickstockfi.com/openapi/pro/v1/mcp", "--header", "Authorization:${PHOENIX_AUTH}"],
"env": { "PHOENIX_AUTH": "Bearer ck_live_xxxxxxxx" }
}
}
}Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"phoenix-data": {
"url": "https://www.chickstockfi.com/openapi/pro/v1/mcp",
"headers": { "Authorization": "Bearer ck_live_xxxxxxxx" }
}
}
}AI 호출
grounded_answer는 답 모델을 부를 때마다 AI 호출 1회를 씁니다. get_disclosure_summary·get_stock_briefing은 요약·브리핑을 새로 만들 때만 1회를 씁니다. run_data_query는 모델을 부르지 않아 세지 않습니다. 한도는 등급별 하루 AI 호출 한도이고 REST와 함께 셉니다(호출 한도와 쿼터).
Data API 도구
엔드포인트 경로는 https://api.chickstockfi.com/openapi/v1 아래입니다.
| 도구 | Data API 엔드포인트 | 시장 | 참고 |
|---|---|---|---|
get_company_financials | GET /companies/{symbol}/financials | KR · US | |
get_company_metrics | GET /companies/{symbol}/metrics | KR · US | |
get_company_segments | GET /companies/{symbol}/segments | KR · US | |
get_company_dividends | GET /companies/{symbol}/dividends | KR · US | |
get_company_consensus | GET /companies/{symbol}/consensus | KR · US | |
get_company_guidance | GET /companies/{symbol}/guidance | KR · US | |
get_us_earnings_surprises | GET /companies/{symbol}/earnings-surprises | US | |
get_us_analyst_ratings | GET /companies/{symbol}/analyst-ratings | US | |
get_company_disclosures | GET /companies/{symbol}/disclosures | KR · US | |
get_net_income_split | GET /companies/{symbol}/net-income-split | KR | |
get_quote | GET /quotes/{symbol} | KR | |
get_disclosure_text | GET /disclosures/{id} | KR | |
get_disclosure_summary | GET /disclosures/{id}/summary | KR | 새로 만들 때 AI 호출 |
get_stock_briefing | GET /briefings/{symbol} | KR | 새로 만들 때 AI 호출 |
get_major_holders | GET /major-holders/{symbol} | KR | |
get_insider_trades | GET /insider-trades/{symbol} | KR | |
get_treasury_stock | GET /treasury/{symbol} | KR | |
get_employees | GET /employees/{symbol} | KR | |
get_credit_ratings | GET /credit-ratings/{symbol} | KR | |
get_dividend_table | GET /dividends/{symbol} | KR | |
get_corporate_actions | GET /corporate-actions[/{symbol}] | KR | |
get_filing_events | GET /events | KR | |
get_ir_calendar | GET /ir-calendar | KR | |
get_ir_materials | GET /ir-materials | KR | |
get_ipo_offerings | GET /ipo-offerings | KR | |
get_ipo_listings | GET /ipo-listings | KR | |
get_clinical_trials | GET /clinical-trials | KR | |
get_earnings_calendar | GET /earnings | US | |
get_economic_calendar | GET /economic-calendar | KR · US | |
get_news | GET /news[/{symbol}] | KR · US | Free 키도 |
search_news | GET /search | KR | Free 키도 |
grounded_answer | GET /rag | KR · US | AI 호출 · Free 키도 |
run_data_query | POST /query | KR · US | |
get_api_usage | GET /key | KR · US | Free 키도 |
클라이언트별 연결
Claude Code
# PRO API 키로 연결
claude mcp add --transport http phoenix https://www.chickstockfi.com/openapi/pro/v1/mcp \
--header "Authorization: Bearer $PHOENIX_PRO_KEY"
# OAuth로 연결: 헤더 없이 추가한 뒤 Claude Code에서 /mcp → phoenix → 인증
claude mcp add --transport http phoenix https://www.chickstockfi.com/openapi/pro/v1/mcpClaude Desktop
키 없이 연결하려면 설정 → 커넥터 → 커스텀 커넥터 추가에서 서버 주소를 넣고 연결합니다. 브라우저에서 로그인하고 동의하면 끝납니다. 키로 연결하려면claude_desktop_config.json에 mcp-remote를 씁니다.
claude_desktop_config.json
{
"mcpServers": {
"phoenix": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.chickstockfi.com/openapi/pro/v1/mcp", "--header", "Authorization:${PHOENIX_AUTH}"],
"env": { "PHOENIX_AUTH": "Bearer ck_pers_xxxxxxxx" }
}
}
}claude.ai 웹·앱
설정 → 커넥터 → 커스텀 커넥터 추가 → URL에 서버 주소 → 연결 → 로그인 → 동의. OAuth만 씁니다.
ChatGPT
개발자 모드의 앱·커넥터 만들기에서 MCP 서버 URL에 같은 주소를 넣고, 인증은 OAuth를 고릅니다.
Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"phoenix": {
"url": "https://www.chickstockfi.com/openapi/pro/v1/mcp",
"headers": { "Authorization": "Bearer ck_pers_xxxxxxxx" }
}
}
}그 밖의 MCP 클라이언트
Streamable HTTP를 지원하면 서버 주소와 Authorization 헤더만 넣으면 됩니다. 연결 확인은 curl로도 할 수 있습니다.
curl -s https://www.chickstockfi.com/openapi/pro/v1/mcp \
-H "Authorization: Bearer $PHOENIX_PRO_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'OAuth 흐름
- 클라이언트가 키 없이 서버를 부르면
401과 보호 자원 메타데이터 주소를 받습니다. - 메타데이터에서 인가 서버를 찾고, 동적 클라이언트 등록(
/oauth/register)을 합니다. - 브라우저에서
/oauth/authorize→ 로그인 → 동의 화면으로 이어집니다. 동의 화면에 앱 이름, 돌아갈 주소, 계정, 플랜으로 쓸 수 있는 기능이 보입니다. - 승인하면 클라이언트가 코드를 토큰으로 바꿉니다(PKCE S256 필수). 접근 토큰(
ck_mcp_at_…)은 1시간, 갱신 토큰은 30일이고 쓸 때마다 바뀝니다. - 유효한 PRO 플랜이 있어야 승인됩니다. 토큰을 받은 뒤에도 요청마다 플랜을 다시 확인합니다.
HTTP/2 401
WWW-Authenticate: Bearer resource_metadata="https://www.chickstockfi.com/openapi/pro/v1/.well-known/oauth-protected-resource/mcp", scope="mcp"| 경로 | 용도 |
|---|---|
/.well-known/oauth-protected-resource/mcp | 보호 자원 메타데이터(RFC 9728) |
/.well-known/oauth-authorization-server | 인가 서버 메타데이터(RFC 8414) |
/oauth/register | 동적 클라이언트 등록(RFC 7591) |
/oauth/authorize | 인가 요청 → 로그인·동의 |
/oauth/token | 코드 교환 · 토큰 갱신 |
/oauth/revoke | 토큰 폐기(RFC 7009) |
경로는 모두 https://www.chickstockfi.com/openapi/pro/v1 아래에 있습니다. 계정당 살아 있는 연결은 20개이고, 넘으면 오래된 연결부터 끊깁니다.
PRO 도구(PRO API 키 · OAuth)
| 도구 | 플랜 상품 | 하는 일 |
|---|---|---|
search_disclosures | Data | 회사·시장·기간·유형으로 국내·미국 공시 검색, 저장된 AI 요약 포함 |
get_disclosure | Data | 공시 1건의 메타데이터·AI 요약·서식 추출값, 선택 시 원문 글 |
get_company_snapshot | Data | 시세·밸류에이션·재무 비율·업종 |
get_financials | Data | 재무제표 계정 행(값·단위·보고서·공시일·원문 링크) |
variance_table | Data | 실적 차이표(원문 실제값 · 회사 가이던스 · 발표 전 컨센서스) |
fact_check | Data | 숫자가 든 문장을 공시 원문과 대조(모델을 부르지 않음) |
ask_phoenix | Ask | Phoenix AI PRO에 질문 |
get_ask_result | Ask | 질문 결과 받기 |
get_account_usage | 모든 플랜 | 플랜과 오늘·이번 달 사용량 |
PRO 한도
- 도구 호출 1번이 하루 호출 1회입니다. REST 호출과 합쳐 셉니다.
get_ask_result·get_account_usage는 넣지 않습니다. - 키로 연결하면 REST와 같은 초당 버킷을 씁니다. OAuth 연결은 연결마다 버킷이 따로입니다.
- 연결 절차(initialize · tools/list)는 하루 호출에 넣지 않습니다.
- 한도에 걸리면 도구 결과가 오류(
isError)로 오고RATE_LIMITED,DAILY_QUOTA_EXCEEDED같은 코드가 들어 있습니다. 코드 뜻은 오류 코드를 보세요.
연결이 안 되면