Skip to content

Commit 3ae65d7

Browse files
author
subtype
committed
Merge branch 'rc-v1' into 'v1'
update server.ts See merge request subtype/subspace-api!6
2 parents 33ad7e7 + 986e0d5 commit 3ae65d7

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/server.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import './utils/env.js' // I hate how I have to do this but whatever. Stupid shim.
22
import { logger } from './utils/logger.js'
3-
import express, { Request, Response } from 'express'
3+
import express, { NextFunction, Request, Response } from 'express'
44
import trmnlRouter from './v1/routers/trmnlRouter.js'
55
import statusRouter from './v1/routers/statusRouter.js'
66
import rateLimit from 'express-rate-limit'
@@ -12,7 +12,6 @@ import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'
1212
import { registerTools } from './v1/mcp/registerTools.js'
1313
import { logIncomingAuth, authRequired, authOptional } from './utils/auth.js'
1414

15-
1615
logger.info('Initializing MCP server...')
1716
const mcpServer = new McpServer({
1817
name: 'subspace-mcp-server',
@@ -34,7 +33,6 @@ registerTools(mcpServer)
3433

3534
// Discovery endpoint
3635
server.get('/sse', logIncomingAuth, authRequired, async (req: Request, res: Response) => {
37-
3836
const transport = new SSEServerTransport('/messages', res)
3937
transports[transport.sessionId] = transport
4038
logger.info('New MCP session created:', transport.sessionId)
@@ -51,7 +49,7 @@ server.post('/messages', logIncomingAuth, authRequired, async (req: Request, res
5149

5250
if (typeof sessionId != 'string') {
5351
logger.error('Bad sessionId', sessionId)
54-
res.status(400).send({ messages: 'Bad sessionId' })
52+
res.status(400).send({ message: 'Bad sessionId' })
5553
}
5654

5755
const transport = transports[sessionId]
@@ -79,6 +77,17 @@ server.use('/health', express.json(), statusRouter)
7977
// reverse proxy
8078
server.set('trust proxy', 1)
8179

80+
server.use(function (err: any, req: Request, res: Response, next: NextFunction) {
81+
if (err.name === 'UnauthorizedError') {
82+
logger.warn('JWT failed authentication')
83+
res.status(401).send({ message: 'Unauthorized' })
84+
} else if (err.code === 'credentials_required') {
85+
logger.warn('No token provided')
86+
res.status(401).json({ message: 'No token provided' })
87+
} else {
88+
next(err)
89+
}
90+
})
8291

8392
server.listen(PORT, () => {
8493
logger.info(`Using log level: ${process.env.LOG_LEVEL || 'info'}`)

0 commit comments

Comments
 (0)