Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
fbaabca
✨ feat: update .gitignore, add Prettier and ESLint configurations, an…
netpoe Mar 10, 2026
dffc150
refactor: disable no-explicit-any rule in ESLint, update server handl…
netpoe Mar 10, 2026
e85b264
feat: add Binance Testnet support with environment variable configura…
netpoe Mar 10, 2026
c5c0eb8
fix: enable semicolons in Prettier config, enforce semicolon usage in…
netpoe Mar 10, 2026
0c4587a
feat: implement Streamable HTTP server, replacing deprecated SSE tran…
netpoe Mar 16, 2026
aa7d92b
feat: enhance Streamable HTTP server implementation with improved req…
netpoe Mar 16, 2026
3902244
feat: update Binance API tools with enhanced parameter handling, impr…
netpoe Mar 16, 2026
490cddc
feat: introduce codemod script to replace deprecated server.tool(...)…
netpoe Mar 16, 2026
bc2586a
feat: add codemod script for updating server.registerTool calls and e…
netpoe Mar 17, 2026
e4aa869
feat: enhance Binance API integration with troubleshooting guidance, …
netpoe Mar 18, 2026
e25ea9f
feat: update SSE server configuration to allow private URLs by settin…
netpoe Mar 30, 2026
2175080
feat: add Dockerfile and docker-compose.yml for containerized Binance…
netpoe Apr 8, 2026
ad742a0
refactor: update Dockerfile to simplify installation process by remov…
netpoe Apr 8, 2026
5ac3908
feat: logs only whitelisted MCP tools
netpoe Apr 11, 2026
5cf122d
chore: remove unused cors package and its type definitions from packa…
netpoe Apr 11, 2026
7571c0b
refactor: improve logging for MCP tools by separating tool name and a…
netpoe Apr 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
111 changes: 111 additions & 0 deletions .cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
---
description: Use Bun instead of Node.js, npm, pnpm, or vite.
globs: "*.ts, *.tsx, *.html, *.css, *.js, *.jsx, package.json"
alwaysApply: false
---

Default to using Bun instead of Node.js.

- Use `bun <file>` instead of `node <file>` or `ts-node <file>`
- Use `bun test` instead of `jest` or `vitest`
- Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild`
- Use `bun install` instead of `npm install` or `yarn install` or `pnpm install`
- Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>`
- Use `bunx <package> <command>` instead of `npx <package> <command>`
- Bun automatically loads .env, so don't use dotenv.

## APIs

- `Bun.serve()` supports WebSockets, HTTPS, and routes. Don't use `express`.
- `bun:sqlite` for SQLite. Don't use `better-sqlite3`.
- `Bun.redis` for Redis. Don't use `ioredis`.
- `Bun.sql` for Postgres. Don't use `pg` or `postgres.js`.
- `WebSocket` is built-in. Don't use `ws`.
- Prefer `Bun.file` over `node:fs`'s readFile/writeFile
- Bun.$`ls` instead of execa.

## Testing

Use `bun test` to run tests.

```ts#index.test.ts
import { test, expect } from "bun:test";

test("hello world", () => {
expect(1).toBe(1);
});
```

## Frontend

Use HTML imports with `Bun.serve()`. Don't use `vite`. HTML imports fully support React, CSS, Tailwind.

Server:

```ts#index.ts
import index from "./index.html"

Bun.serve({
routes: {
"/": index,
"/api/users/:id": {
GET: (req) => {
return new Response(JSON.stringify({ id: req.params.id }));
},
},
},
// optional websocket support
websocket: {
open: (ws) => {
ws.send("Hello, world!");
},
message: (ws, message) => {
ws.send(message);
},
close: (ws) => {
// handle close
}
},
development: {
hmr: true,
console: true,
}
})
```

HTML files can import .tsx, .jsx or .js files directly and Bun's bundler will transpile & bundle automatically. `<link>` tags can point to stylesheets and Bun's CSS bundler will bundle.

```html#index.html
<html>
<body>
<h1>Hello, world!</h1>
<script type="module" src="./frontend.tsx"></script>
</body>
</html>
```

With the following `frontend.tsx`:

```tsx#frontend.tsx
import React from "react";
import { createRoot } from "react-dom/client";

// import .css files directly and it works
import './index.css';

const root = createRoot(document.body);

export default function Frontend() {
return <h1>Hello, world!</h1>;
}

root.render(<Frontend />);
```

