Skip to main content
Glama
stellar-expert-mcp

stellar-expert-mcp

by Bran18

StellarExpert MCP

Model Context Protocol server for the StellarExpert Open API (v1.4.0). It exposes Directory, Asset Info, and Ledger helper endpoints as tools so Cursor, Claude, and other MCP hosts can query the same public data your product documents.

The Open API is public, unauthenticated, and CORS-enabled. This server only wraps documented Open API routes — not undocumented explorer UI endpoints.

Upstream: https://api.stellar.expert
Docs: https://stellar.expert/openapi
Data license on the Open API: MIT

Tools

Tool

Upstream

list_directory_entries

GET /explorer/directory

get_directory_entry

GET /explorer/directory/{address}

list_directory_tags

GET /explorer/directory/tags

list_blocked_domains

GET /explorer/directory/blocked-domains

check_blocked_domain

GET /explorer/directory/blocked-domains/{domain}

list_assets

GET /explorer/{network}/asset

get_asset_rating

GET /explorer/{network}/asset/{asset}/rating

list_asset_holders

GET /explorer/{network}/asset/{asset}/holders

get_asset_holder_rank

GET /explorer/{network}/asset/{asset}/position/{account}

get_asset_supply

GET /explorer/{network}/asset/{asset}/supply

ledger_sequence_from_timestamp

GET /explorer/{network}/ledger/sequence-from-timestamp

ledger_timestamp_from_sequence

GET /explorer/{network}/ledger/timestamp-from-sequence

Resource: stellar-expert://docs
Prompts: check-address-safety, lookup-asset

network is public or testnet (default public, or STELLAR_EXPERT_NETWORK).

Related MCP server: Polymarket MCP

Rate limits

StellarExpert may return HTTP 429. The MCP surfaces that as a tool error and asks the model to cache or batch queries. For heavy client usage, cache on your side.

Requests send User-Agent: stellar-expert-mcp/0.1.0.

Requirements

  • Node.js 20+

Install (from a clone)

npm install
npm run build

Local stdio (until published to npm)

Cursor — project .cursor/mcp.json or ~/.cursor/mcp.json:

{
  "mcpServers": {
    "stellar-expert": {
      "command": "npx",
      "args": ["tsx", "/ABS/PATH/TO/stellar-expert-mcp/src/stdio.ts"]
    }
  }
}

Or after npm run build:

{
  "mcpServers": {
    "stellar-expert": {
      "command": "node",
      "args": ["/ABS/PATH/TO/stellar-expert-mcp/dist/stdio.js"]
    }
  }
}

After npm publish

{
  "mcpServers": {
    "stellar-expert": {
      "command": "npx",
      "args": ["-y", "stellar-expert-mcp"]
    }
  }
}

Claude Desktop / Claude Code (stdio)

{
  "mcpServers": {
    "stellar-expert": {
      "command": "npx",
      "args": ["tsx", "/ABS/PATH/TO/stellar-expert-mcp/src/stdio.ts"]
    }
  }
}

MCP Inspector

npm run inspector

Equivalent: npx @modelcontextprotocol/inspector npx tsx src/stdio.ts

Remote HTTP (clients)

Same createServer() factory over Streamable HTTP at /mcp.

npm run start:http

Defaults: http://127.0.0.1:3000/mcp. Health: GET /health.

Env

Default

Purpose

PORT

3000

Listen port

HOST

127.0.0.1

Bind address. Use 0.0.0.0 behind a reverse proxy

ALLOWED_HOSTS

(none)

Comma-separated Hostnames when binding non-localhost

STELLAR_EXPERT_API_BASE

https://api.stellar.expert

API origin

STELLAR_EXPERT_NETWORK

public

Default network for asset/ledger tools

Cursor remote config:

{
  "mcpServers": {
    "stellar-expert": {
      "url": "https://YOUR_HOST/mcp"
    }
  }
}

Smoke test:

curl -s -X POST http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

This v1 ships a Node process (npm run start:http). Host it on Fly, a VM, or similar; do not bind 0.0.0.0 without ALLOWED_HOSTS / a proxy.

Publishing to npm

npm is deprecating 2FA-bypass granular access tokens for account/package management (already in effect) and for direct publish (targeted January 2027). This repo does not use a long-lived NPM_TOKEN. Releases go through trusted publishing (OIDC).

First publish (the package does not exist yet — trusted publishers can only be attached after it does).

npm login --auth-type=web only signs you in. It is not package-publish 2FA. npm now requires account 2FA (or a bypass-2FA token, which we are not using) for every new package. --auth-type=web on npm publish will not open a second browser prompt if you are already logged in.

  1. Enable 2FA on the npm account (not GitHub): Two-Factor Authentication — authenticator app, auth-and-writes.

  2. Then, from this repo, use the 6-digit npm code (refreshes every 30s):

npm publish --access public --otp=123456

npx stellar-expert-mcp returning 404 is expected until this first publish succeeds.

Then on npmjs.com → stellar-expert-mcp → Settings → Trusted Publisher:

  • Organization or user: Bran18

  • Repository: stellar-expert-mcp

  • Workflow filename: publish.yml

  • Allow npm publish (and/or npm stage publish)

Later versions: bump version in package.json, commit, tag, push:

git tag v0.1.1
git push origin v0.1.1

