Skip to main content
Glama

MCP (Model Context Protocol) Server

A Node.js/TypeScript server that implements the Model Context Protocol with integrations for GitHub and Notion.

πŸš€ Features

  • Express.js Server with TypeScript support

  • GitHub Integration using Octokit REST API

  • Notion Integration for task management

  • Docker Support for containerized deployment

  • Webhook Endpoints for GitHub event handling

Related MCP server: GitHub MCP Server

πŸ“‹ Prerequisites

  • Node.js 18+

  • Docker (optional)

  • GitHub Personal Access Token

  • Notion API Key and Database ID

πŸ› οΈ Installation

  1. Clone the repository

    git clone <your-repo-url> cd MCP
  2. Install dependencies

    npm install
  3. Set up environment variables

    cp env.example .env # Edit .env with your API keys
  4. Build the project

    npm run build

πŸ”§ Configuration

Environment Variables

Create a .env file with the following variables:

# GitHub Personal Access Token GITHUB_TOKEN=your_github_token_here # Notion API Key NOTION_API_KEY=your_notion_api_key_here # Notion Database ID NOTION_DATABASE_ID=your_database_id_here # Node environment NODE_ENV=development

API Keys Setup

  1. GitHub Token:

    • Go to https://github.com/settings/tokens

    • Create a new token with repo scope

  2. Notion Integration:

    • Go to https://www.notion.so/my-integrations

    • Create a new integration

    • Share your database with the integration

πŸƒβ€β™‚οΈ Running the Application

Development Mode

npm run dev

Production Mode

npm run build npm start

Docker

# Build and run docker-compose up --build # Run in background docker-compose up -d

πŸ“‘ API Endpoints

  • GET - Health check endpoint

  • POST - GitHub webhook handler

πŸ› οΈ Available Tools

GitHub Tools (src/tools/github.ts)

  • createIssueComment() - Post comments on GitHub issues

  • getIssue() - Get issue details

  • listIssues() - List repository issues

Notion Tools (src/tools/notion.ts)

  • createTaskInNotion() - Create tasks in Notion database

  • getPage() - Get page details

  • getDatabase() - Get database structure

  • queryDatabase() - Query database

πŸ§ͺ Testing

Test the webhook endpoint:

curl -X POST http://localhost:3000/webhook/github \ -H "Content-Type: application/json" \ -d '{ "title": "Test Issue", "body": "This is a test issue", "number": 123 }'

πŸ“ Project Structure

MCP/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ tools/ β”‚ β”‚ β”œβ”€β”€ github.ts # GitHub API integration β”‚ β”‚ └── notion.ts # Notion API integration β”‚ β”œβ”€β”€ index.ts # Main server file β”‚ └── workflow.ts # GitHub issue handling β”œβ”€β”€ dist/ # Compiled JavaScript β”œβ”€β”€ Dockerfile # Docker configuration β”œβ”€β”€ docker-compose.yml # Docker Compose setup β”œβ”€β”€ tsconfig.json # TypeScript configuration └── package.json # Dependencies and scripts

🀝 Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

πŸ“„ License

This project is licensed under the ISC License.

-
security - not tested
F
license - not found
-
quality - not tested

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/Nawaf-TBE/MCP'

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