Then, run index.ts

```sh
bun --hot ./index.ts
```

For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.
283 changes: 142 additions & 141 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,141 +1,142 @@
# Gitignore for Universal Crypto MCP
################################################################

# System files
.DS_Store
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux/Ubuntu system files
*~
*.swp
*.swo
.fuse_hidden*
.directory
.Trash-*
.nfs*
.gvfs-fuse-daemon-*

# IDE and editors
.idea/
*.sublime-*
.history/
.windsurfrules
*.code-workspace
.vscode/sessions.json

# Temporary files
.temp/
temp/
tmp/
*.tmp
*.temp
*.log
*.cache
.cache/

# Environment files
.env
.env.local
.env*.local
.env.development
venv/
.venv/
.env.example.development
.env.example
.env.desktop
.env*
.env.sentry-build-plugin

# Dependencies
node_modules/
*.lock
package-lock.json
bun.lockb
.pnpm-store/
/.pnp
.pnp.js

# Build outputs
dist/
es/
/lib/
.next/
/out/
/build
logs/
test-output/
*.tsbuildinfo
next-env.d.ts

# Framework specific
# Umi
.umi/
.umi-production/
.umi-test/
.dumi/tmp*/

# Vercel
.vercel/

# Testing and CI
coverage/
.coverage/
.nyc_output/
.eslintcache
.stylelintcache

# Database
/prisma/db.sqlite
/prisma/db.sqlite-journal
db.sqlite

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# Misc
*.pem
src/tools/binance-spot/a.sh
a.sh
src/tools/binance-spot/a.txt

# Service Worker / Serwist
public/sw*
public/swe-worker*

# Generated files
public/*.js
public/sitemap.xml
public/sitemap-index.xml
sitemap*.xml
robots.txt

# Git hooks
.husky/prepare-commit-msg

# Documents and media
*.patch
*.pdf
*.ppt*
*.doc*
*.xls*

# Cloud service keys
vertex-ai-key.json

# AI coding tools
.local/
.claude/
.mcp.json
CLAUDE.local.md
.serena/**

# Misc
./packages/lobe-ui
prd
GEMINI.md
e2e/reports
# Gitignore for Universal Crypto MCP
################################################################

# System files
.DS_Store
Thumbs.db
ehthumbs.db
Desktop.ini

# Linux/Ubuntu system files
*~
*.swp
*.swo
.fuse_hidden*
.directory
.Trash-*
.nfs*
.gvfs-fuse-daemon-*

# IDE and editors
.idea/
*.sublime-*
.history/
.windsurfrules
*.code-workspace
.vscode/sessions.json

# Temporary files
.temp/
temp/
tmp/
*.tmp
*.temp
*.log
*.cache
.cache/

# Environment files
.env
.env.local
.env*.local
.env.development
venv/
.venv/
.env.example.development
.env.example
.env.desktop
.env*
.env.sentry-build-plugin
config.json

# Dependencies
node_modules/
*.lock
package-lock.json
bun.lockb
.pnpm-store/
/.pnp
.pnp.js

# Build outputs
dist/
es/
/lib/
.next/
/out/
/build
logs/
test-output/
*.tsbuildinfo
next-env.d.ts

# Framework specific
# Umi
.umi/
.umi-production/
.umi-test/
.dumi/tmp*/

# Vercel
.vercel/

# Testing and CI
coverage/
.coverage/
.nyc_output/
.eslintcache
.stylelintcache

# Database
/prisma/db.sqlite
/prisma/db.sqlite-journal
db.sqlite

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# Misc
*.pem
src/tools/binance-spot/a.sh
a.sh
src/tools/binance-spot/a.txt

# Service Worker / Serwist
public/sw*
public/swe-worker*

# Generated files
public/*.js
public/sitemap.xml
public/sitemap-index.xml
sitemap*.xml
robots.txt

# Git hooks
.husky/prepare-commit-msg

# Documents and media
*.patch
*.pdf
*.ppt*
*.doc*
*.xls*

# Cloud service keys
vertex-ai-key.json

# AI coding tools
.local/
.claude/
.mcp.json
CLAUDE.local.md
.serena/**

# Misc
./packages/lobe-ui
prd
GEMINI.md
e2e/reports
Loading