Skip to content

Commit 319da8f

Browse files
committed
fix: Refactor package.json for updated entry points
1 parent 679ea7a commit 319da8f

5 files changed

Lines changed: 94 additions & 103 deletions

File tree

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
"version": "0.0.1",
44
"description": "A MCP server for BNB Chain that supports BSC, opBNB, Greenfield, and other popular EVM-compatible networks.",
55
"scripts": {
6-
"start": "node dist/server/stdio.js",
7-
"start:sse": "node dist/server/sse.js",
8-
"dev": "bun --watch run src/server/stdio.ts",
9-
"dev:sse": "bun --watch run src/server/sse.ts",
10-
"build": "bun build src/**/*.ts --outdir dist --target node --format cjs",
6+
"start": "node dist/index.js",
7+
"start:sse": "bun run start --sse",
8+
"dev": "bun --watch run src/index.ts",
9+
"dev:sse": "bun run dev --sse",
10+
"build": "bun build src/*.ts --outdir dist --target node --format cjs",
1111
"test": "npx @modelcontextprotocol/inspector bun dev",
1212
"prepare": "husky",
1313
"format": "prettier --write ."
1414
},
15-
"main": "dist/server/stdio.js",
15+
"main": "dist/index.js",
1616
"bin": {
17-
"bnbchain-mcp": "./dist/cli/index.js"
17+
"bnbchain-mcp": "./dist/index.js"
1818
},
1919
"files": [
2020
"dist"

src/cli/index.ts

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/index.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/usr/bin/env node
2+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp"
3+
4+
import { startSSEServer } from "./server/sse"
5+
import { startStdioServer } from "./server/stdio"
6+
import logger from "./utils/logger"
7+
8+
const args = process.argv.slice(2)
9+
const sseMode = args.includes("--sse") || args.includes("-s")
10+
11+
async function main() {
12+
let server: McpServer
13+
if (sseMode) {
14+
server = await startSSEServer()
15+
} else {
16+
server = await startStdioServer()
17+
}
18+
19+
const handleShutdown = async () => {
20+
logger.debug("BNBChain MCP Server shutting down")
21+
await server.close()
22+
process.exit(0)
23+
}
24+
// Handle process termination
25+
process.on("SIGINT", handleShutdown)
26+
process.on("SIGTERM", handleShutdown)
27+
}
28+
29+
main()

src/server/sse.ts

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,58 +8,68 @@ import type { Request, Response } from "express"
88
import Logger from "@/utils/logger"
99
import { startServer } from "./base"
1010

11-
const app = express()
12-
const server = startServer()
13-
app.use(cors())
11+
export const startSSEServer = async () => {
12+
try {
13+
const app = express()
14+
const server = startServer()
15+
app.use(cors())
1416

15-
// Log the current log level on startup
16-
Logger.info(`Starting sse server with log level: ${Logger.getLevel()}`)
17+
// Log the current log level on startup
18+
Logger.info(`Starting sse server with log level: ${Logger.getLevel()}`)
1719

18-
// to support multiple simultaneous connections we have a lookup object from
19-
// sessionId to transport
20-
const transports: { [sessionId: string]: SSEServerTransport } = {}
20+
// to support multiple simultaneous connections we have a lookup object from
21+
// sessionId to transport
22+
const transports: { [sessionId: string]: SSEServerTransport } = {}
2123

22-
app.get("/sse", async (_: Request, res: Response) => {
23-
const transport = new SSEServerTransport("/messages", res)
24-
transports[transport.sessionId] = transport
25-
Logger.info("New SSE connection established", {
26-
sessionId: transport.sessionId
27-
})
24+
app.get("/sse", async (_: Request, res: Response) => {
25+
const transport = new SSEServerTransport("/messages", res)
26+
transports[transport.sessionId] = transport
27+
Logger.info("New SSE connection established", {
28+
sessionId: transport.sessionId
29+
})
2830

29-
res.on("close", () => {
30-
Logger.info("SSE connection closed", { sessionId: transport.sessionId })
31-
delete transports[transport.sessionId]
32-
})
31+
res.on("close", () => {
32+
Logger.info("SSE connection closed", { sessionId: transport.sessionId })
33+
delete transports[transport.sessionId]
34+
})
3335

34-
try {
35-
await server.connect(transport)
36-
} catch (error) {
37-
Logger.error("Error connecting transport", {
38-
sessionId: transport.sessionId,
39-
error
36+
try {
37+
await server.connect(transport)
38+
} catch (error) {
39+
Logger.error("Error connecting transport", {
40+
sessionId: transport.sessionId,
41+
error
42+
})
43+
}
4044
})
41-
}
42-
})
4345

44-
app.post("/messages", async (req: Request, res: Response) => {
45-
const sessionId = req.query.sessionId as string
46-
const transport = transports[sessionId]
46+
app.post("/messages", async (req: Request, res: Response) => {
47+
const sessionId = req.query.sessionId as string
48+
const transport = transports[sessionId]
4749

48-
if (transport) {
49-
Logger.debug("Handling message", { sessionId, body: req.body })
50-
try {
51-
await transport.handlePostMessage(req, res)
52-
} catch (error) {
53-
Logger.error("Error handling message", { sessionId, error })
54-
res.status(500).send("Internal server error")
55-
}
56-
} else {
57-
Logger.warn("No transport found for session", { sessionId })
58-
res.status(400).send("No transport found for sessionId")
59-
}
60-
})
50+
if (transport) {
51+
Logger.debug("Handling message", { sessionId, body: req.body })
52+
try {
53+
await transport.handlePostMessage(req, res)
54+
} catch (error) {
55+
Logger.error("Error handling message", { sessionId, error })
56+
res.status(500).send("Internal server error")
57+
}
58+
} else {
59+
Logger.warn("No transport found for session", { sessionId })
60+
res.status(400).send("No transport found for sessionId")
61+
}
62+
})
6163

62-
const PORT = process.env.PORT || 3001
63-
app.listen(PORT, () => {
64-
Logger.info(`BNBChain MCP SSE Server is running on http://localhost:${PORT}`)
65-
})
64+
const PORT = process.env.PORT || 3001
65+
app.listen(PORT, () => {
66+
Logger.info(
67+
`BNBChain MCP SSE Server is running on http://localhost:${PORT}`
68+
)
69+
})
70+
return server
71+
} catch (error) {
72+
Logger.error("Error starting BNBChain MCP SSE Server:", error)
73+
process.exit(1)
74+
}
75+
}

src/server/stdio.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ export const startStdioServer = async () => {
1313
Logger.info("BNBChain MCP Server running on stdio mode")
1414

1515
await server.connect(transport)
16+
return server
1617
} catch (error) {
17-
Logger.error("Error starting BNBChain MCP server:", error)
18+
Logger.error("Error starting BNBChain MCP Stdio server:", error)
1819
process.exit(1)
1920
}
2021
}
21-
22-
startStdioServer()

0 commit comments

Comments
 (0)