ESG MCP Servers
Open-source Model Context Protocol servers for ESG (Environmental, Social, and Governance) data extraction, analysis, and regulation management.
31 tools across 6 servers — install once, run only what you need.
Author: Ioannis Michos (johnmichos.tf@gmail.com)
Quick Start
pip install esg-mcp-servers
Prerequisites
| Service | Required for |
|---|---|
| PostgreSQL 16 + pgvector | Vector storage, metrics, regulations |
| MongoDB 7 | PDF binary storage (GridFS) |
| Anthropic API key | RAG queries, metric extraction |
Spin up local databases with Docker:
docker compose up -d
Run the database migration:
esg-mcp-migrate
Environment Variables
Copy .env.example and fill in your values:
cp .env.example .env
Key variables:
| Variable | Default | Description |
|---|---|---|
POSTGRES_DSN |
postgresql://esg:esg@localhost/esg_platform |
PostgreSQL connection string |
MONGODB_URI |
mongodb://localhost:27017 |
MongoDB connection string |
ANTHROPIC_API_KEY |
— | Required for RAG and LLM extraction |
EMBEDDING_MODEL |
Snowflake/snowflake-arctic-embed-l-v2.0 |
Sentence-transformer model |
EMBEDDING_DIMENSIONS |
1024 |
Embedding vector size |
Servers & Tools
esg-metrics-extractor (11 tools)
ESRS-aligned KPI extraction for emissions, energy, water, waste, social, and governance domains.
| Tool | Description |
|---|---|
extract_emissions_data |
GHG Scope 1, 2, 3 extraction |
extract_energy_data |
Energy consumption & renewables (ESRS E2) |
extract_water_data |
Water withdrawal, discharge, consumption (ESRS E3) |
extract_waste_data |
Waste generation, recycling, landfill (ESRS E5) |
extract_social_data |
Workforce, diversity, H&S (ESRS S1) |
extract_governance_data |
Board composition & governance (ESRS G1) |
answer_esg_query |
Free-text RAG Q&A over documents |
keyword_similarity_search |
Semantic keyword search in documents |
detect_query_domain |
Classify query into ESG domain |
detect_emissions_query_type |
Detect emissions scope/year from query |
batch_extract_metrics |
Extract all KPIs and persist to DB |
esg-pdf-processor (5 tools)
PDF validation, text/table extraction, and embedding generation.
| Tool | Description |
|---|---|
verify_esg_report |
RandomForest ESG report classifier |
extract_text_chunks |
Extract and chunk PDF text |
extract_tables |
Table extraction with OCR fallback |
generate_embeddings |
Batch embedding generation |
process_pdf_full_pipeline |
End-to-end: extract, embed, store |
esg-vector-store (5 tools)
pgvector CRUD operations for document chunks and query cache.
| Tool | Description |
|---|---|
upsert_document_chunks |
Insert/update chunks with embeddings |
similarity_search |
Cosine similarity search |
get_cached_query_response |
Retrieve cached LLM responses |
cache_query_response |
Store LLM response in cache |
list_documents |
List indexed documents |
esg-regulations (5 tools)
EU ESG regulation download, ingestion, and semantic search.
| Tool | Description |
|---|---|
download_regulation |
Download regulation PDF from EUR-Lex |
download_all_regulations |
Batch download all configured regulations |
ingest_regulation |
Extract, parse articles, embed, store |
search_regulation_text |
Semantic search across regulation articles |
list_regulations |
List ingested regulations |
esg-scraper (5 tools)
ESG report discovery and download from the web.
| Tool | Description |
|---|---|
search_esg_reports |
Multi-engine search for ESG PDFs |
crawl_company_website |
Deep-crawl website for PDF links |
download_pdf |
Download PDF and store in GridFS |
get_scraping_status |
Check scrape job status |
cancel_scraping_job |
Cancel running scrape job |
esg-mcp-all (31 tools)
All tools from all servers in a single process.
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"esg-metrics": {
"command": "esg-metrics-extractor"
},
"esg-pdf": {
"command": "esg-pdf-processor"
},
"esg-vectors": {
"command": "esg-vector-store"
},
"esg-regulations": {
"command": "esg-regulations"
},
"esg-scraper": {
"command": "esg-scraper"
}
}
}
Or use the combined server for all tools:
{
"mcpServers": {
"esg": {
"command": "esg-mcp-all"
}
}
}
Optional: Scraper Dependencies
The scraper server requires Selenium for JavaScript-heavy sites:
pip install esg-mcp-servers[scraper]
Development
git clone https://github.com/freminder/esg-mcp-servers.git
cd esg-mcp-servers
pip install -e ".[scraper,dev]"
docker compose up -d
esg-mcp-migrate
License
MIT — see LICENSE.
Metadata
Release files for esg-mcp-servers 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| esg_mcp_servers-0.1.2.tar.gz | 67.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| esg_mcp_servers-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 157.2 kB
Release files / esg_mcp_servers-0.1.2.tar.gz
| Download URL | esg_mcp_servers-0.1.2.tar.gz |
|---|---|
| Size | 67.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d7c632ac114ea8231713cf325530dc764716453392c38eb05bde028119603182
|
|
BLAKE2b-256 checksum How to use checksums |
2886d4ba2d27add62528fad6ee8f26789d9cb4fa11a88322c3dc7f0be519a6db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / esg_mcp_servers-0.1.2-py3-none-any.whl
| Download URL | esg_mcp_servers-0.1.2-py3-none-any.whl |
|---|---|
| Size | 89.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60e777b9d3fc6f3c7585ecf24f1bb1e78e737d935422c932ac049538c8e9caf3
|
|
BLAKE2b-256 checksum How to use checksums |
9380756e47c4687d7a1696a644c05228ac7e25e9bd999bc19a4af0dc7495c1d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|