Skip to main content
Glama

Israel Statistics MCP

by reuvenaor
README.md11.6 kB
# Israel Statistics MCP Server A **Model Context Protocol (MCP) server** that provides programmatic access to the Israeli Central Bureau of Statistics (CBS) price indices and economic data. Built with TypeScript, this server offers 8 comprehensive tools for retrieving, analyzing, and calculating Israeli economic statistics. ## 🐳 **Installation & Usage** ### **Docker (Recommended)** ```json // .mcp.json { "israel-statistics-mcp": { "command": "docker", "args": ["run", "--rm", "-i", "reuvenaor/israel-statistics-mcp:latest"] } } ``` ### **NPX** ```json // .mcp.json { "israel-statistics-mcp": { "command": "npx", "args": ["@reuvenorg/israel-statistics-mcp"] } } ``` ### **Claude Desktop Integration** ```bash # Quick setup claude mcp add --scope project israel-statistics-mcp npx @reuvennaor85/israel-statistics-mcp ``` ## 🚀 **Features** ### **📊 Comprehensive Economic Data Access** - **Consumer Price Index (CPI)** - General and detailed price indices - **Housing Market Index** - Real estate prices with bi-monthly updates - **Producer Price Indices** - Industrial, exports, and services - **Specialized Indices** - Construction, agriculture, transportation, and more - **Price Linkage Calculator** - Inflation adjustment calculations ### **🛡️ Enterprise-Grade Architecture** - **Type-Safe Validation** - Complete Zod schema validation for all inputs/outputs - **Rate Limiting** - Built-in protection (5 concurrent operations max) - **Error Handling** - Comprehensive CBS API error handling and retry logic - **Multi-Format Support** - JSON and XML response parsing - **Housing Market Warnings** - Automatic notifications for bi-monthly provisional data ### **🔄 Advanced Data Processing** - **XML/JSON Transformation** - Seamless conversion from CBS API formats - **Statistical Calculations** - Automatic averages, counts, and summaries - **Date Range Filtering** - Flexible period selection (monthly/quarterly) - **Search & Discovery** - Full-text search across indices and topics - **Pagination Support** - Handle large datasets efficiently (up to 1000 items/page) ## 📋 **Available MCP Tools** | Tool | Description | Key Parameters | | ---------------------- | ------------------------------------------------ | ------------------------------------------ | | `get_index_topics` | Browse all available index categories and topics | `period`, `searchText`, `lang` | | `get_catalog_chapters` | Get all index chapters (CPI, Housing, etc.) | `lang`, `pagesize` | | `get_chapter_topics` | Get topics within a specific chapter | `chapterId`, `lang` | | `get_subject_codes` | Get index codes for a specific topic | `subjectId`, `searchText` | | `get_index_data` | Retrieve historical price data for an index | `code`, `startPeriod`, `endPeriod` | | `get_index_calculator` | Calculate inflation-adjusted values | `indexCode`, `value`, `fromDate`, `toDate` | | `get_main_indices` | Get current main economic indices | `oldFormat`, `lang` | | `get_all_indices` | Get comprehensive index data with filtering | `chapter`, `oldFormat` | ## 🏗️ **Architecture** ``` src/ ├── index.ts # MCP server entry point with tool registration ├── mcp/ │ ├── handlers/ # 8 MCP tool handlers │ │ ├── getIndexTopics.ts # Browse available indices │ │ ├── getCatalogChapters.ts # Get index chapters │ │ ├── getChapterTopics.ts # Topics by chapter │ │ ├── getSubjectCodes.ts # Index codes by topic │ │ ├── getIndexData.ts # Historical price data │ │ ├── getIndexCalculator.ts # Inflation calculator │ │ ├── getMainIndices.ts # Main indices (current + by period) │ │ └── getAllIndices.ts # All indices with filtering │ └── helpers/ │ ├── fetcher.ts # Secure CBS API client with XML/JSON parsing │ └── housingWarnings.ts # Housing market data warnings ├── schemas/ # Type-safe Zod validation schemas │ ├── request.schema.ts # Input validation schemas │ ├── response.schema.ts # Output validation schemas │ ├── base.schema.ts # Reusable object schemas │ └── shared.schema.ts # Common enums and types └── utils/ ├── registry-security.ts # Security utilities └── spinner.ts # MCP progress notifications ``` ### **🔒 Security Features** - **Rate Limiting**: Maximum 5 concurrent operations - **Input Validation**: Comprehensive Zod schema validation - **URL Validation**: Allowlist-based registry URL security - **Error Sanitization**: Safe error message handling - **Timeout Protection**: 30-second HTTP request timeouts ### **📝 Schema Architecture** ## 📊 **CBS API Coverage** The server implements **complete coverage** of the CBS Israel Statistics API: ### **Index Discovery Endpoints** - `GET /index/catalog/tree` → `get_index_topics` - `GET /index/catalog/catalog` → `get_catalog_chapters` - `GET /index/catalog/chapter` → `get_chapter_topics` - `GET /index/catalog/subject` → `get_subject_codes` ### **Data Retrieval Endpoints** - `GET /index/data/price` → `get_index_data` - `GET /index/data/calculator/{id}` → `get_index_calculator` - `GET /index/data/price_selected` → `get_main_indices` - `GET /index/data/price_selected_b` → `get_main_indices_by_period` - `GET /index/data/price_all` → `get_all_indices` ### **Supported Index Categories** | Chapter | Description | Examples | | ------- | --------------------------------- | ------------------------------- | | `a` | Consumer Price Index | Food, clothing, housing costs | | `aa` | Housing Market Index | Real estate prices (bi-monthly) | | `b` | Producer Price Index - Industrial | Manufacturing output prices | | `ba` | Producer Price Index - Exports | Export prices for industry | | `bb` | Producer Price Index - Services | Service industry prices | | `c` | Residential Building Input | Construction material costs | | `ca` | Commercial Building Input | Office building costs | | `d` | Road Construction Input | Infrastructure costs | | `e` | Agriculture Input | Agricultural input costs | | `f` | Bus Input | Public transportation costs | | `fa` | Public Minibus Input | Public transport vehicle costs | ## ⚠️ **Housing Price Index Special Considerations** The server automatically detects and warns about Housing Price Index data: - **Bi-monthly Publication**: Updates every 2 months vs. monthly for other indices - **Temporal Lag**: Data reflects transactions from 2-3 months ago vs. 3-4 months ago - **Provisional Data**: Last 3 indices may be updated when additional reports arrive - **Linkage Warnings**: Automatic recommendations against using provisional periods ## 🧪 **Testing & Quality Assurance** ### **Comprehensive Test Suite** - **Unit Tests**: Complete handler coverage with Vitest - **Integration Tests**: Real CBS API integration tests - **Mock Testing**: Isolated handler testing with mocked dependencies - **Error Handling**: Network error and API error simulation - **Schema Validation**: Input/output validation testing ### **Code Quality Tools** - **TypeScript**: Strict type checking with no `any` types - **ESLint**: Modern flat config with TypeScript rules - **Prettier**: Consistent code formatting - **Zod**: Runtime type validation and inference ### **Development Commands** ```bash # Development pnpm dev # Watch mode development pnpm build # Production build pnpm typecheck # TypeScript validation # Testing pnpm test # Run all tests pnpm test:dev # Development mode testing # Quality pnpm lint # Lint code pnpm lint:fix # Fix linting issues pnpm format:check # Check formatting pnpm format:write # Apply formatting # Docker docker build -t reuvenaor/israel-statistics-mcp:latest -f Dockerfile . ``` ## 🔧 **Development** ### **Project Structure** - **TypeScript ESM**: Modern ES modules with TypeScript - **pnpm**: Fast, efficient package management - **tsup**: Fast TypeScript bundler with ESM output - **Docker**: Multi-stage builds for optimized containers - **Vitest**: Fast unit testing framework ### **Key Dependencies** - `@modelcontextprotocol/sdk`: MCP server implementation - `zod`: Type-safe validation and schema inference - `node-fetch`: HTTP client for CBS API calls - `xml2js`: XML response parsing - `typescript`: Type system and compilation ### **Configuration Files** - `tsconfig.json`: TypeScript configuration with strict settings - `eslint.config.js`: Modern ESLint flat configuration - `prettier.config.cjs`: Code formatting rules - `vitest.config.ts`: Test framework configuration - `tsup.config.ts`: Build tool configuration - `Dockerfile`: Multi-stage container build ## 📈 **Performance & Scalability** - **Rate Limiting**: 5 concurrent operations maximum - **Efficient Parsing**: Optimized XML/JSON transformation - **Memory Management**: Streaming for large datasets - **Caching**: Schema validation caching - **Error Recovery**: Graceful degradation and retry logic ## 📝 **API Response Examples** ### **Index Topics Discovery** ```typescript // Input { lang: "en", searchText: "housing", period: "M" } // Output { topics: [ { chapterId: "aa", chapterName: "Housing Market Index", subject: [ { subjectId: 123, subjectName: "Apartment Prices", code: [ { codeId: 180010, codeName: "Housing Price Index - General" } ] } ] } ], summary: "Found 15 index codes. ⚠️ Housing Price Index: This is a bi-monthly index..." } ``` ### **Price Linkage Calculation** ```typescript // Input { indexCode: 120010, value: 1000, fromDate: "01-01-2020", toDate: "01-01-2024" } // Output { request: { code: 120010, sum: 1000, from_date: "2020-01-01", to_date: "2024-01-01" }, answer: { from_value: 1000, to_value: 1155.2, change_percent: 15.52, base_year: "2022" }, summary: "Linked 1000 from 2020-01-01 to 2024-01-01: 1155.2 (15.52% change)" } ``` ## 📄 **License** MIT License - see [LICENSE](LICENSE) file for details. ## 🔗 **Links** - **Repository**: [https://github.com/reuvenaor/israel-statistics-mcp](https://github.com/reuvenaor/israel-statistics-mcp) - **Docker Hub**: [reuvenaor/israel-statistics-mcp](https://hub.docker.com/r/reuvenaor/israel-statistics-mcp) - **NPM Package**: [@reuvenorg/israel-statistics-mcp](https://www.npmjs.com/package/@reuvenorg/israel-statistics-mcp) - **CBS API Documentation**: [Israel Central Bureau of Statistics](https://api.cbs.gov.il/) - **MCP Protocol**: [Model Context Protocol Specification](https://modelcontextprotocol.io/) --- **Built with ❤️ for the Israeli tech community and economic research**

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/reuvenaor/israel-statistics-mcp'

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