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
repo
scope
-
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