eiu-mcp-server
eiu-mcp-server
Model Context Protocol 서버로, Claude(또는 MCP 호환 LLM 클라이언트)가 EIU 데이터 API에 구조화되고 토큰 효율적인 방식으로 접근할 수 있게 해줍니다 — 약 200개 국가와 320개 경제 지표 시리즈, 과거 데이터 및 전망을 포함합니다.
세 가지 도구를 제공합니다:
도구 | 용도 |
| 사용 가능한 지역과 시리즈 목록, 키워드로 선택적 필터링 가능 |
| 시리즈 카탈로그 전체에서 키워드 검색(예: |
| 국가 및 시리즈 코드로 데이터 조회, 빈도 및 날짜 필터 포함 |
참조 데이터는 세션당 한 번 가져와 메모리에 캐시되므로, browse와 search는 추가 API 호출이 들지 않습니다.
사전 요구 사항
EIU API 개발자 포털 접근 권한. 셀프 서비스가 아닙니다. economicssupport@economist.com으로 이메일을 보내 개발자 포털 접근 권한을 요청하세요. 담당자가 수동으로 계정을 설정해 줍니다. 포털 이메일 주소, 포털 비밀번호, 포털에 표시된 API 키 — 이 세 가지가 모두 필요합니다.
uv가 머신에 설치되어 있어야 합니다. 한 줄 명령:curl -LsSf https://astral.sh/uv/install.sh | sh
이 저장소를 클론하거나 가상 환경을 관리할 필요는 없습니다 — uvx가 git URL에서 모든 것을 처리합니다.
Related MCP server: EODHD MCP Server
설치
Claude Code
한 줄 설치입니다. EIU의 세 가지 값이 담긴 .env가 있는 폴더에서 실행하세요. 셸이 값을 읽으므로 자격 증명이 대화에 절대 나타나지 않습니다:
set -a; source .env; set +a
claude mcp add --scope user eiu \
-e EIU_API_KEY="$EIU_API_KEY" \
-e EIU_EMAIL="$EIU_EMAIL" \
-e EIU_PASSWORD="$EIU_PASSWORD" \
-- uvx --from git+https://github.com/joshua-bailey/eiu-mcp-server.git eiu-mcp-server또는 .mcp.json에 항목을 직접 추가하세요:
{
"mcpServers": {
"eiu": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/joshua-bailey/eiu-mcp-server.git",
"eiu-mcp-server"
],
"env": {
"EIU_API_KEY": "${EIU_API_KEY}",
"EIU_EMAIL": "${EIU_EMAIL}",
"EIU_PASSWORD": "${EIU_PASSWORD}"
}
}
}
}그런 다음 Claude Code를 다시 시작하세요. 세 가지 eiu_* 도구가 /mcp 아래에 표시되어야 합니다.
Claude Desktop
동일한 JSON 스니펫을 다음 위치의 mcpServers 아래에 넣으세요:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Claude Desktop은 ${VAR} 참조를 확장하지 않으므로 대신 실제 값을 넣으세요.
버전 고정
uvx는 기본적으로 main의 최신 커밋을 설치합니다. 태그된 릴리스로 고정하려면 git URL에 @<tag>를 추가하세요. 예:
"git+https://github.com/joshua-bailey/eiu-mcp-server.git@v0.1.0"환경 변수
변수 | 필수? | 용도 |
| 예 | 개발자 포털에서 받은 EIU API 키. |
| 예 | 포털 계정에 사용하는 이메일 주소. |
| 예 | 포털 비밀번호. |
세 가지 모두 필요합니다. 서버는 이메일과 비밀번호로 로그인하여 베어러 토큰을 얻은 다음, 모든 요청에 API 키와 함께 해당 토큰을 전송합니다. 토큰은 메모리에 캐시되고 만료 전에 갱신됩니다.
사용 방법
MCP가 등록되면 Claude에게 다음과 같이 요청하세요:
"EIU에서 'current account balance' 시리즈를 검색해 줘"
"'consumer prices'를 다루는 EIU 시리즈 코드는 무엇이야?"
"미국, 영국, 중국의 EIU 연간 GDP 성장률(DGDP)을 2015년부터 2030년까지 가져와 줘"
"브라질, 멕시코, 칠레의 EIU 분기별 인플레이션 전망을 보여 줘"
Claude가 적절한 도구를 선택해 호출합니다.
코드
지역(Geographies) 은 대문자 ISO 두 글자 코드입니다:
US,GB,CN,BR.시리즈(Series) 는 대문자로 된 EIU 고유의 짧은 코드입니다(예:
DGDP,DCPI). 추측하지 말고eiu_search또는eiu_browse를 사용해 찾으세요.빈도(Frequency) 는
Yearly,Quarterly또는Monthly중 하나입니다.
eiu_get_data는 토큰 효율을 유지하기 위해 응답을 200개 데이터 포인트로 제한하며, 잘릴 경우 이를 명시합니다. 나머지를 보려면 날짜 범위나 국가 목록을 좁히세요.
API 참조
기본 API는 developer.eiu.com/help/overview에 문서화되어 있습니다. 서버는 https://api.eiu.com/v1과 통신합니다.
라이선스
MIT — LICENSE 참조. 이 저장소의 래퍼 코드에만 적용됩니다. 종속성은 각자의 라이선스를 유지합니다. EIU 데이터는 유료 구독이며, 그 이용 약관은 이 래퍼와 별도로 적용됩니다.
Available Tools
3 toolseiu_browseA
Browse available EIU geographies and data series.
Call with no filter to see all available geographies/series. Use filter to narrow results by keyword.
Args: filter: Optional keyword (e.g. 'Brazil', 'GDP', 'inflation') show: 'geographies', 'series', or 'both' (default)
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | both | |
| filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It explains what happens with no filter versus with a filter and describes the show options. It does not mention output format or pagination, but the presence of an output schema reduces the need for that 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?
The description is compact and well-organized: a summary line, short usage guidance, and a clean args list. Every sentence contributes value, with no repetition or 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 simple two-parameter browse tool, the description is complete. It covers all parameters, defaults, and core behavior, and the output schema exists to document return values. The lack of explicit sibling routing is the only minor omission, but the intended use is clear.
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?
Schema coverage is 0%, and the description fully compensates. It defines filter as an optional keyword with concrete examples, and show as selecting 'geographies', 'series', or 'both' with the default noted. This is meaningful semantic content beyond the bare schema.
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 opens with a specific verb and resource: 'Browse available EIU geographies and data series.' This clearly distinguishes it from siblings like eiu_get_data and eiu_search, which presumably retrieve or search data rather than browse the catalog.
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 gives clear operational context: 'Call with no filter to see all available geographies/series. Use filter to narrow results by keyword.' It explains how to use the tool and the effect of each parameter, though it does not explicitly state when to prefer eiu_search or eiu_get_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eiu_get_dataA
Fetch EIU forecast/indicator data by country and series codes.
Use eiu_browse or eiu_search first to find valid codes.
Args: geography_codes: ISO 2-char codes (e.g. ['US', 'BR', 'CN']) series_codes: EIU series codes (e.g. ['DGDP', 'DCPI']) frequency: 'Yearly', 'Quarterly', or 'Monthly' min_date: Start date YYYY-MM-DD (default: 5 years ago) max_date: End date YYYY-MM-DD (default: 5 years ahead)
| Name | Required | Description | Default |
|---|---|---|---|
| max_date | No | ||
| min_date | No | ||
| frequency | No | Quarterly | |
| series_codes | Yes | ||
| geography_codes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 clearly implies a read-only fetch operation, states the prerequisite of finding valid codes first, and documents default date ranges and accepted frequency values. It could add error/rate-limit behavior, but the default date behavior and non-destructive nature are usefully conveyed.
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 compact and well-structured. The high-level purpose is front-loaded, the prerequisite is stated in a single sentence, and the Args block is clean and easy to scan. No sentence is wasted or redundant.
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?
Given the tool has an output schema, return-value documentation is not needed. The description covers all five parameters, provides valid examples, explains the required discovery workflow, and states defaults. Everything an agent needs to invoke the tool correctly is present.
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?
Schema description coverage is 0%, so the description fully compensates. It explains every parameter: ISO 2-char geography codes with examples, EIU series codes with examples, allowed frequency values, and date format/defaults for min_date and max_date. This is far beyond the bare schema.
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 uses a specific verb ('Fetch') and a specific resource ('EIU forecast/indicator data') with clear scope by country and series codes. This distinguishes it well from the sibling tools eiu_browse and eiu_search, which are for finding codes rather than retrieving data.
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?
It explicitly explains the intended workflow: use eiu_browse or eiu_search first to find valid codes, then call this tool. This is clear guidance on when to use this tool versus the alternatives, leaving no ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
eiu_searchA
Search EIU series by keyword in cached reference data.
Use this to find series codes before calling eiu_get_data.
Args: query: Search terms (e.g. 'GDP', 'consumer prices', 'exchange rate') limit: Max results (default 25, max 100)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the only source of behavioral context. It adds useful facts about cached reference data and the limit cap (max 100) beyond the schema, but it does not state read-only behavior, output characteristics, or error handling. Acceptable for a simple read-oriented search, but it is not rich.
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 concise and front-loaded: a one-sentence purpose, a clear usage pointer, and a compact Args block. No redundant wording or filler; every sentence contributes.
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?
The tool is simple, has an output schema to cover return values, and the description provides param details plus sequencing with eiu_get_data. It is slightly incomplete in not addressing the relationship to eiu_browse, but it contains the essential context for correct invocation.
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?
Schema description coverage is 0%, but the description compensates by explaining both parameters: query with concrete examples and limit with default and max. It adds meaning beyond the schema, though it could be more precise about the interpretation of 'limit' (number of results vs. something else).
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 states a clear verb and resource: search EIU series by keyword in cached reference data. It also notes the downstream use (finding series codes before calling eiu_get_data), but it does not explicitly differentiate from the sibling eiu_browse, so purpose is clear but sibling distinction is left implicit.
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 gives explicit guidance: 'Use this to find series codes before calling eiu_get_data.' This establishes when to use the tool relative to eiu_get_data, but it does not mention alternatives such as eiu_browse or exclusions, so it falls short of full when/when-not coverage.
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.
3 tool updates
v0.1.0- First observed
eiu_browse - First observed
eiu_get_data - First observed
eiu_search
TDQS
Scored across 3 tools
eiu_browse and eiu_search both support keyword-based series discovery, so agents may be unsure which to call when looking up series codes. eiu_browse is broader because it also covers geographies, while eiu_search is narrowly focused on series, but the boundary is somewhat blurred. eiu_get_data is clearly distinct.
All tools share the eiu_ prefix and use lower_snake_case, making the naming pattern predictable. However, eiu_browse and eiu_search are bare verbs while eiu_get_data is verb_noun, which is a minor inconsistency.
Three tools is a reasonable, compact set for a browse/search/fetch data workflow. The count is appropriate, though eiu_browse and eiu_search overlap enough that the set could arguably be reduced to two tools.
The core workflow of discovering geographies and series, then fetching EIU data, is covered without dead ends. Minor gaps exist around metadata details or available date ranges, but agents can complete the primary task effectively.
Maintenance
Related MCP Connectors
Macroeconomic, trade, FX and commodity data for 50 countries over one MCP endpoint.
Browse and query the EIA API v2 — electricity, petroleum, natural gas, coal, forecasts via MCP.
World Bank MCP — wraps the World Bank Data API v2 (free, no auth)
Macroeconomic and other official data from 170+ publishers, resolved from natural language with provenance.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEconomic data MCP server that connects FRED, BLS, BEA, IMF, World Bank, and ECB to any MCP-compatible client, with built-in methodology rules to guide LLMs in selecting appropriate economic indicators.MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with EOD Historical Data APIs, providing access to 75 read-only tools for financial data including fundamentals, news, screeners, and options via MCP transports.23MIT
- AlicenseAqualityBmaintenanceEnables MCP-compatible clients to access Canadian statistical data from Statistics Canada via WDS and SDMX APIs, including search, download, and analysis capabilities.25167 PyPI7MIT
- FlicenseNot gradedqualityDmaintenanceExposes World Bank development data and country information via MCP resources and tools, enabling AI agents to query historical indicators and live API data.-