ESG Hub MCP Server

com.ascent-partnersPublished by ascent-partners.comv1.4.3Updated Oct 24, 2026

ESG knowledge base for AI agents: hybrid search, glossary, frameworks, industries, graph traversal.

The publisher's own server: Coso Mcp

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Connects an assistant to the ESG Hub encyclopedia so it can search, read and cross-reference ESG articles, glossary terms, frameworks and industries.

What you can do
  • Search articles and curated external resources by exact keyword or by hybrid semantic search
  • Read a full article by permalink, slug or record ID, and browse articles by section, pillar or title
  • Look up glossary terms and list the glossary, reporting frameworks and industry taxonomy
  • Discover filter values and counts, and traverse one hop of the knowledge graph from a page
  • Check server health, version and API base
When to use it
Useful when an assistant needs grounded ESG reference material: standards such as GRI, IFRS S1/S2, TCFD, TNFD or ESRS, sustainability reporting concepts, or definitions and authoritative external sources. It suits research and drafting work where answers should cite a curated knowledge base rather than the open web.
Requirements
Either the remote endpoint at esg-hub.ascent.partners or the local npm package @simonmak-ascent/esg-hub-mcp over stdio. No authentication, API keys, headers or environment variables are declared; network access to the ESG Hub API is needed.
Before you install
The knowledge base is read-only, so nothing is written or deleted. Queries are sent to a third-party service, and the README notes the site's AI search also uses DeepSeek and Brave Search for enrichment. Content is a curated encyclopedia, not regulatory advice, so verify standards against official sources.

Installation

In SourceWeft

  1. Open ESG Hub MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.ascent-partners%2Fesg-hub/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "esg-hub": {
      "type": "http",
      "url": "https://esg-hub.ascent.partners/api/mcp"
    }
  }
}

README

ESG Hub

An open-access encyclopedia of Environmental, Social, and Governance (ESG) knowledge by Ascent Partners Foundation — 350+ articles, 240+ curated resources, books, courses, AI search, a public REST API, and an MCP server. Available in English, Simplified Chinese, and Traditional Chinese (Hong Kong).

[CI] [MCP Registry] [Glama] [License: MIT (code)] [Content: CC BY-SA 4.0]

Live site: esg-hub.ascent.partners

Overview

  • Knowledge base — 350+ ESG articles across standards (GRI, IFRS S1/S2, TCFD, TNFD, ESRS), regulations, frameworks, ratings, and regional (HK/APAC) guidance
  • AI search — ask questions in natural language; answers grounded in the knowledge base (SurrealDB BM25 + vector search, DeepSeek, Brave Search across authoritative ESG domains)
  • Public REST API — open access to all content: /api/v1
  • MCP server — connect AI agents directly: @esg-hub/mcp-server
  • Learning resources — free courses, books, and a curated video library
  • i18n — English, Simplified Chinese (zh), Traditional Chinese — Hong Kong (hk)

Architecture

mermaid
flowchart TB  U["User / AI agent"] --> WEB["Next.js 16 App Router · React 19<br/>next-intl (en / zh / hk)"]  WEB --> DB[("SurrealDB Cloud<br/>BM25 + vector search")]  WEB --> AI["DeepSeek + Brave Search<br/>grounded answers"]  WEB --> API["Public REST API · /api/v1"]  API --> MCP["MCP server<br/>@simonmak-ascent/esg-hub-mcp"]  V["APG ALB · esg-hub.ascent-partners.com"] --> WEB

How a query is answered

mermaid
sequenceDiagram  autonumber  actor U as User  participant W as Next.js app (App Router)  participant API as /api/ai-search · /api/ai-chat  participant S as search.ts  participant DB as SurrealDB (page · section · embedding)  participant AI as DeepSeek  participant X as Brave / OpenAlex  U->>W: ask a question  W->>API: POST query (+ locale)  API->>S: search(query)  S->>DB: BM25 keyword + vector (embedding) hybrid ranking  DB-->>S: ranked pages / sections + citations  API->>AI: synthesize answer from ranked context  API->>X: enrich (web + research)  X-->>API: references  API-->>W: streamed answer + citations  W-->>U: grounded response

Data model