.github/workflows/publish.yml publishes from GitHub-hosted runners with id-token: write. No bypass-2FA token.

Provenance attestations require a public GitHub repo. This repository is private, so npm will publish without provenance until you change visibility.

Development

npm start          # stdio
npm run start:http
npm run typecheck
npm run verify     # live Open API + in-process MCP handler

Attribution

API data and schema: StellarExpert. This MCP is a DevRel wrapper around the public Open API; it is not a substitute for on-chain source of truth (Horizon / RPC). Asset ratings are technical activity scores, not investment advice.

Available Tools

12 tools
check_blocked_domainCheck blocked domainA

Check whether a domain (or its registrable parent) is on the StellarExpert blocked-domains list. Use before linking or recommending a Stellar-related URL.

Inputs: domain (required).

get_asset_holder_rankGet asset holder rankA

Get an account’s relative balance rank among holders of an asset (position and total holder count).

Inputs: asset (required), account (required), network.

get_asset_ratingGet asset ratingA

Fetch StellarExpert composite technical rating for one asset (age, trades, payments, trustlines, volume7d, interoperability, liquidity, average). Ledger-activity based; not financial advice.

Inputs: asset (required), network.

get_asset_supplyGet asset supplyB

Return total issued supply for an asset as plain text (useful for aggregators and dashboards). Native XLM and CODE-ISSUER identifiers are accepted.

Inputs: asset (required), network.

get_directory_entryGet Directory entryA

Look up one Stellar account in the Directory. Returns name, domain, and tags when listed. An empty object (or 404) means the account is not in the Directory — it may still exist on-chain.

Inputs: address (required).

ledger_sequence_from_timestampLedger sequence from timestampA

Resolve the ledger sequence whose close time is equal to or before the given timestamp (UNIX seconds or RFC 3339). Returns 404 if the time is before the first ledger or in the future.

Inputs: timestamp (required), network.

ledger_timestamp_from_sequenceLedger timestamp from sequenceB

Resolve the close timestamp (UNIX + ISO date) for a given ledger sequence.

Inputs: sequence (required), network.

list_asset_holdersList asset holdersA

List accounts holding a non-zero balance of an asset, sorted by balance. Zero-balance trustlines are omitted. Horizon-style paging.

Inputs: asset (required), limit, order, cursor, +1 more.

list_assetsList assetsA

List Stellar assets with on-chain stats and StellarExpert composite rating. Search by code, issuer, home domain, or stellar.toml metadata. Sort by rating (default), created, payments, trades, trustlines, volume, or volume7d. Use to find or rank assets; rating is technical (age, activity, liquidity, SEP metadata), not an investment recommendation.

Inputs: sort, limit, order, cursor, +2 more.

list_blocked_domainsList blocked domainsA

List domains reported for fraudulent Stellar-related activity. Paginated Horizon-style response. Prefer check_blocked_domain for a single hostname.

Inputs: limit, order, cursor, search.

list_directory_entriesList Directory entriesA

Search the StellarExpert curated Directory of well-known accounts. Filter by address list, tags (exchange, anchor, issuer, wallet, custodian, malicious, unsafe, personal, sdf, memo-required, airdrop, defi), or a search string (name/domain/address, min 5 chars). Use for reverse lookups, scam checks (tag malicious/unsafe), and labeling counterparties.

Inputs: tag, limit, order, cursor, +2 more.

list_directory_tagsList Directory tagsA

List all Directory tag categories (name + description) used to classify well-known and reported accounts.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 12 tools

    Disambiguation4/5

    Most tools target clearly distinct resources: directory (tags/entries/single lookup), blocked domains (list/check), assets (list/rating/supply/holders/rank), and ledger-time conversions. Slight overlap exists between list_directory_entries and get_directory_entry, and between list_assets and get_asset_rating, but descriptions explicitly steer the agent toward the right tool (e.g. 'prefer check_blocked_domain for a single hostname').

    Naming Consistency4/5

    Almost all tools follow a verb_noun snake_case pattern (list_*, get_*, check_*), with clear parallelism between paired tools (list/check blocked domains, list/get directory entries). The two ledger tools deviate by using a noun-based construction (ledger_sequence_from_timestamp / ledger_timestamp_from_sequence), though they are internally consistent with each other.

    Tool Count5/5

    Twelve tools is well within a comfortable range and each maps to a distinct lookup operation in the StellarExpert data domain. No filler or redundant tools are apparent.

    Completeness4/5

    The surface covers directory lookup, blocked-domain checks, asset discovery/rating/supply/holders, and ledger-time conversion comprehensively for those subdomains. Gaps exist for other plausible StellarExpert data (e.g. trade/market history, payments, account operation listings), but agents can work around most of these via the existing asset and directory tools.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables MCP hosts like Claude and Cursor to query Polymarket data via Falcon AI's external API, including market listings, order books, and trader stats.
      MIT
    • F
      license
      A
      quality
      D
      maintenance
      Exposes two MCP tools (discover and execute) that enable agents to query an OpenAPI schema via natural language and execute matched API operations.
      2
      -
    • A
      license
      B
      quality
      B
      maintenance
      Exposes 17 read-only tools from six XRPL-Utilities services so AI agents can access XRPL wallet analysis, signal feeds, macro telemetry, permissioned asset stacks, RWA tracking, and ETF flow data.
      41
      7,210 npm
      MIT