Skip to main content
Glama

Notion MCP Server

by snowan
server.js3.76 kB
const fs = require('fs'); const path = require('path'); const logFilePath = path.join(__dirname, '../cursor_launch.log'); const log = (message) => { fs.appendFileSync(logFilePath, `[${new Date().toISOString()}] ${message}\n`); }; log('--- Cursor Launch Log Start ---'); log(`Script starting in directory: ${process.cwd()}`); log(`Initial PORT env var: ${process.env.PORT}`); log(`Initial NOTION_API_KEY env var set: ${!!process.env.NOTION_API_KEY}, length: ${process.env.NOTION_API_KEY ? process.env.NOTION_API_KEY.length : 0}`); require('dotenv').config(); log('dotenv configured.'); log(`PORT after dotenv: ${process.env.PORT}`); log(`NOTION_API_KEY after dotenv set: ${!!process.env.NOTION_API_KEY}, length: ${process.env.NOTION_API_KEY ? process.env.NOTION_API_KEY.length : 0}`); const express = require('express'); const cors = require('cors'); const bodyParser = require('body-parser'); // Import routes const notionRoutes = require('./routes/notion'); const app = express(); const PORT = process.env.PORT || 8082; // Middleware app.use(cors()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // Welcome route app.get('/', (req, res) => { res.json({ message: 'Welcome to the Notion MCP Server API', status: 'running' }); }); // Routes app.use('/api/notion', notionRoutes); // Define MCP capabilities app.get('/mcp/manifest.json', (req, res) => { res.json({ name: 'notion-mcp-server', description: 'MCP Server for connecting to Notion', version: '1.0.0', functions: [ { name: 'search_pages', description: 'Search Notion pages by title or content', parameters: { type: 'object', properties: { query: { type: 'string', description: 'The search query' } }, required: ['query'] } }, { name: 'get_page', description: 'Get a Notion page by ID', parameters: { type: 'object', properties: { page_id: { type: 'string', description: 'The Notion page ID' } }, required: ['page_id'] } }, { name: 'query_database', description: 'Query a Notion database', parameters: { type: 'object', properties: { database_id: { type: 'string', description: 'The Notion database ID (defaults to env variable if not provided)' }, filter: { type: 'object', description: 'Optional filter criteria' }, sorts: { type: 'array', description: 'Optional sorting criteria' } }, required: [] } }, { name: 'create_page', description: 'Create a new page in Notion', parameters: { type: 'object', properties: { parent: { type: 'object', description: 'Parent page or database' }, properties: { type: 'object', description: 'Page properties' }, children: { type: 'array', description: 'Page content blocks' } }, required: ['parent', 'properties'] } } ] }); }); // Error handling middleware app.use((err, req, res, next) => { console.error(err.stack); res.status(500).json({ error: 'Something went wrong!', message: err.message }); }); // Start server app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); }); module.exports = app;

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/snowan/notion-mcp-server'

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