Skip to content

Commit 0217546

Browse files
authored
feat: add multi-transport variants for MCP server definitions (#21)
* feat: add multi-transport variants for MCP server definitions Split single server definitions into multiple variants based on transport/connection method and audience. Users can now choose between Remote HTTP (OAuth), Docker, npx, and self-hosted/enterprise options when installing a server. New variants added: - GitHub: Remote HTTP, Docker, Enterprise (GHES/GHEC) - Grafana: Self-Hosted, Cloud - Notion: Remote HTTP, npx, Docker - Sentry: Remote HTTP, npx, Self-Hosted - Supabase: Remote HTTP, npx - Playwright: npx, Docker - Slack: npx, Docker - Brave Search: npx, Docker - Exa Search: npx, Remote HTTP Total: 28 definitions (up from 16). All pass schema validation. Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com> * feat: add optional PAT input to GitHub remote HTTP variant Allow users to optionally provide a Personal Access Token instead of using the default OAuth flow. Auth type changed to optional_api_key. Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com> * feat: split GitHub HTTP into separate OAuth and PAT variants - com.github-mcp-http: pure OAuth, zero config - com.github-mcp-http-pat: PAT-based auth with required token input Cleaner separation so users pick the auth method they want. Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com> * feat: add headers support to HTTP transport schema, use in GitHub PAT variant - Add optional `headers` field to HTTP transport schema for sending custom headers (supports ${input:ID} interpolation) - GitHub PAT variant now sends `Authorization: Bearer ${input:GITHUB_TOKEN}` Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com> * feat: merge server variants, remove GitHub OAuth HTTP (no DCR) - Merge GitHub Docker + Enterprise into single definition with optional GITHUB_HOST input (empty defaults to github.com internally) - Merge Grafana Self-Hosted + Cloud into single Docker definition with all inputs (URL required, username/password optional) - Remove GitHub Remote OAuth (com.github-mcp-http) - no DCR support - Fix GITHUB_HOST type from url to text (expects hostname, not URL) - Keep Sentry npx + Self-Hosted separate (MCP_DISABLE_SKILLS=seer) Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com> --------- Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
1 parent beabc97 commit 0217546

20 files changed

Lines changed: 688 additions & 44 deletions

schemas/server-definition.schema.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,11 @@
167167
"format": "uri",
168168
"description": "HTTP endpoint URL (supports Streamable HTTP)"
169169
},
170+
"headers": {
171+
"type": "object",
172+
"additionalProperties": { "type": "string" },
173+
"description": "HTTP headers to send with requests (supports ${input:ID} interpolation)"
174+
},
170175
"metadata": {
171176
"$ref": "#/$defs/metadata"
172177
}

