Skip to main content
Glama
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/).**