Skip to main content
Glama
index.js1.64 kB
import express from 'express'; import cors from 'cors'; import dotenv from 'dotenv'; import { logger } from './utils/logger.js'; import { searchRouter } from './routes/search.js'; import { healthRouter } from './routes/health.js'; // 加载环境变量 dotenv.config(); const app = express(); const PORT = process.env.PORT || 3000; // 中间件 app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); // 请求日志中间件 app.use((req, res, next) => { logger.info(`${req.method} ${req.path}`, { ip: req.ip, userAgent: req.get('User-Agent') }); next(); }); // 路由 app.use('/api/search', searchRouter); app.use('/api/health', healthRouter); // 根路径 app.get('/', (req, res) => { res.json({ name: 'Spider MCP', version: '1.0.0', description: 'Web search MCP implementation using pure web scraping', endpoints: { search: '/api/search', health: '/api/health' } }); }); // 404处理 app.use('*', (req, res) => { res.status(404).json({ error: 'Endpoint not found', path: req.originalUrl }); }); // 错误处理中间件 app.use((err, req, res, next) => { logger.error('Unhandled error:', err); res.status(500).json({ error: 'Internal server error', message: process.env.NODE_ENV === 'development' ? err.message : 'Something went wrong' }); }); // 启动服务器 app.listen(PORT, () => { logger.info(`Spider MCP server running on port ${PORT}`); logger.info(`Environment: ${process.env.NODE_ENV || 'development'}`); }); export default app;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bosegluon2/spider-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server