servers/com.github-mcp-docker.json

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
{
2+
"$schema": "../schemas/server-definition.schema.json",
3+
"id": "com.github-mcp-docker",
4+
"name": "GitHub (Docker)",
5+
"alias": "gh-docker",
6+
"description": "Interact with GitHub repositories, issues, pull requests, and code security via Docker container. Supports both github.com and GitHub Enterprise instances. Requires Docker installed.",
7+
"icon": "https://avatars.githubusercontent.com/u/9919?v=4",
8+
"schema_version": "2.1",
9+
"categories": ["developer-tools", "version-control"],
10+
"tags": ["git", "github", "code", "issues", "pull-requests", "repos", "actions", "code-review", "enterprise", "ghes"],
11+
12+
"transport": {
13+
"type": "stdio",
14+
"command": "docker",
15+
"args": [
16+
"run", "-i", "--rm",
17+
"-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
18+
"-e", "GITHUB_HOST",
19+
"ghcr.io/github/github-mcp-server"
20+
],
21+
"env": {
22+
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:GITHUB_TOKEN}",
23+
"GITHUB_HOST": "${input:GITHUB_HOST}"
24+
},
25+
"metadata": {
26+
"inputs": [
27+
{
28+
"id": "GITHUB_TOKEN",
29+
"label": "GitHub Personal Access Token",
30+
"description": "Token used to authenticate with the GitHub API. Requires repo and read:org scopes.",
31+
"type": "text",
32+
"required": true,
33+
"secret": true,
34+
"placeholder": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
35+
"obtain": {
36+
"url": "https://github.com/settings/tokens/new",
37+
"instructions": "1. Click 'Generate new token (classic)'\n2. Give it a name like 'McpMux'\n3. Select scopes: repo, read:org\n4. Click 'Generate token'\n5. Copy the token (starts with ghp_)",
38+
"button_label": "Create Token"
39+
}
40+
},
41+
{
42+
"id": "GITHUB_HOST",
43+
"label": "GitHub Host",
44+
"description": "Hostname of your GitHub instance. Leave empty for github.com. For GitHub Enterprise Server, enter your instance hostname (e.g., github.mycompany.com). For GHEC Data Residency, use subdomain.ghe.com.",
45+
"type": "text",
46+
"required": false,
47+
"secret": false,
48+
"placeholder": "github.mycompany.com"
49+
}
50+
]
51+
}
52+
},
53+
54+
"auth": {
55+
"type": "api_key",
56+
"instructions": "Create a personal access token at https://github.com/settings/tokens (or your Enterprise instance) with repo and read:org scopes"
57+
},
58+
59+
"contributor": {
60+
"name": "GitHub",
61+
"github": "github",
62+
"url": "https://github.com"
63+
},
64+
65+
"links": {
66+
"repository": "https://github.com/github/github-mcp-server",
67+
"homepage": "https://github.com",
68+
"documentation": "https://github.com/github/github-mcp-server#readme"
69+
},
70+
71+
"platforms": ["all"],
72+
73+
"capabilities": {
74+
"tools": true,
75+
"resources": true,
76+
"prompts": true,
77+
"read_only_mode": false
78+
},
79+
80+
"changelog_url": "https://github.com/github/github-mcp-server/releases"
81+
}
Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,26 @@
11
{
22
"$schema": "../schemas/server-definition.schema.json",
3-
"id": "com.github-mcp",
4-
"name": "GitHub",
5-
"alias": "gh",
6-
"description": "Interact with GitHub repositories, issues, pull requests, actions, and code security through the official GitHub MCP server.",
3+
"id": "com.github-mcp-http-pat",
4+
"name": "GitHub (Remote PAT)",
5+
"alias": "gh-pat",
6+
"description": "Interact with GitHub repositories, issues, pull requests, actions, and code security through GitHub's hosted remote MCP server. Authenticates with a Personal Access Token.",
77
"icon": "https://avatars.githubusercontent.com/u/9919?v=4",
88
"schema_version": "2.1",
99
"categories": ["developer-tools", "version-control"],
10-
"tags": ["git", "github", "code", "issues", "pull-requests", "repos", "actions", "code-review"],
10+
"tags": ["git", "github", "code", "issues", "pull-requests", "repos", "actions", "code-review", "pat"],
1111

1212
"transport": {
13-
"type": "stdio",
14-
"command": "docker",
15-
"args": [
16-
"run", "-i", "--rm", "-e",
17-
"GITHUB_PERSONAL_ACCESS_TOKEN",
18-
"ghcr.io/github/github-mcp-server"
19-
],
20-
"env": {
21-
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:GITHUB_TOKEN}"
13+
"type": "http",
14+
"url": "https://api.githubcopilot.com/mcp/",
15+
"headers": {
16+
"Authorization": "Bearer ${input:GITHUB_TOKEN}"
2217
},
2318
"metadata": {
2419
"inputs": [
2520
{
2621
"id": "GITHUB_TOKEN",
2722
"label": "GitHub Personal Access Token",
28-
"description": "Token used to authenticate with the GitHub API. Requires repo and read:org scopes.",
23+
"description": "PAT sent as Bearer token to the GitHub remote MCP server. Requires repo and read:org scopes.",
2924
"type": "text",
3025
"required": true,
3126
"secret": true,
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
22
"$schema": "../schemas/server-definition.schema.json",
3-
"id": "com.grafana-mcp",
4-
"name": "Grafana",
3+
"id": "com.grafana-mcp-docker",
4+
"name": "Grafana (Docker)",
55
"alias": "grafana",
6-
"description": "Search dashboards, query Prometheus and Loki datasources, manage alerts, and investigate incidents through the official Grafana MCP server.",
6+
"description": "Search dashboards, query Prometheus and Loki datasources, manage alerts, and investigate incidents on any Grafana instance (self-hosted or Grafana Cloud) via Docker.",
77
"icon": "https://avatars.githubusercontent.com/u/7195757?v=4",
88
"schema_version": "2.1",
99
"categories": ["monitoring", "developer-tools"],
10-
"tags": ["grafana", "monitoring", "dashboards", "prometheus", "loki", "alerts", "observability", "metrics"],
10+
"tags": ["grafana", "grafana-cloud", "monitoring", "dashboards", "prometheus", "loki", "alerts", "observability", "metrics", "incidents", "oncall"],
1111

1212
"transport": {
1313
"type": "stdio",
@@ -34,7 +34,7 @@
3434
{
3535
"id": "GRAFANA_URL",
3636
"label": "Grafana URL",
37-
"description": "URL of your Grafana instance. Include the protocol (http:// or https://).",
37+
"description": "URL of your Grafana instance. Use http://localhost:3000 for local, or https://myinstance.grafana.net for Grafana Cloud.",
3838
"type": "url",
3939
"required": true,
4040
"secret": false,

servers/com.notion-mcp-docker.json

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"$schema": "../schemas/server-definition.schema.json",
3+
"id": "com.notion-mcp-docker",
4+
"name": "Notion (Docker)",
5+
"alias": "notion-docker",
6+
"description": "Read and write Notion pages, databases, and blocks via Docker container. Uses a Notion integration token for authentication.",
7+
"icon": "https://avatars.githubusercontent.com/u/4792552?v=4",
8+
"schema_version": "2.1",
9+
"categories": ["productivity", "documentation"],
10+
"tags": ["notion", "notes", "wiki", "database", "pages", "blocks", "knowledge-base", "docker"],
11+
12+
"transport": {
13+
"type": "stdio",
14+
"command": "docker",
15+
"args": ["run", "--rm", "-i", "-e", "NOTION_TOKEN", "mcp/notion"],
16+
"env": {
17+
"NOTION_TOKEN": "${input:NOTION_TOKEN}"
18+
},
19+
"metadata": {
20+
"inputs": [
21+
{
22+
"id": "NOTION_TOKEN",
23+
"label": "Notion Integration Token",
24+
"description": "Internal integration secret token from Notion. Share the relevant pages/databases with your integration after creating it.",
25+
"type": "text",
26+
"required": true,
27+
"secret": true,
28+
"placeholder": "ntn_xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
29+
"obtain": {
30+
"url": "https://www.notion.so/profile/integrations",
31+
"instructions": "1. Go to notion.so/profile/integrations\n2. Click 'New integration'\n3. Give it a name and select your workspace\n4. Copy the Internal Integration Secret (starts with ntn_)\n5. Share desired pages/databases with the integration",
32+
"button_label": "Create Integration"
33+
}
34+
}
35+
]
36+
}
37+
},
38+
39+
"auth": {
40+
"type": "api_key",
41+
"instructions": "Create an integration at notion.so/profile/integrations and share pages with it"
42+
},
43+
44+
"contributor": {
45+
"name": "Notion",
46+
"github": "makenotion",
47+
"url": "https://notion.so"
48+
},
49+
50+
"links": {
51+
"repository": "https://github.com/makenotion/notion-mcp-server",
52+
"homepage": "https://notion.so",
53+
"documentation": "https://developers.notion.com"
54+
},
55+
56+
"platforms": ["all"],
57+
58+
"capabilities": {
59+
"tools": true,
60+
"resources": true,
61+
"prompts": false,
62+
"read_only_mode": false
63+
},
64+
65+
"changelog_url": "https://github.com/makenotion/notion-mcp-server/releases"
66+
}

servers/com.notion-mcp-http.json

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{
2+
"$schema": "../schemas/server-definition.schema.json",
3+
"id": "com.notion-mcp-http",
4+
"name": "Notion (Remote)",
5+
"alias": "notion",
6+
"description": "Read and write Notion pages, databases, and blocks through Notion's hosted remote MCP server. No local setup required, authenticates via OAuth.",
7+
"icon": "https://avatars.githubusercontent.com/u/4792552?v=4",
8+
"schema_version": "2.1",
9+
"categories": ["productivity", "documentation"],
10+
"tags": ["notion", "notes", "wiki", "database", "pages", "blocks", "knowledge-base"],
11+
12+
"transport": {
13+
"type": "http",
14+
"url": "https://mcp.notion.com/mcp",
15+
"metadata": {
16+
"inputs": []
17+
}
18+
},
19+
20+
"auth": {
21+
"type": "oauth",
22+
"instructions": "Authenticates via OAuth 2.1 in your browser using your Notion account. No token setup needed."
23+
},
24+
25+
"contributor": {
26+
"name": "Notion",
27+
"github": "makenotion",
28+
"url": "https://notion.so"
29+
},
30+
31+
"links": {
32+
"repository": "https://github.com/makenotion/notion-mcp-server",
33+
"homepage": "https://notion.so",
34+
"documentation": "https://developers.notion.com/docs/mcp"
35+
},
36+
37+
"platforms": ["all"],
38+
39+
"capabilities": {
40+
"tools": true,
41+
"resources": true,
42+
"prompts": false,
43+
"read_only_mode": false
44+
},
45+
46+
"changelog_url": "https://github.com/makenotion/notion-mcp-server/releases"
47+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"$schema": "../schemas/server-definition.schema.json",
3-
"id": "com.notion-mcp",
4-
"name": "Notion",
5-
"alias": "notion",
6-
"description": "Read and write Notion pages, databases, blocks, and data sources through the official Notion MCP server.",
3+
"id": "com.notion-mcp-npx",
4+
"name": "Notion (npx)",
5+
"alias": "notion-npx",
6+
"description": "Read and write Notion pages, databases, and blocks locally via npx. Uses a Notion integration token for authentication.",
77
"icon": "https://avatars.githubusercontent.com/u/4792552?v=4",
88
"schema_version": "2.1",
99
"categories": ["productivity", "documentation"],
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"$schema": "../schemas/server-definition.schema.json",
3-
"id": "com.sentry-mcp",
4-
"name": "Sentry",
3+
"id": "com.sentry-mcp-http",
4+
"name": "Sentry (Remote)",
55
"alias": "sentry",
6-
"description": "Query and manage Sentry issues, errors, performance data, and project settings through the Sentry API.",
6+
"description": "Query and manage Sentry issues, errors, performance data, and project settings through Sentry's hosted remote MCP server. No local setup required.",
77
"icon": "\ud83d\udc1b",
88
"schema_version": "2.1",
99
"categories": ["monitoring", "developer-tools"],
@@ -29,6 +29,7 @@
2929
},
3030

3131
"links": {
32+
"repository": "https://github.com/getsentry/sentry-mcp",
3233
"homepage": "https://sentry.io",
3334
"documentation": "https://docs.sentry.io"
3435
},

servers/com.sentry-mcp-npx.json

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"$schema": "../schemas/server-definition.schema.json",
3+
"id": "com.sentry-mcp-npx",
4+
"name": "Sentry (Local)",
5+
"alias": "sentry-local",
6+
"description": "Query and manage Sentry issues, errors, performance data, and project settings locally via npx. Supports AI-powered search with your own LLM API key.",
7+
"icon": "\ud83d\udc1b",
8+
"schema_version": "2.1",
9+
"categories": ["monitoring", "developer-tools"],
10+
"tags": ["sentry", "errors", "monitoring", "debugging", "performance", "observability"],
11+
12+
"transport": {
13+
"type": "stdio",
14+
"command": "npx",
15+
"args": ["-y", "@sentry/mcp-server@latest"],
16+
"env": {
17+
"SENTRY_ACCESS_TOKEN": "${input:SENTRY_ACCESS_TOKEN}"
18+
},
19+
"metadata": {
20+
"inputs": [
21+
{
22+
"id": "SENTRY_ACCESS_TOKEN",
23+
"label": "Sentry User Auth Token",
24+
"description": "User auth token from Sentry. Requires scopes: org:read, project:read, project:write, team:read, event:write.",
25+
"type": "text",
26+
"required": true,
27+
"secret": true,
28+
"placeholder": "sntryu_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
29+
"obtain": {
30+
"url": "https://sentry.io/settings/account/api/auth-tokens/",
31+
"instructions": "1. Go to Sentry Settings > API > Auth Tokens\n2. Click 'Create New Token'\n3. Select scopes: org:read, project:read, project:write, team:read, team:write, event:write\n4. Click 'Create Token'\n5. Copy the generated token",
32+
"button_label": "Create Token"
33+
}
34+
}
35+
]
36+
}
37+
},
38+
39+
"auth": {
40+
"type": "api_key",
41+
"instructions": "Create a User Auth Token at Sentry Settings > API > Auth Tokens with org:read, project:read, project:write scopes"
42+
},
43+
44+
"contributor": {
45+
"name": "Sentry",
46+
"github": "getsentry",
47+
"url": "https://sentry.io"
48+
},
49+
50+
"links": {
51+
"repository": "https://github.com/getsentry/sentry-mcp",
52+
"homepage": "https://sentry.io",
53+
"documentation": "https://docs.sentry.io"
54+
},
55+
56+
"platforms": ["all"],
57+
58+
"capabilities": {
59+
"tools": true,
60+
"resources": true,
61+
"prompts": false,
62+
"read_only_mode": false
63+
},
64+
65+
"changelog_url": "https://github.com/getsentry/sentry-mcp/releases"
66+
}

0 commit comments

Comments
 (0)