프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Monexa

제작자: emilijan-koteski버전 2.0.0i★ 0i클라우드에서 실행
레지스트리 이름io.github.emilijan-koteski/monexa

설치

개요

제작자가 쓴 설명(영어 원문)

Track expenses and income, recurring payments and spending trends in Monexa from any AI assistant.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 클라우드에서 실행
  • 전송 방식: Streamable HTTP
  • 카테고리: 회계, 재무 및 세금

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 4개 중 4개 통과
  • 제작자의 서버에서 실행돼요. 내가 요청한 내용은 제작자의 서버를 거쳐요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

필요한 것

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:

  1. Settings → Connectors 열기
  2. Add custom connector 누르기
  3. 아래 주소를 붙여 넣고 Add 누르기
  4. 로그인하라고 하면 제작자의 서비스에 로그인하기
SettingsConnectors1+ Add2https://…3Connect4
https://mcp.monexa.world/mcp

터미널에서 이 명령어를 실행하세요

claude mcp add --transport http monexa https://mcp.monexa.world/mcp

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "monexa": {
      "url": "https://mcp.monexa.world/mcp"
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "monexa": {
      "type": "http",
      "url": "https://mcp.monexa.world/mcp"
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:

  1. 웹에서 ChatGPT 열기 → Settings → Connectors (Apps)
  2. Create 또는 Add 누르기(일부 요금제는 먼저 Advanced에서 Developer mode를 켜야 해요)
  3. 아래 주소를 붙여 넣고 이름을 정한 뒤 저장하기
  4. 로그인하라고 하면 제작자의 서비스에 로그인하기
SettingsConnectors1+ Create2https://…3Connect4
https://mcp.monexa.world/mcp

메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

어떤 앱에서 쓸 수 있나요

이 서버의 연결 방식과 각 앱의 공식 문서를 바탕으로 했어요. 2026년 11월 10일 확인.

인터넷으로 연결하는 앱

ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast

모든 앱과 장단점 →

할 수 있는 일

서버가 도구 목록을 보여 주기 전에 로그인을 요구해요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 11일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 emilijan-koteski 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • ✓ 통과

    계속 관리되고 있음

    코드 마지막 변경: 9일 전

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • ✓ 통과

    엔드포인트 응답

    656ms 만에 응답(HTTP 401)

  • ✓ 통과

    OAuth로 로그인

    OAuth 로그인을 지원한다고 밝혀서, AI 앱이 로그인 화면으로 안내해 줘요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요

사용자 리뷰

아직 리뷰가 없어요

회계, 재무 및 세금 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 3108개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 3108개 중 56%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 3108개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Monexa, 안전한가요?

해당하는 기본 점검 4개 중 4개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 9일 전 변경됐고, 최신 버전(2.0.0)은 24일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: CCXT, Finance Toolkit, AKQuant

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:↓ 주간 다운로드i★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

CCXT

Official CCXT MCP server - Market data and trading across 100+ exchanges and prediction markets

제작자: ccxt널리 사용됨↓ 667/주★ 4.5만2개월 전 업데이트

내 컴퓨터에서 실행

Finance Toolkit

500+ transparent financial methods calculated from raw statements, not third-party endpoints.

제작자: JerBouma널리 사용됨↓ 1.6만/주★ 5.5천어제 업데이트

컴퓨터 또는 클라우드

AKQuant

Write and backtest trading strategies with AKQuant: API lookup, strategy checks, backtest runs

제작자: akfamily널리 사용됨↓ 3.3천/주★ 2.6천그저께 업데이트

내 컴퓨터에서 실행

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Monexa MCP server

Remote Model Context Protocol server for Monexa, served over Streamable HTTP at https://mcp.monexa.world/mcp. It lets AI assistants read and manage a user's records, categories, payment methods, recurring expenses, trend reports and settings.

This README is for developers and self-hosters. To connect an assistant, see the user guide. The tools are listed in TOOLS.md. Released under the MIT license.

How it works

  1. An AI app connects with a Monexa OAuth access token (mnx_at_…, obtained through the OAuth flow the backend serves) or a personal access token (mnx_pat_…) in Authorization: Bearer.
  2. The server exchanges the bearer at the backend (RFC 8693, POST /oauth/token, authenticated as the MCP client) for a short-lived delegated JWT. Successful exchanges are cached in memory, keyed by a hash of the token, for at most 4 minutes, and tokens the backend rejects are answered from memory for 30 seconds.
  3. Each tool call runs with that JWT against the Monexa REST API (MONEXA_API_URL). The backend only lets delegated tokens reach an allowlist of routes (internal/middlewares/delegated_access.go) and checks the monexa.read / monexa.write scope.
  4. The server advertises the backend as its authorization server through protected resource metadata, so OAuth clients discover where to sign in. It mirrors the backend's metadata document, fetched at startup.
  5. The server is stateless and keeps no user data. Every request builds its own MCP server instance.

Environment

Set these on the service. The server refuses to start with a clear message when one is missing or malformed.

VariableRequiredMust match backendDescription
PORTNoListen port, default 8080.
MCP_PUBLIC_URLYesMCP_RESOURCE_URL (this value plus /mcp)Public origin of this server, for example https://mcp.monexa.world. No path. http is only accepted for localhost, 127.0.0.1 and [::1].
MONEXA_OAUTH_ISSUERYesOAUTH_ISSUER_URLPublic OAuth issuer, for example https://api.monexa.world. A bare origin without trailing slash; it is compared verbatim with the issuer in the backend's metadata.
MONEXA_API_URLYesBackend base URL reachable from this service, for example http://backend:8080. Not necessarily public.
MCP_CLIENT_IDYesMCP_CLIENT_IDThe OAuth client the backend recognizes for token exchange.
MCP_CLIENT_SECRETYesMCP_CLIENT_SECRETAt least 32 characters. Generate it with openssl rand -hex 32.
ALLOWED_HOSTSIn productionComma-separated hostnames accepted in the Host header; must include the MCP_PUBLIC_URL host. Defaults to localhost,127.0.0.1 outside production (NODE_ENV=production makes it required).
OPENAI_APPS_CHALLENGE_TOKENNoServed as plain text at /.well-known/openai-apps-challenge for OpenAI domain verification; the route is absent when unset.

The backend side of the same setup is OAUTH_ISSUER_URL, MCP_RESOURCE_URL, MCP_CLIENT_ID and MCP_CLIENT_SECRET, optionally OAUTH_ACCESS_TOKEN_TTL (default 1h) and OAUTH_REFRESH_TOKEN_TTL (default 2160h). The backend needs all four or none, and serves no OAuth routes without them. Deployment details are in docs/DEPLOYMENT.md.

Routes

RouteDescription
POST /mcpThe MCP endpoint. A bearer token is required.
GET /.well-known/oauth-protected-resource/mcpProtected resource metadata.
GET /.well-known/oauth-authorization-serverMirror of the backend's authorization server metadata.
GET /.well-known/openai-apps-challengeOpenAI domain verification token, when configured.
GET /healthz200 {"status":"ok","version":…} once the backend's metadata has loaded, 503 before. It is not subject to host validation, so container probes on 127.0.0.1 work.
GET /icon.svg, GET /icon.pngThe Monexa icon advertised in serverInfo.icons.

Until the backend's metadata has loaded, every route except /healthz answers 503 with Retry-After. At startup the server fetches ${MONEXA_API_URL}/.well-known/oauth-authorization-server up to 30 times, 2 seconds apart, and exits with code 1 if it never succeeds or if the issuer differs from MONEXA_OAUTH_ISSUER. A backend outage or a rejected client secret reaches clients as 503, never 401, so they do not fall into a re-authentication loop.

Local development

Requires Node 22 and a running backend with OAuth enabled. Start the backend with

OAUTH_ISSUER_URL=http://localhost:9000

MCP_RESOURCE_URL=http://localhost:3001/mcp MCP_CLIENT_ID=monexa-mcp MCP_CLIENT_SECRET=

in its environment, then run the MCP server with the same client credentials. npm run dev loads mcp-server/.env when it exists (git-ignored), so put them there:

PORT=3001

MCP_PUBLIC_URL=http://localhost:3001 MONEXA_OAUTH_ISSUER=http://localhost:9000 MONEXA_API_URL=http://localhost:9000 MCP_CLIENT_ID=monexa-mcp MCP_CLIENT_SECRET=

cd mcp-server

npm install npm run dev

Point the MCP Inspector (npx @modelcontextprotocol/inspector) at http://localhost:3001/mcp and sign in through OAuth, or paste a personal access token created in the web app under Settings, Connected apps.

Scripts

ScriptWhat it does
npm run devRuns src/index.ts with tsx watch.
npm run buildCompiles src to dist/ with tsc -p tsconfig.build.json.
npm startRuns the compiled server, node dist/index.js.
npm run typechecktsc --noEmit over src, scripts and test.
npm run checkThe drift guard, described below.
npm run docsRegenerates TOOLS.md from the tool registry.
npm testRuns the vitest suite in test/. Tests are local-only by project policy: they are never committed and CI does not run them.
The drift guard

npm run check exits 1 with readable messages unless all of these hold:

  • Every route in ../docs/api-routes.json (the backend's route inventory, written by go run ./cmd/routes -write) is covered by exactly one tool's covers list or listed in src/tools/excluded.ts with a reason, and every covers or excluded entry exists in the inventory.
  • Every route a tool covers is marked "delegated": true in the inventory, which means the backend allowlist in internal/middlewares/delegated_access.go lets connected apps call it.
  • Tool names are unique snake_case of at most 64 characters, and each tool has a title and the four annotation hints, with openWorldHint: false.
  • Tools with readOnlyHint: true cover only GET routes.
  • TOOLS.md equals what npm run docs generates.
  • server.json has the same version as package.json and a description of at most 100 characters.

When the backend gains a route or its delegated allowlist changes, go run ./cmd/routes -check fails first. Run it with -write, then add a tool that covers the route or an entry in excluded.ts, run npm run docs, and commit the results together.

Tools

22 tools cover 24 of the backend's 65 API routes; the other 41 are intentionally excluded, such as sign-in, session and account-security routes, OAuth endpoints, legal documents, data export and trend report editing (see src/tools/excluded.ts and the end of TOOLS.md). Tool names are snake_case, input names are camelCase (for example includeDetails), and inputs are validated with zod before any API call. Every tool declares title, readOnlyHint, destructiveHint, idempotentHint and openWorldHint: false, and returns both structuredContent and a JSON text block.

Operations

  • Logging. One JSON line per /mcp request with the HTTP and JSON-RPC method, tool name, status, duration in milliseconds and the OAuth client ID. Tokens and tool arguments are never logged.
  • Shutdown. On SIGTERM or SIGINT the server stops accepting connections and lets in-flight requests finish. It exits 0 when they are done and forces exit 1 after 8 seconds.
  • Container. The Dockerfile builds a node:22-alpine image that runs as a non-root user and probes /healthz; the start period allows for the metadata retries.

Versioning and releases

The version in package.json follows SemVer; server.json must carry the same version, and npm run check enforces it.

  • Major: a tool is removed or renamed, or a tool's schema changes incompatibly.
  • Minor: a new tool or a new optional parameter.
  • Patch: fixes with no schema change.

Record changes under ## [Unreleased] in CHANGELOG.md (Keep a Changelog) and move them under the new version heading when releasing. Set a new tool's since to the version that introduces it.

To release, bump package.json, server.json and the changelog, merge to master, then push the tag mcp-vX.Y.Z (for example git tag mcp-v2.0.0 && git push origin mcp-v2.0.0). CI pushes the image ghcr.io/emilijan-koteski/monexa-mcp:vX.Y.Z and publishes server.json to the official MCP Registry as io.github.emilijan-koteski/monexa. Merging to master deploys the sha- image to production independently of tags.

Support

Questions and bug reports: emilijankoteski@pm.me or an issue on GitHub.