
ElasticGraph
https://github.com/block/elasticgraph- Category
- Developer Tools
- Rank
- No. 866Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- block
- GitHub
- 88 stars
- Latest release
- v1.2.0
- Date
About
Schema-driven, scalable, cloud-native, batteries-included GraphQL framework backed by Elasticsearch and OpenSearch.
What it does
ElasticGraph turns a Ruby-defined data model into the artifacts and services needed to index records and answer GraphQL queries through a search datastore. Its modules cover schema generation, query translation, indexing, administration, Rack serving, and an interactive GraphQL browser. Optional packages add federation, health checks, query controls, warehousing, and AWS Lambda deployment support.
Why it's ranked here
ElasticGraph merits attention because it tackles the whole path from model definition to local development and production-facing query services. The repository shows unusually broad engineering discipline: modular packages, three layers of datastore testing, enforced coverage, type checking, generated artifacts, and validated documentation examples. That depth comes with substantial operational and conceptual weight.
What's good
The project generator creates a working application, installs dependencies, builds schema artifacts, runs tests, and prepares an initial Git repository. Elasticsearch and OpenSearch have separate adapters, while core concerns remain split into focused packages. The test strategy covers query construction, direct datastore execution, and full GraphQL requests. A companion MCP server exposes project checks, documentation, common commands, and the current GraphQL schema to agent clients.
Tradeoffs
This is a Ruby-centered platform with many cooperating packages, Rake tasks, generated artifacts, and datastore services to understand. Local development requires Docker, while integration and acceptance tests require a running Elasticsearch or OpenSearch instance. Type coverage is incomplete because several implementation files are explicitly excluded. The MCP server is narrow: it validates projects and serves resources, but does not expose query execution or administration tools.
How to use it well
Choose ElasticGraph when a Ruby team wants a schema-led search API and accepts Elasticsearch or OpenSearch as the serving datastore. Start with the generator, keep schema artifacts under build validation, and test against the chosen datastore early. Use its extensions only where needed. The MCP companion helps agents navigate projects and documentation, but it does not replace operational tooling, datastore management, or application-specific ingestion design.
Technical notes+
config/schema.rb establishes the Ruby schema entry point and loads domain definitions. elasticgraph/lib/elastic_graph/cli.rb implements the Thor generator, supports Elasticsearch or OpenSearch, runs Bundler and build tasks, then initializes and commits a Git repository. Gemfile discovers local gemspecs recursively and wires monorepo runtime dependencies by path. Rakefile configures local services, schema artifact generation, datastore test versions, fake data, and optional schema extensions. Steepfile checks gem libraries with RBS but explicitly ignores multiple files that do not yet type-check. ai_tools/elasticgraph-mcp-server/src/elasticgraph_mcp/server.py defines FastMCP resources for documentation, commands, and the generated GraphQL schema, plus a project-detection tool that inspects the Gemfile.
Observed
- License
- MIT License
- Primary language
- Ruby, with a Python MCP companion
- Packaging
- Ruby monorepo containing more than 20 cooperating gems, distributed through RubyGems
- Interfaces
- GraphQL service, Rack server, GraphiQL browser, Thor CLI, Rake tasks, Ruby libraries, and MCP server
- Datastore support
- Separate adapters for Elasticsearch and OpenSearch
- Ruby support
- Repository standards specify Ruby 3.4.x or 4.0.x
- Testing structure
- RSpec unit, integration, and end-to-end acceptance layers, with SimpleCov coverage enforcement
Read from README.md, Gemfile, config/schema.rb, elasticgraph/lib/elastic_graph/cli.rb, ai_tools/elasticgraph-mcp-server/src/elasticgraph_mcp/server.py, ai_tools/elasticgraph-mcp-server/src/elasticgraph_mcp/__init__.py, ai_tools/elasticgraph-mcp-server/src/elasticgraph_mcp/__main__.py, elasticgraph-datastore_core/lib/elastic_graph/datastore_core/index_definition/index.rb, .rspec, Rakefile, AGENTS.md, CLAUDE.md, Steepfile, LICENSE.txt, .standard.yml.
What it can do
Create GraphQL APIs from schema definitions
GraphQL schema files → Fully functional GraphQL API endpoints
Index and store data in Elasticsearch/OpenSearch
Structured data and schema mappings → Indexed data in Elasticsearch/OpenSearch clusters
Execute GraphQL queries against indexed data
GraphQL queries → Query results from Elasticsearch/OpenSearch
Auto-scale API infrastructure based on demand
API traffic and load metrics → Dynamically scaled cloud infrastructure
Generate search-optimized database mappings
GraphQL schema definitions → Elasticsearch/OpenSearch index mappings
Deploy GraphQL services to cloud platforms
Application configuration and schema → Running cloud-native GraphQL services
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.