README Documentation
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
๐ Prerequisites
- Node.js 18+
- Docker (optional)
- GitHub Personal Access Token
- Notion API Key and Database ID
๐ ๏ธ Installation
-
Clone the repository
git clone <your-repo-url> cd MCP -
Install dependencies
npm install -
Set up environment variables
cp env.example .env # Edit .env with your API keys -
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
-
GitHub Token:
- Go to https://github.com/settings/tokens
- Create a new token with
reposcope
-
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
/webhook/github- GitHub webhook handler
๐ ๏ธ Available Tools
GitHub Tools (src/tools/github.ts)
createIssueComment()- Post comments on GitHub issuesgetIssue()- Get issue detailslistIssues()- List repository issues
Notion Tools (src/tools/notion.ts)
createTaskInNotion()- Create tasks in Notion databasegetPage()- Get page detailsgetDatabase()- Get database structurequeryDatabase()- 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
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
๐ License
This project is licensed under the ISC License.
๐ Links
Quick Actions
Key Features
Model Context Protocol
Secure Communication
Real-time Updates
Open Source