MCP SaaS Bridge
by Lucasyao1985
README.md
# MCP SaaS Bridge
A single MCP server that connects your AI agent to **Jira**, **Notion**, and **GitHub** — in one unified interface. One config, one deployment, every tool your team uses.
## What it does
Your AI agent (Claude Desktop, Cursor, OpenClaw) can now:
| Action | Jira | Notion | GitHub |
|---|---|---|---|
| Search / browse | Search issues by JQL | Search pages by keyword | List open PRs |
| Create | Create tickets with type & priority | Create pages in any workspace | Create issues with labels |
| Update | Transition status, add comments | Append content to pages | — |
## Quick start
### 1. Set environment variables
```bash
cp .env.example .env
# Add at least one tool credentials:
# JIRA_URL=https://yourcompany.atlassian.net
# JIRA_EMAIL=you@company.com
# JIRA_API_TOKEN=your-token
# NOTION_API_KEY=secret_xxxxx
# GITHUB_TOKEN=ghp_xxxxx
```
### 2. Run
```bash
# Docker
docker compose up
# Or standalone
npm install && npm run build && npm start
```
### 3. Connect to Claude Desktop
```json
{
"mcpServers": {
"saas-bridge": {
"command": "node",
"args": ["/absolute/path/to/mcp-saas-bridge/dist/index.js"],
"env": {
"JIRA_URL": "https://yourcompany.atlassian.net",
"JIRA_EMAIL": "you@company.com",
"JIRA_API_TOKEN": "your-token",
"NOTION_API_KEY": "secret_xxxxx",
"GITHUB_TOKEN": "ghp_xxxxx"
}
}
}
}
```
> Configure only the tools you use. Unused services can stay commented out.
## Example conversations
**Your PM**: "Summarize my open Jira tickets and write a project update to Notion"
**Claude**:
1. Calls `jira_search_issues` → gets 12 open tickets
2. Calls `notion_create_page` → writes a summary to your project docs
**Your dev**: "Show me open PRs in my repo and create a Jira ticket for any that need review"
**Claude**:
1. Calls `github_list_prs` → finds 3 open PRs
2. Calls `jira_create_issue` → creates review tasks in Jira
## Security
- All tokens stay local — no data leaves your infrastructure
- Uses official SDKs for each service (no unofficial wrappers)
- OAuth2 and token-based auth only — no password storage
- Supports environment variable injection from Docker secrets or vaults
## Tech stack
- [MCP SDK](https://github.com/modelcontextprotocol/sdk) — Model Context Protocol
- Node.js / TypeScript
- [@notionhq/client](https://github.com/makenotion/notion-sdk-js) — Notion SDK
- [@octokit/rest](https://github.com/octokit/rest.js) — GitHub SDK
- Docker Compose for deployment
---
**Built on the [Model Context Protocol](https://modelcontextprotocol.io/).**
Maintenance
ActivityStale
ResponsivenessNo issues