@axprism/mcp
v0.2.0
Published
Model Context Protocol (MCP) server for the AxPrism API — Shariah compliance, normalized financials, company profiles, screening and full-text filing search as AI tools for Cursor, Claude Desktop and ChatGPT.
Maintainers
Readme
AxPrism MCP Server
A Model Context Protocol server that exposes the AxPrism API as tools for AI assistants — Cursor, Claude Desktop, ChatGPT, and any MCP-compatible client.
AxPrism is an institutional XBRL platform: normalized SEC EDGAR + ESEF + EDINET + Tadawul filings, with first-class AAOIFI Shariah compliance screening across five rulesets. This server lets an LLM call the API directly to answer questions like "Is Visa halal under AAOIFI?", "Show Apple's latest income statement", or "Screen the S&P universe for halal companies with revenue over $10B."
Tools
| Tool | AxPrism endpoint | What it does |
|------|------------------|--------------|
| get_compliance | GET /api/v1/compliance/{ticker} | Shariah verdict (halal / haram / questionable) for a ticker, with ratios + reasoning. |
| screen_compliance | POST /api/v1/compliance/screen | Batch compliance verdicts for up to 50 tickers in one call. |
| get_financials | GET /api/v1/financials/{ticker} | Normalized income statement / balance sheet / cash flow (US, EU, JP, MY). |
| get_profile | GET /api/v1/profile/{ticker} | Company metadata: name, CIK, ISIN, exchange, SIC, activity screen. |
| screen_securities | GET /api/v1/screener | Filter a universe by revenue, market cap, ratios, and Shariah verdict. |
| search_filings | GET /api/v1/text/search | Full-text search across filing text blocks / MD&A / footnotes. |
| search_symbols | GET /api/v1/symbols | Resolve a company name or partial ticker to covered symbols. |
| get_pricing | GET /api/v1/pricing | Public pricing tiers and limits (no API key required). |
| list_rulesets | GET /api/v1/rulesets | Supported Shariah standards (aaoifi, msci, dji, ftse, saudi) and thresholds. |
Requirements
- Node.js >= 18
Install & build
cd mcp
npm install
npm run buildThis compiles TypeScript to dist/. The executable entry point is dist/index.js (also exposed as the axprism-mcp bin).
Configuration
The server reads two environment variables:
| Variable | Default | Description |
|----------|---------|-------------|
| AXPRISM_API_KEY | axmd_demo_try_axprism_2024 (public demo key) | Sent as the X-API-Key header. |
| AXPRISM_BASE_URL | https://axprism.com | API origin. |
The demo key works out of the box for trying it out. Get your own key at axprism.com.
Run it
AXPRISM_API_KEY=axmd_demo_try_axprism_2024 node dist/index.jsThe server speaks MCP over stdio, so you normally don't run it by hand — your MCP client launches it. Configs below.
Quick smoke test
A standalone test performs the full MCP handshake and calls the live API with the demo key:
npm run build && node smoke-test.mjsExpected: 9 tools listed, AAPL → halal, V → haram.
Client setup (copy-paste)
Replace
/ABSOLUTE/PATH/TO/mcpwith the absolute path to this directory, and swap in your own key for production.Note:
@axprism/mcpis not on npm yet, so thenpx @axprism/mcpform below does not work today — use the local build (node .../dist/index.js) instructions. Once the package is published (see Publishing), you can drop the path and switch tonpx @axprism/mcp.
Cursor
Global: ~/.cursor/mcp.json — or per-project: .cursor/mcp.json
Using this local build:
{
"mcpServers": {
"axprism": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp/dist/index.js"],
"env": {
"AXPRISM_API_KEY": "axmd_demo_try_axprism_2024"
}
}
}
}Using the published npm package (coming soon — not on npm yet):
{
"mcpServers": {
"axprism": {
"command": "npx",
"args": ["-y", "@axprism/mcp"],
"env": {
"AXPRISM_API_KEY": "axmd_demo_try_axprism_2024"
}
}
}
}Then in Cursor: Settings → MCP → confirm axprism shows the 9 tools as enabled.
Claude Desktop
Edit claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Using the local build (works today):
{
"mcpServers": {
"axprism": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/mcp/dist/index.js"],
"env": {
"AXPRISM_API_KEY": "axmd_demo_try_axprism_2024"
}
}
}
}Once published to npm (coming soon), you can instead use "command": "npx", "args": ["-y", "@axprism/mcp"]. Restart Claude Desktop, then look for the tools/plug icon.
Generic stdio client
Any MCP client that supports stdio transport can launch:
command: node
args: ["/ABSOLUTE/PATH/TO/mcp/dist/index.js"]
env: { "AXPRISM_API_KEY": "axmd_demo_try_axprism_2024" }ChatGPT
ChatGPT supports MCP connectors in Developer mode / via the desktop app's connector settings. Point a new stdio connector at the same command / args / env shown above. (Exact UI varies by ChatGPT release.)
Publishing @axprism/mcp to npm
This package is not published automatically — you publish it under your own npm account/org. Steps:
Claim the scope/name.
@axprismis a scoped name, so you need an npm org (or user) namedaxprism. Create the org at https://www.npmjs.com/org/create (free for public packages), or change"name"inpackage.jsonto one you own.Log in / get a token.
- Interactive:
npm login(follow the browser/OTP prompt). - Or create an Automation access token at https://www.npmjs.com/settings/~/tokens (type: Automation or Publish), then:
export NPM_TOKEN=npm_xxxxxxxxxxxxxxxxxxxxxxxxxxxx echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
- Interactive:
Build & verify the tarball contents:
npm run build npm pack --dry-run # should list dist/, README.md, LICENSE onlyPublish (scoped packages must be explicitly public):
npm publish --access publicVerify & bump. Confirm at
https://www.npmjs.com/package/@axprism/mcp. For subsequent releases, bump the version (npm version patch|minor|major) before publishing again.
After publishing, users can skip the local build entirely and use the npx @axprism/mcp config shown above.
License
MIT — see LICENSE.
