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