mermaid
erDiagram  PAGE ||--o{ SECTION : contains  SECTION ||--o{ EMBEDDING : "vectorised as"  FRAMEWORK ||--o{ PAGE : classifies  INDUSTRY ||--o{ PAGE : tags  TERM ||--o{ PAGE : defines  PAGE {    string id    string slug    string title    string lang  }  SECTION {    string id    string heading    text body  }  EMBEDDING {    vector vector    string model  }

FRAMEWORK, INDUSTRY and TERM are the facets exposed by the /api/v1/* REST resources; page, section and embedding are the core SurrealDB tables.

Deployment

Production runs on the ecs-01/02/03 HA fleet as the digest-pinned container declared in container.json — the image is the deployable, not a release tree on a node. The fleet runs it as a container on :3210, and no node runs a routing web server. The ALB terminates TLS and routes esg-hub.ascent.partners to the container's port. The former Vercel project was retired. See apg-infra for the fleet deployment.

mermaid
flowchart LR  DEV["git push / PR"] --> CI["GitHub Actions<br/>lint · test · e2e · health-check"]  CI -->|merge to main| IMG["digest-pinned image<br/>container.json"]  IMG -->|the image is the deployable| PROD["container · :3210"]  ALB["APG ALB · TLS termination"] -->|esg-hub.ascent.partners| PROD  PROD --> SURF["/api/mcp · /api/v1<br/>MCP + REST surfaces"]

Tech Stack

Next.js 16 (App Router, React 19) · SurrealDB Cloud · Tailwind CSS v4 · next-intl · Vitest + Playwright · APG fleet (containerised)

Quick Start (≤ 5 minutes)

Fastest path — nothing to install: use the live site and the open API.

Run a local copy:

bash
git clone https://github.com/simonmak-ascent/esg-hub.gitcd esg-hubpnpm install        # note: requires sibling repo ../tool_package (private)cp .env.example .env  # fill in your own valuespnpm dev

Useful commands: pnpm lint · npx tsc --noEmit · npx vitest run · pnpm verify:db

Note: the app renders content from a SurrealDB database — you need your own instance and content to run a full copy. The public site and API are freely accessible without running anything.

API & MCP

  • REST API: open, no auth — GET /api/v1/pages, /api/v1/search?q=..., /api/v1/resources, /api/v1/meta (docs)
  • MCP server: see mcp-server/ — gives AI agents tools to search and read the knowledge base

Contributing

Use with Context7

Up-to-date ESG Hub documentation is indexed on Context7, so coding agents can pull it into context on demand. With the Context7 MCP server or ctx7 CLI installed, name the library in your prompt:

text
use library /simonmak-ascent/esg-hub for API and docs

License

  • Code: MIT
  • Encyclopedia content: CC BY-SA 4.0 by Ascent Partners Foundation

An Ascent Partners Foundation project.

If this saves you time, a ⭐ on GitHub helps others find it.

Source: README.md at commit 92db711

Tools

12

get_server_info

Get Server Info

Use this first to confirm the ESG Hub MCP server is reachable and see its version and API base. It performs one liveness round-trip and returns only server metadata — name, version, API base, tool_count, and healthy — and never fails on an unreachable API: it returns healthy=false rather than an error. For sections, pillars, source domains, or totals use get_esg_metadata.

Takes no parameters.

search_esg

Search ESG (keyword)

Exact keyword (BM25) search across ESG Hub articles and curated external resources. Use when the user supplies a specific term, identifier, or phrase (e.g., 'GRI 305', 'Scope 3'); for paraphrased or conceptual questions prefer search_content, which adds semantic similarity. Terms are matched individually, not as one exact phrase, and `source` narrows to 'pages' (ESG Hub articles) or 'external' (curated third-party URLs). Returns one ranked page of up to `limit` (max 50) items — there is no pagination, so raise `limit` to widen; zero matches returns an empty item list, not an error. Reads are cached ~2 minutes and rate-limited per IP; a 5xx means the API is redeploying — retry shortly.

Parameterslimitqueryrequiredsource

search_content

Search ESG (hybrid)

Hybrid search that fuses 384-dim semantic similarity with BM25 and ESG re-ranking across ESG Hub articles and external resources. Use for conceptual or paraphrased questions — natural-language phrases work better than single tokens because `query` is embedded; when the user gives an exact identifier or phrase prefer the cheaper search_esg. `query` must be non-empty and `limit` defaults to 10 and is capped at 50. Returns one ranked page of up to `limit` items, each carrying a fused relevance score (higher is better); there is no pagination, so raise `limit` to widen, and unlike search_esg there is no `source` filter. Zero matches returns an empty item list, not an error. Cached ~2 minutes; rate-limited per IP; retry on 5xx.

Parameterslimitqueryrequired

get_esg_page

Get ESG Article

Read one ESG Hub article in full, addressed by permalink (e.g., 'standards/gri-101'), bare slug, or record ID ('page:abc123'). Use it once search_esg, search_content, or list_esg_pages has returned an identifier; to fetch a page's neighbours rather than its content use get_related. Returns the complete article body plus section, pillar, keywords, and canonical URL. It resolves only `page` records — a resource URL returns NOT_FOUND — and a redirect-only record resolves to its target; an unknown identifier returns NOT_FOUND. Cached ~10 minutes; rate-limited per IP; retry on 5xx.

Parameterspage_idrequired

list_esg_pages

List ESG Articles

Enumerate ESG Hub articles, optionally filtered by `section`, `pillar`, or a title substring (`query` — an exact substring, not fuzzy). Use it to browse a whole section; to find articles by meaning use search_content. Results are ordered by section then title and returned one page at a time: pass the response's `next_offset` back as `offset` until `has_more` is false. `section` and `pillar` values must be taken from get_esg_metadata, and `offset` is a raw row count so advance it by `limit`; `limit` caps at 100 (default 20). A filter that matches nothing, or an `offset` past the end, returns an empty item list with `has_more=false`. Cached ~5 minutes; rate-limited per IP; retry on 5xx.

Parameterslimitqueryoffsetpillarsection

list_esg_resources

List External Resources

Enumerate curated external ESG resources (standards bodies, regulators, tools, databases) with their source URLs, optionally filtered by exact source `domain` or a title substring (`query` — an exact substring, not fuzzy). Use it to assemble authoritative references; for ESG Hub's own articles use list_esg_pages. Results are ordered by title and paged: pass `next_offset` back as `offset`, advancing it by `limit` (a raw row count). `domain` must be a host from get_esg_metadata's domain list; `limit` caps at 100 (default 20). A filter that matches nothing, or an `offset` past the end, returns an empty item list with `has_more=false`. Cached ~5 minutes; rate-limited per IP; retry on 5xx.

Parameterslimitquerydomainoffset

get_esg_metadata

Get Knowledge Base Stats

Discover the filter vocabulary for the knowledge base: total counts plus the exact `section`, `pillar`, and source-`domain` values with their counts. Call it before list_esg_pages or list_esg_resources so filters match real values; for server version and health use get_server_info. It takes no parameters, returns a single object (never paginated), and the lists are seeded reference values that change only on deploy, so they can be cached within a session. Cached ~10 minutes; rate-limited per IP; retry on 5xx.

Takes no parameters.

get_term

Get Glossary Term

Look up one glossary term by record ID ('term:abc123'), permalink, or exact name and return its full definition and facets. Use it when the user asks 'what is <term>'; to find terms by topic, or across all content, use search_esg or search_content, and to survey the glossary use list_terms. Name matching is exact (case-insensitive) with no fuzzy or partial matching, and it returns a single term, never a list. The `definition` field is the authoritative text and `facets` carries the topic/content_type classification; an unknown identifier returns NOT_FOUND. Cached ~10 minutes; rate-limited per IP; retry on 5xx.

Parametersterm_idrequired

list_frameworks

List Reporting Frameworks

Enumerate the ESG reporting frameworks and standards the knowledge base covers (GRI, SASB/ISSB, TCFD, ESRS, CDP, TNFD, …), with each framework's abbreviation, description, and official website. Use it to discover coverage; for the ESG Hub articles that explain a standard use list_esg_pages with section='standards'. Results are ordered by name and paged: pass `next_offset` back as `offset`, a raw row count so advance it by `limit`; `limit` defaults to 20 and is capped at 100. An `offset` past the end returns an empty `items` list with `has_more=false`. Cached ~10 minutes; rate-limited per IP; retry on 5xx.

Parameterslimitoffset

list_industries

List Industries

Return the ESG Hub industry taxonomy (IFRS/SASB-style): every industry with its stable `industry_id`, English/Chinese names, and the `sector_id` it belongs to. Use it to obtain valid industry values for tag_content or to group coverage by sector; for article sections and source domains use get_esg_metadata. It takes no parameters and returns the complete taxonomy in one response (no pagination). The taxonomy is seeded reference data, not derived from articles, so it is stable across sessions and cached ~10 minutes; rate-limited per IP; retry on 5xx.

Takes no parameters.

list_terms

List Glossary Terms

Enumerate glossary terms, optionally filtered by an exact name substring (`query` — case-insensitive, not fuzzy). Use it to survey the glossary or page through terminology; to fetch one term's definition use get_term, and to search all content use search_esg or search_content. Results are ordered by name and paged: pass `next_offset` back as `offset` (a raw row count, so advance it by `limit`); `limit` defaults to 20 and is capped at 100. A query that matches nothing, or an `offset` past the end, returns an empty item list with `has_more=false`. Cached ~10 minutes; rate-limited per IP; retry on 5xx.

Parameterslimitqueryoffset

Version history

1
  1. v1.4.3LatestOct 14, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Ascent-Partners integrations