@moonbanking/mcp-server 1.2.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/npm-publish.yml +122 -23
- package/README.md +71 -19
- package/chatgpt.md +87 -0
- package/claude-code.md +78 -0
- package/claude.md +99 -0
- package/cursor.md +90 -0
- package/devin-desktop.md +78 -0
- package/dist/index.js +238 -4
- package/dist/index.js.map +1 -1
- package/grok.md +75 -0
- package/mcp-inspector.md +64 -0
- package/package.json +1 -1
- package/vscode.md +79 -0
- package/zed.md +76 -0
|
@@ -169,39 +169,124 @@ jobs:
|
|
|
169
169
|
token: ${{ secrets.SYNC_DOCS_TOKEN }}
|
|
170
170
|
path: moonbanking
|
|
171
171
|
|
|
172
|
-
- name: Update documentation
|
|
172
|
+
- name: Update main MCP documentation
|
|
173
|
+
shell: bash
|
|
173
174
|
run: |
|
|
174
175
|
# Create the target directory if it doesn't exist
|
|
175
176
|
mkdir -p moonbanking/apps/docs/app/mcp
|
|
176
|
-
|
|
177
|
+
|
|
177
178
|
# Create the new content with prepended metadata
|
|
178
179
|
cat > moonbanking/apps/docs/app/mcp/page.mdx << 'EOF'
|
|
179
|
-
{/*
|
|
180
|
-
DO NOT EDIT THIS FILE DIRECTLY!
|
|
181
|
-
|
|
180
|
+
{/*
|
|
181
|
+
DO NOT EDIT THIS FILE DIRECTLY!
|
|
182
|
+
|
|
182
183
|
It is automatically generated by the npm-publish GitHub Action in
|
|
183
184
|
the moonbanking/mcp-server repository.
|
|
184
185
|
*/}
|
|
185
|
-
|
|
186
|
+
|
|
186
187
|
export const metadata = {
|
|
187
188
|
title: `MCP`,
|
|
188
189
|
description: `Create AI agents using Moon Banking's MCP server. Get high-quality data about banks worldwide from your favorite LLM platform with Moon Banking's MCP.`,
|
|
189
190
|
};
|
|
190
|
-
|
|
191
|
-
<ApiKeyNote featureName="MCP" />
|
|
192
|
-
|
|
191
|
+
|
|
193
192
|
EOF
|
|
194
|
-
|
|
193
|
+
|
|
195
194
|
# Append the README content
|
|
196
195
|
cat mcp-server/README.md >> moonbanking/apps/docs/app/mcp/page.mdx
|
|
197
|
-
|
|
198
|
-
|
|
196
|
+
|
|
197
|
+
# Rewrite GitHub-relative markdown links so they resolve to docs-app routes:
|
|
198
|
+
# ./README.md → /mcp
|
|
199
|
+
# ./<slug>.md → /<slug>
|
|
200
|
+
# Also handles the bare-form variants (without `./`).
|
|
201
|
+
sed -i -E \
|
|
202
|
+
-e 's#\]\((\./)?README\.md\)#](/mcp)#g' \
|
|
203
|
+
-e 's#\]\((\./)?([A-Za-z][A-Za-z0-9-]*)\.md\)#](/\2)#g' \
|
|
204
|
+
moonbanking/apps/docs/app/mcp/page.mdx
|
|
205
|
+
|
|
206
|
+
echo "✅ Main MCP documentation updated"
|
|
207
|
+
|
|
208
|
+
- name: Update platform documentation
|
|
209
|
+
shell: bash
|
|
210
|
+
run: |
|
|
211
|
+
# Sync each per-platform doc page (e.g. mcp-server/cursor.md, which
|
|
212
|
+
# lives at the package root alongside README.md) into the docs app
|
|
213
|
+
# as a TOP-LEVEL route (apps/docs/app/cursor/page.mdx).
|
|
214
|
+
# Title + description are parsed from the markdown file itself, so
|
|
215
|
+
# adding a new platform in the moonbanking monorepo generator
|
|
216
|
+
# automatically flows through this workflow with no further edits.
|
|
217
|
+
|
|
218
|
+
shopt -s nullglob
|
|
219
|
+
synced=0
|
|
220
|
+
|
|
221
|
+
# Files we should NOT treat as platform docs even if they end in .md.
|
|
222
|
+
skip_regex='^(README|CHANGELOG|LICENSE|CONTRIBUTING|CODE_OF_CONDUCT|SECURITY)$'
|
|
223
|
+
|
|
224
|
+
for src in mcp-server/*.md; do
|
|
225
|
+
slug="$(basename "$src" .md)"
|
|
226
|
+
|
|
227
|
+
# Skip non-platform markdown at the package root.
|
|
228
|
+
if [[ "$slug" =~ $skip_regex ]]; then
|
|
229
|
+
echo "↪︎ Skipping $slug.md (non-platform file)"
|
|
230
|
+
continue
|
|
231
|
+
fi
|
|
232
|
+
|
|
233
|
+
# Extract `<Name>` from `# Moon Banking MCP for <Name>` (first H1).
|
|
234
|
+
title="$(sed -n 's/^# Moon Banking MCP for \(.*\)$/\1/p' "$src" | head -n1)"
|
|
235
|
+
# Extract description from the first `> ...` blockquote line.
|
|
236
|
+
description="$(sed -n 's/^> \(.*\)$/\1/p' "$src" | head -n1)"
|
|
237
|
+
|
|
238
|
+
# If the file doesn't look like a platform doc, bail rather than
|
|
239
|
+
# publish a malformed docs page.
|
|
240
|
+
if [ -z "$title" ]; then
|
|
241
|
+
echo "⚠️ ${slug}.md does not look like a platform doc (no '# Moon Banking MCP for ...' H1) — skipping."
|
|
242
|
+
continue
|
|
243
|
+
fi
|
|
244
|
+
|
|
245
|
+
if [ -z "$description" ]; then
|
|
246
|
+
description="Connect ${title} to the Moon Banking MCP server."
|
|
247
|
+
fi
|
|
248
|
+
|
|
249
|
+
dest_dir="moonbanking/apps/docs/app/$slug"
|
|
250
|
+
mkdir -p "$dest_dir"
|
|
251
|
+
dest="$dest_dir/page.mdx"
|
|
252
|
+
|
|
253
|
+
{
|
|
254
|
+
echo '{/*'
|
|
255
|
+
echo ' DO NOT EDIT THIS FILE DIRECTLY!'
|
|
256
|
+
echo ''
|
|
257
|
+
echo ' It is automatically generated by the npm-publish GitHub Action in'
|
|
258
|
+
echo ' the moonbanking/mcp-server repository.'
|
|
259
|
+
echo '*/}'
|
|
260
|
+
echo ''
|
|
261
|
+
echo 'export const metadata = {'
|
|
262
|
+
echo " title: \`MCP — ${title}\`,"
|
|
263
|
+
echo " description: \`${description}\`,"
|
|
264
|
+
echo '};'
|
|
265
|
+
echo ''
|
|
266
|
+
} > "$dest"
|
|
267
|
+
|
|
268
|
+
cat "$src" >> "$dest"
|
|
269
|
+
|
|
270
|
+
# Rewrite GitHub-relative markdown links so they resolve to
|
|
271
|
+
# docs-app routes:
|
|
272
|
+
# ./README.md → /mcp
|
|
273
|
+
# ./<slug>.md → /<slug>
|
|
274
|
+
sed -i -E \
|
|
275
|
+
-e 's#\]\((\./)?README\.md\)#](/mcp)#g' \
|
|
276
|
+
-e 's#\]\((\./)?([A-Za-z][A-Za-z0-9-]*)\.md\)#](/\2)#g' \
|
|
277
|
+
"$dest"
|
|
278
|
+
|
|
279
|
+
echo "✅ Synced ${slug}.md → apps/docs/app/${slug}/page.mdx"
|
|
280
|
+
synced=$((synced + 1))
|
|
281
|
+
done
|
|
282
|
+
|
|
283
|
+
echo "📚 ${synced} platform docs synced"
|
|
199
284
|
|
|
200
285
|
- name: Check for changes
|
|
201
286
|
id: check_changes
|
|
202
287
|
run: |
|
|
203
288
|
cd moonbanking
|
|
204
|
-
if git
|
|
289
|
+
if [ -z "$(git status --porcelain apps/docs/app/)" ]; then
|
|
205
290
|
echo "has_changes=false" >> $GITHUB_OUTPUT
|
|
206
291
|
echo "ℹ️ No changes detected in documentation"
|
|
207
292
|
else
|
|
@@ -221,16 +306,29 @@ jobs:
|
|
|
221
306
|
title: 'docs: sync MCP documentation v${{ needs.publish.outputs.version }}'
|
|
222
307
|
body: |
|
|
223
308
|
## 🔄 Automated Documentation Sync
|
|
224
|
-
|
|
309
|
+
|
|
225
310
|
This PR automatically syncs the MCP server documentation from the [mcp-server repository](https://github.com/moonbanking/mcp-server).
|
|
226
|
-
|
|
311
|
+
|
|
227
312
|
**Version:** v${{ needs.publish.outputs.version }}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
313
|
+
|
|
314
|
+
### Sources → targets
|
|
315
|
+
|
|
316
|
+
| Source (mcp-server root) | Target (moonbanking docs) |
|
|
317
|
+
| --- | --- |
|
|
318
|
+
| `README.md` | `apps/docs/app/mcp/page.mdx` |
|
|
319
|
+
| `<slug>.md` (cursor, claude, …) | `apps/docs/app/<slug>/page.mdx` (top-level route, one per MCP client) |
|
|
320
|
+
|
|
321
|
+
### Link rewriting
|
|
322
|
+
|
|
323
|
+
GitHub-relative markdown links inside the source files are rewritten at sync time so they resolve to docs-app routes:
|
|
324
|
+
|
|
325
|
+
- `./README.md` → `/mcp`
|
|
326
|
+
- `./<slug>.md` → `/<slug>`
|
|
327
|
+
|
|
231
328
|
### Changes
|
|
232
|
-
- Updated MCP documentation with latest content from mcp-server v${{ needs.publish.outputs.version }}
|
|
233
|
-
|
|
329
|
+
- Updated main MCP documentation with latest content from mcp-server v${{ needs.publish.outputs.version }}
|
|
330
|
+
- Synced per-platform setup guides (Claude, Cursor, Grok, ChatGPT, VS Code, Windsurf, Zed, Claude Code, MCP Inspector, …) to their own top-level docs pages
|
|
331
|
+
|
|
234
332
|
---
|
|
235
333
|
*This PR was automatically created by the npm-publish GitHub Action*
|
|
236
334
|
labels: |
|
|
@@ -245,12 +343,13 @@ jobs:
|
|
|
245
343
|
echo "Created pull request to sync MCP documentation to getfullup/moonbanking repository." >> $GITHUB_STEP_SUMMARY
|
|
246
344
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
247
345
|
echo "**Version:** v${{ needs.publish.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
248
|
-
echo "**
|
|
346
|
+
echo "**Targets:**" >> $GITHUB_STEP_SUMMARY
|
|
347
|
+
echo "- apps/docs/app/mcp/page.mdx (main MCP page from README.md)" >> $GITHUB_STEP_SUMMARY
|
|
348
|
+
echo "- apps/docs/app/<slug>/page.mdx (one per platform, from <slug>.md at package root)" >> $GITHUB_STEP_SUMMARY
|
|
249
349
|
else
|
|
250
350
|
echo "## ℹ️ No Documentation Changes" >> $GITHUB_STEP_SUMMARY
|
|
251
351
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
252
352
|
echo "Documentation is already up to date. No pull request created." >> $GITHUB_STEP_SUMMARY
|
|
253
353
|
echo "" >> $GITHUB_STEP_SUMMARY
|
|
254
354
|
echo "**Version:** v${{ needs.publish.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
255
|
-
|
|
256
|
-
fi
|
|
355
|
+
fi
|
package/README.md
CHANGED
|
@@ -1,8 +1,72 @@
|
|
|
1
1
|
# Moon Banking MCP Server
|
|
2
2
|
|
|
3
|
-
The Moon Banking MCP server
|
|
3
|
+
Moon Banking is a global directory of consumer and business banks with structured, community-rated scores across 14 categories — customer service, fees & pricing, digital experience, crypto friendliness, security & trust, lending, business banking, international banking, transparency, and more. The Moon Banking MCP server exposes that entire dataset — every bank, country, score, vote, and user story — as live tools your AI agent can call, so answers about real-world banking are grounded in fresh Moon Banking data instead of stale training-set guesses.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Once connected, you can ask questions like *"which crypto-friendly banks operate in Brazil?"*, *"compare digital-experience scores for the top US challenger banks"*, or *"summarize recent user stories about fees at HSBC UK"* and get tool-grounded, citable answers backed by the same data that powers [moonbanking.com](https://moonbanking.com).
|
|
6
|
+
|
|
7
|
+
The server is generated from the public [OpenAPI specification](https://github.com/moonbanking/moonbanking-openapi) and ships as both a hosted OAuth endpoint at `https://mcp.moonbanking.com/mcp` and a stdio npm package (`@moonbanking/mcp-server`) — so you can connect it to Claude, Cursor, Grok, ChatGPT, VS Code, Devin Desktop (formerly Windsurf), Zed, and any other [Model Context Protocol](https://modelcontextprotocol.io) client.
|
|
8
|
+
|
|
9
|
+
## Client-specific setup guides
|
|
10
|
+
|
|
11
|
+
If you just want to wire Moon Banking up to a specific client, jump straight to its guide. Each one covers both the hosted OAuth setup and the self-hosted stdio fallback.
|
|
12
|
+
|
|
13
|
+
| Client | Guide |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| Claude (Desktop & web) | [claude](./claude.md) |
|
|
16
|
+
| Claude Code | [claude-code](./claude-code.md) |
|
|
17
|
+
| Cursor | [cursor](./cursor.md) |
|
|
18
|
+
| Devin Desktop (formerly Windsurf) | [devin-desktop](./devin-desktop.md) |
|
|
19
|
+
| VS Code (GitHub Copilot) | [vscode](./vscode.md) |
|
|
20
|
+
| Zed | [zed](./zed.md) |
|
|
21
|
+
| ChatGPT | [chatgpt](./chatgpt.md) |
|
|
22
|
+
| Grok (xAI) | [grok](./grok.md) |
|
|
23
|
+
| MCP Inspector (testing) | [mcp-inspector](./mcp-inspector.md) |
|
|
24
|
+
|
|
25
|
+
The rest of this README covers the underlying authentication options and configuration shapes.
|
|
26
|
+
|
|
27
|
+
## Authentication
|
|
28
|
+
|
|
29
|
+
You can connect to Moon Banking over MCP using **either** of two auth methods:
|
|
30
|
+
|
|
31
|
+
| Method | Best for | API key required? |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| **Hosted OAuth server** (recommended) | Claude, Cursor, Grok, ChatGPT, and any MCP client that supports remote/streamable HTTP MCP. Users sign in to Moon Banking in a browser — no key handling. | No |
|
|
34
|
+
| **Self-hosted stdio package** (this npm package) | Local scripts, agents, or clients that only support stdio MCP. | Yes |
|
|
35
|
+
|
|
36
|
+
Both methods expose the same tool surface; pick whichever matches your client.
|
|
37
|
+
|
|
38
|
+
## Hosted MCP server (OAuth)
|
|
39
|
+
|
|
40
|
+
URL: `https://mcp.moonbanking.com/mcp` (Streamable HTTP, OAuth 2.0 with Dynamic Client Registration).
|
|
41
|
+
|
|
42
|
+
Most modern MCP clients can connect by simply pointing at the URL — they will pop a browser window for the user to sign in to Moon Banking and obtain an access token automatically. No API key is exchanged or stored on the client side.
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"mcpServers": {
|
|
47
|
+
"moonbanking": {
|
|
48
|
+
"url": "https://mcp.moonbanking.com/mcp"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
For clients that don't yet speak remote MCP natively (eg. older ChatGPT configurations), the [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) bridge can wrap the hosted endpoint as a stdio command:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"mcpServers": {
|
|
59
|
+
"moonbanking": {
|
|
60
|
+
"command": "npx",
|
|
61
|
+
"args": ["-y", "mcp-remote", "https://mcp.moonbanking.com/mcp"]
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Self-hosted (API key)
|
|
68
|
+
|
|
69
|
+
If you prefer to run the MCP server locally as a stdio process — for example to embed it in an automation that doesn't have a browser available for OAuth — install this npm package and authenticate with a Moon Banking API key.
|
|
6
70
|
|
|
7
71
|
### Direct invocation
|
|
8
72
|
|
|
@@ -34,22 +98,6 @@ For clients with a configuration JSON, it might look something like this:
|
|
|
34
98
|
}
|
|
35
99
|
```
|
|
36
100
|
|
|
37
|
-
### Cursor
|
|
38
|
-
|
|
39
|
-
If you use Cursor, you can install the MCP server by using the button below. You will need to set your environment variables
|
|
40
|
-
in Cursor's `mcp.json`, which can be found in Cursor Settings > Tools & MCP > New MCP Server.
|
|
41
|
-
|
|
42
|
-
[](https://cursor.com/en-US/install-mcp?name=moonbanking-mcp&config=eyJlbnYiOnsiTU9PTl9CQU5LSU5HX0FQSV9LRVkiOiJTZXQgeW91ciBNT09OX0JBTktJTkdfQVBJX0tFWSBoZXJlLiJ9LCJjb21tYW5kIjoibnB4IC15IEBtb29uYmFua2luZy9tY3Atc2VydmVyIn0%3D)
|
|
43
|
-
|
|
44
|
-
### Claude Code
|
|
45
|
-
|
|
46
|
-
If you use Claude Code, you can install the MCP server by running the command below in your terminal. You will need to set your
|
|
47
|
-
environment variables in Claude Code's `.claude.json`, which can be found in your home directory.
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
claude mcp add --transport stdio moonbanking_api --env MOON_BANKING_API_KEY="Your MOON_BANKING_API_KEY here." -- npx -y @moonbanking/mcp-server
|
|
51
|
-
```
|
|
52
|
-
|
|
53
101
|
## Filter Specific Tools
|
|
54
102
|
|
|
55
103
|
You can limit which tools are exposed by using the `--tool` flag:
|
|
@@ -70,7 +118,11 @@ npx @moonbanking/mcp-server --tool=tool1 --tool=tool2
|
|
|
70
118
|
- `story_get`: This endpoint allows you to retrieve a paginated list of all stories. By default, a maximum of ten stories are shown per page. You can search stories by text content, filter by bank ID, sort them by various fields, and include related data like bank and country information.
|
|
71
119
|
- `story_getById`: This endpoint allows you to retrieve a specific story by providing the story ID. You can include related data like bank and country information in the response.
|
|
72
120
|
- `world_getOverview`: This endpoint allows you to retrieve global overview data that aggregates banks votes, stories and other data across all banks in all countries. You can include related data like scores in the response.
|
|
73
|
-
- `
|
|
121
|
+
- `market_get`: This endpoint allows you to retrieve a paginated list of markets (e.g. stock exchanges). You can search by name or code, filter by exact code, country, or market type, and sort the results.
|
|
122
|
+
- `market_getById`: This endpoint allows you to retrieve a specific market (e.g. stock exchange) by providing the market id.
|
|
123
|
+
- `stock_get`: This endpoint allows you to retrieve a paginated list of stock listings. You can search by ticker symbol, filter by exact symbol, market, bank, or primary-listing status, and sort the results.
|
|
124
|
+
- `stock_getById`: This endpoint allows you to retrieve a specific stock listing by providing the stock id. You can optionally include the associated `market` and/or `bank` as nested objects.
|
|
125
|
+
- `search_get`: Search across banks, countries, stories, and stocks. You can specify which entities to search using the include parameter. If no include value is provided, all entities will be searched. Banks are also matched on the ticker symbol of their stock listings, so searching `BAC` returns Bank of America.
|
|
74
126
|
|
|
75
127
|
## License
|
|
76
128
|
|
package/chatgpt.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Moon Banking MCP for ChatGPT
|
|
2
|
+
|
|
3
|
+
> Add the Moon Banking MCP server to ChatGPT via Custom Connectors or a Custom GPT.
|
|
4
|
+
|
|
5
|
+
ChatGPT is great at fluent answers and weaker on fresh, structured facts about specific institutions. Adding the Moon Banking MCP as a Custom Connector gives ChatGPT live, tool-grounded access to every bank, country, community-rated score across 14 categories (customer service, fees & pricing, digital experience, crypto friendliness, security & trust, lending, transparency, and more), vote, and user story Moon Banking tracks.
|
|
6
|
+
|
|
7
|
+
Use it for everything from *"which crypto-friendly banks operate in Argentina?"* to *"compare the top three US challenger banks on fees and digital experience"* to *"summarize what users are saying about Wells Fargo's customer service this year"* — and get citable, data-grounded answers instead of generic summaries.
|
|
8
|
+
|
|
9
|
+
ChatGPT supports MCP through two distinct surfaces, and the right choice depends on your plan.
|
|
10
|
+
|
|
11
|
+
## Recommended: hosted (OAuth) via Custom Connectors
|
|
12
|
+
|
|
13
|
+
ChatGPT Plus, Pro, Team, Enterprise, and Edu users can add the Moon Banking server as a **Custom Connector** (the same mechanism that powers the official Notion, Gmail, etc. connectors).
|
|
14
|
+
|
|
15
|
+
1. Open ChatGPT → **Settings → Connectors → Custom Connectors → Add custom connector**.
|
|
16
|
+
2. Enter:
|
|
17
|
+
- **Name:** `Moon Banking`
|
|
18
|
+
- **URL:** `https://mcp.moonbanking.com/mcp`
|
|
19
|
+
3. Save. ChatGPT will open a browser tab to authenticate with Moon Banking. Approve.
|
|
20
|
+
4. In any chat, click the **+** button and enable the Moon Banking connector.
|
|
21
|
+
|
|
22
|
+
> Custom Connectors require a paid plan with Connectors enabled for your region. Availability may vary; check [help.openai.com](https://help.openai.com) for current rollout status.
|
|
23
|
+
|
|
24
|
+
## Alternative: stdio bridge for Custom GPTs / older setups
|
|
25
|
+
|
|
26
|
+
If your plan doesn't expose Custom Connectors, you can wrap the hosted endpoint with [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) for any tooling that accepts stdio MCP (eg. a self-hosted ChatGPT-compatible agent):
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"moonbanking": {
|
|
32
|
+
"command": "npx",
|
|
33
|
+
"args": ["-y", "mcp-remote", "https://mcp.moonbanking.com/mcp"]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
You can also run the stdio-only API-key package directly:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"mcpServers": {
|
|
44
|
+
"moonbanking-mcp": {
|
|
45
|
+
"command": "npx",
|
|
46
|
+
"args": ["-y", "@moonbanking/mcp-server"],
|
|
47
|
+
"env": {
|
|
48
|
+
"MOON_BANKING_API_KEY": "Bearer mb_sk_..."
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Verify the connection
|
|
56
|
+
|
|
57
|
+
Start a new chat and prompt:
|
|
58
|
+
|
|
59
|
+
> Use the Moon Banking connector to find banks in Singapore with strong fees and pricing scores.
|
|
60
|
+
|
|
61
|
+
## Troubleshooting
|
|
62
|
+
|
|
63
|
+
- **Connector option is missing.** Custom Connectors are gated by plan and region. Try the `mcp-remote` stdio bridge instead.
|
|
64
|
+
- **OAuth returns to a 404.** Make sure your ChatGPT browser session is logged in and that pop-ups are allowed for chatgpt.com.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## Available tools
|
|
68
|
+
|
|
69
|
+
The Moon Banking MCP server exposes the following tools (identical across every client):
|
|
70
|
+
|
|
71
|
+
- `bank_getByHostname`
|
|
72
|
+
- `bank_get`
|
|
73
|
+
- `bank_getById`
|
|
74
|
+
- `bank_semanticSearch`
|
|
75
|
+
- `bankVote_get`
|
|
76
|
+
- `country_get`
|
|
77
|
+
- `country_getByCountryCode`
|
|
78
|
+
- `story_get`
|
|
79
|
+
- `story_getById`
|
|
80
|
+
- `world_getOverview`
|
|
81
|
+
- `market_get`
|
|
82
|
+
- `market_getById`
|
|
83
|
+
- `stock_get`
|
|
84
|
+
- `stock_getById`
|
|
85
|
+
- `search_get`
|
|
86
|
+
|
|
87
|
+
Full descriptions live on the [main MCP page](./README.md).
|
package/claude-code.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Moon Banking MCP for Claude Code
|
|
2
|
+
|
|
3
|
+
> Add the Moon Banking MCP server to the Claude Code CLI for use in terminal-driven coding sessions.
|
|
4
|
+
|
|
5
|
+
Claude Code is the right tool when you're scripting against APIs, automating data work, or hacking on a fintech backend without leaving your terminal. Adding the Moon Banking MCP gives the CLI agent live access to the entire Moon Banking dataset — banks, countries, community-rated scores across 14 categories (customer service, fees & pricing, digital experience, crypto friendliness, lending, transparency, …), user votes, user stories, and global rankings — over either the hosted OAuth endpoint or a local stdio process.
|
|
6
|
+
|
|
7
|
+
Typical uses: seeding a fintech database with realistic bank records, generating evaluation datasets that need real institutions, prototyping "find me a bank that…" features, or pausing mid-script to ask *"which US banks have the highest customer-service scores?"* without context-switching to a browser.
|
|
8
|
+
|
|
9
|
+
Claude Code is Anthropic's terminal CLI. It supports both **remote** (HTTP/Streamable HTTP) and **stdio** MCP transports.
|
|
10
|
+
|
|
11
|
+
## Recommended: hosted (OAuth)
|
|
12
|
+
|
|
13
|
+
Run this once in any directory:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
claude mcp add --transport http moonbanking https://mcp.moonbanking.com/mcp
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
The first time you invoke a Moon Banking tool, Claude Code will print a one-time URL and ask you to authenticate in your browser. The resulting OAuth token is cached on disk and reused across sessions.
|
|
20
|
+
|
|
21
|
+
To install only for the current project (instead of globally), pass `--scope project`:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
claude mcp add --transport http --scope project moonbanking https://mcp.moonbanking.com/mcp
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The project-scoped config lives in `.claude.json` at the project root and can be committed to source control if you want every developer on the team to share it.
|
|
28
|
+
|
|
29
|
+
## Alternative: self-hosted (API key)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
claude mcp add --transport stdio moonbanking \
|
|
33
|
+
--env MOON_BANKING_API_KEY="Bearer mb_sk_..." \
|
|
34
|
+
-- npx -y @moonbanking/mcp-server
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This launches a local stdio MCP server that authenticates with your API key on every call.
|
|
38
|
+
|
|
39
|
+
## Verify the connection
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
claude mcp list
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
You should see `moonbanking` listed with a connection status of `connected`. Then start a session and try:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
> Find the highest-rated bank in Switzerland for crypto users.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Troubleshooting
|
|
52
|
+
|
|
53
|
+
- **`Failed to authenticate`** Run `claude mcp remove moonbanking` and re-add to clear the cached token.
|
|
54
|
+
- **No tools available.** Run `claude mcp list` — if the server appears with a red status, run `claude mcp logs moonbanking` to inspect the error.
|
|
55
|
+
- **Pro plan required.** The MCP API rejects non-Pro Moon Banking accounts; [upgrade to Pro](https://moonbanking.com/pro).
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
## Available tools
|
|
59
|
+
|
|
60
|
+
The Moon Banking MCP server exposes the following tools (identical across every client):
|
|
61
|
+
|
|
62
|
+
- `bank_getByHostname`
|
|
63
|
+
- `bank_get`
|
|
64
|
+
- `bank_getById`
|
|
65
|
+
- `bank_semanticSearch`
|
|
66
|
+
- `bankVote_get`
|
|
67
|
+
- `country_get`
|
|
68
|
+
- `country_getByCountryCode`
|
|
69
|
+
- `story_get`
|
|
70
|
+
- `story_getById`
|
|
71
|
+
- `world_getOverview`
|
|
72
|
+
- `market_get`
|
|
73
|
+
- `market_getById`
|
|
74
|
+
- `stock_get`
|
|
75
|
+
- `stock_getById`
|
|
76
|
+
- `search_get`
|
|
77
|
+
|
|
78
|
+
Full descriptions live on the [main MCP page](./README.md).
|
package/claude.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Moon Banking MCP for Claude
|
|
2
|
+
|
|
3
|
+
> Add the Moon Banking MCP server to Claude Desktop and claude.ai as a custom connector.
|
|
4
|
+
|
|
5
|
+
Claude is one of the strongest models for nuanced research and writing, and one of its biggest weak points is fresh, structured data about specific institutions. The Moon Banking MCP gives Claude live access to every bank, country, community-rated score across 14 categories (customer service, fees & pricing, digital experience, crypto friendliness, security & trust, lending, transparency, and more), vote, and user story in the Moon Banking database — so questions about real-world banks come back with citable, tool-grounded facts instead of generic training-data summaries.
|
|
6
|
+
|
|
7
|
+
Try *"draft a comparison of the three highest-rated digital banks in Germany, then tell me which has the best reviews on fees"*, *"summarize what users are saying about HSBC's customer service this year"*, or *"which banks in Brazil rank highest on crypto friendliness?"* — Claude will pull the data on demand and reason over it in-line.
|
|
8
|
+
|
|
9
|
+
Claude Desktop and claude.ai both support remote MCP servers as **custom connectors**. The hosted Moon Banking endpoint uses Streamable HTTP with OAuth, which both clients handle out of the box.
|
|
10
|
+
|
|
11
|
+
## Recommended: hosted (OAuth)
|
|
12
|
+
|
|
13
|
+
### Claude Desktop
|
|
14
|
+
|
|
15
|
+
1. Open **Settings → Connectors** (or **Settings → Developer → Add custom connector**, depending on your version).
|
|
16
|
+
2. Choose **Add custom connector**.
|
|
17
|
+
3. Set:
|
|
18
|
+
- **Name:** `Moon Banking`
|
|
19
|
+
- **URL:** `https://mcp.moonbanking.com/mcp`
|
|
20
|
+
4. Click **Add**. Claude will open a browser window asking you to sign in to Moon Banking. Approve the connection.
|
|
21
|
+
5. Back in Claude, toggle the **Moon Banking** connector on in any chat.
|
|
22
|
+
|
|
23
|
+
If you prefer to edit the config file directly, on macOS it lives at `~/Library/Application Support/Claude/claude_desktop_config.json`. On Windows it's `%APPDATA%\Claude\claude_desktop_config.json`:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"mcpServers": {
|
|
28
|
+
"moonbanking": {
|
|
29
|
+
"url": "https://mcp.moonbanking.com/mcp"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Restart Claude Desktop after editing.
|
|
36
|
+
|
|
37
|
+
### claude.ai (web)
|
|
38
|
+
|
|
39
|
+
1. Sign in at [claude.ai](https://claude.ai) on a Pro, Team, or Enterprise plan (custom connectors require a paid plan).
|
|
40
|
+
2. Go to **Settings → Connectors → Add custom connector**.
|
|
41
|
+
3. Paste `https://mcp.moonbanking.com/mcp` and confirm.
|
|
42
|
+
4. Approve the OAuth prompt that opens.
|
|
43
|
+
|
|
44
|
+
## Alternative: self-hosted (API key)
|
|
45
|
+
|
|
46
|
+
If you need a stdio connection (eg. air-gapped use or a service account), Claude Desktop can spawn the published npm package locally. Add this to `claude_desktop_config.json`:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"moonbanking-mcp": {
|
|
52
|
+
"command": "npx",
|
|
53
|
+
"args": ["-y", "@moonbanking/mcp-server"],
|
|
54
|
+
"env": {
|
|
55
|
+
"MOON_BANKING_API_KEY": "Bearer mb_sk_..."
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Generate the API key at [moonbanking.com/settings/api/manage-api-keys](https://moonbanking.com/settings/api/manage-api-keys) and restart Claude.
|
|
63
|
+
|
|
64
|
+
## Verify the connection
|
|
65
|
+
|
|
66
|
+
Start a new conversation in Claude and ask:
|
|
67
|
+
|
|
68
|
+
> Using the Moon Banking connector, find banks in Brazil that are known for being crypto-friendly.
|
|
69
|
+
|
|
70
|
+
Claude should call tools like `bank_semanticSearch` or `country_getByCountryCode` and reply with real Moon Banking data.
|
|
71
|
+
|
|
72
|
+
## Troubleshooting
|
|
73
|
+
|
|
74
|
+
- **Connector shows as disconnected.** Click the connector in Settings and re-run the auth flow. If your access token expired Claude will need to re-authenticate.
|
|
75
|
+
- **`Tool list is empty`** Make sure your account has been granted Pro access at moonbanking.com. The MCP endpoint requires a Pro subscription.
|
|
76
|
+
- **Cannot add connector.** Claude.ai's custom connectors are gated to paid plans. Claude Desktop has fewer restrictions.
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
## Available tools
|
|
80
|
+
|
|
81
|
+
The Moon Banking MCP server exposes the following tools (identical across every client):
|
|
82
|
+
|
|
83
|
+
- `bank_getByHostname`
|
|
84
|
+
- `bank_get`
|
|
85
|
+
- `bank_getById`
|
|
86
|
+
- `bank_semanticSearch`
|
|
87
|
+
- `bankVote_get`
|
|
88
|
+
- `country_get`
|
|
89
|
+
- `country_getByCountryCode`
|
|
90
|
+
- `story_get`
|
|
91
|
+
- `story_getById`
|
|
92
|
+
- `world_getOverview`
|
|
93
|
+
- `market_get`
|
|
94
|
+
- `market_getById`
|
|
95
|
+
- `stock_get`
|
|
96
|
+
- `stock_getById`
|
|
97
|
+
- `search_get`
|
|
98
|
+
|
|
99
|
+
Full descriptions live on the [main MCP page](./README.md).
|
package/cursor.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Moon Banking MCP for Cursor
|
|
2
|
+
|
|
3
|
+
> Connect Cursor to the Moon Banking MCP server so the AI can query banks, countries, votes, and stories with one-click OAuth.
|
|
4
|
+
|
|
5
|
+
Cursor's agent is excellent at writing code but has no built-in knowledge of specific banks, their hostnames, fee structures, or how real customers rate them. Wiring in the Moon Banking MCP closes that gap: Cursor gains live access to every bank Moon Banking tracks — name, country, primary hostname, rank, community-rated scores across 14 categories (customer service, fees & pricing, digital experience, crypto friendliness, security & trust, lending, and more) — plus the user-submitted stories backing those scores.
|
|
6
|
+
|
|
7
|
+
Useful when you're scaffolding a fintech project, validating bank hostnames you see in code, generating realistic test fixtures, or just prompting *"find me a crypto-friendly business bank in Singapore and stub out a client for its public API"* mid-session. Answers are grounded in fresh Moon Banking data — not whatever your model memorized last year.
|
|
8
|
+
|
|
9
|
+
Cursor speaks remote MCP natively over Streamable HTTP. The fastest setup is to point Cursor at the hosted endpoint — Cursor handles the OAuth flow in a browser tab automatically.
|
|
10
|
+
|
|
11
|
+
## Recommended: hosted (OAuth)
|
|
12
|
+
|
|
13
|
+
### Option A — Click to install
|
|
14
|
+
|
|
15
|
+
[](cursor://anysphere.cursor-deeplink/mcp/install?name=moonbanking&config=eyJ1cmwiOiJodHRwczovL21jcC5tb29uYmFua2luZy5jb20vbWNwIn0%3D)
|
|
16
|
+
|
|
17
|
+
### Option B — Edit `mcp.json` directly
|
|
18
|
+
|
|
19
|
+
Open Cursor and go to **Settings → Tools & MCP → New MCP Server**, or edit your global config at `~/.cursor/mcp.json`:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"mcpServers": {
|
|
24
|
+
"moonbanking": {
|
|
25
|
+
"url": "https://mcp.moonbanking.com/mcp"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
For project-scoped install instead, drop the same JSON at `.cursor/mcp.json` inside your repository.
|
|
32
|
+
|
|
33
|
+
The first time Cursor connects, it will open a browser window asking you to sign in to Moon Banking. After that, the connection persists across restarts.
|
|
34
|
+
|
|
35
|
+
## Alternative: self-hosted (API key)
|
|
36
|
+
|
|
37
|
+
If you would rather run the MCP server locally as a stdio process (eg. you are on a machine without a browser, or you want to use a service API key), Cursor can spawn the published npm package.
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"moonbanking-mcp": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": ["-y", "@moonbanking/mcp-server"],
|
|
45
|
+
"env": {
|
|
46
|
+
"MOON_BANKING_API_KEY": "Bearer mb_sk_..."
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Generate an API key at [moonbanking.com/settings/api/manage-api-keys](https://moonbanking.com/settings/api/manage-api-keys).
|
|
54
|
+
|
|
55
|
+
## Verify the connection
|
|
56
|
+
|
|
57
|
+
Open the Cursor chat panel and look for the **MCP** indicator beside the model picker — it should show `moonbanking` with a green dot and the tool count. You can also ask the agent something like:
|
|
58
|
+
|
|
59
|
+
> What are the top three banks in Germany right now?
|
|
60
|
+
|
|
61
|
+
If it responds using the `bank_get` and `country_get` tools, the connection is working.
|
|
62
|
+
|
|
63
|
+
## Troubleshooting
|
|
64
|
+
|
|
65
|
+
- **Tools list is empty.** Cursor may have cached an unauthenticated session. Remove the entry from `mcp.json`, restart Cursor, and re-add it. If the issue persists, run `npx @modelcontextprotocol/inspector` against `https://mcp.moonbanking.com/mcp` to confirm the server is reachable from your network.
|
|
66
|
+
- **OAuth window closes immediately.** Make sure your default browser is signed in to Moon Banking, or sign in first at [moonbanking.com](https://moonbanking.com) and retry.
|
|
67
|
+
- **403 errors after sign-in.** Your Moon Banking account must be on a Pro plan to use the MCP API. [Upgrade to Pro](https://moonbanking.com/pro).
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
## Available tools
|
|
71
|
+
|
|
72
|
+
The Moon Banking MCP server exposes the following tools (identical across every client):
|
|
73
|
+
|
|
74
|
+
- `bank_getByHostname`
|
|
75
|
+
- `bank_get`
|
|
76
|
+
- `bank_getById`
|
|
77
|
+
- `bank_semanticSearch`
|
|
78
|
+
- `bankVote_get`
|
|
79
|
+
- `country_get`
|
|
80
|
+
- `country_getByCountryCode`
|
|
81
|
+
- `story_get`
|
|
82
|
+
- `story_getById`
|
|
83
|
+
- `world_getOverview`
|
|
84
|
+
- `market_get`
|
|
85
|
+
- `market_getById`
|
|
86
|
+
- `stock_get`
|
|
87
|
+
- `stock_getById`
|
|
88
|
+
- `search_get`
|
|
89
|
+
|
|
90
|
+
Full descriptions live on the [main MCP page](./README.md).
|