Skip to content

Commit 2895edd

Browse files
Mohammod Al Amin Ashikclaude
andcommitted
feat: add trademark policy, takedown process, schema defaults, and test suite
- CONTRIBUTING.md: trademark & branding policy, contributor terms - TRADEMARK-TAKEDOWN.md: public takedown process for trademark holders - Schema: set official/verified/domain_verified defaults to false (maintainer-only) - Server definitions: 16 curated MCP servers with categories - CI: PR validation + bundle build workflows - Tests: 28 schema validation + consistency + bundle tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 202c436 commit 2895edd

41 files changed

Lines changed: 5240 additions & 8 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Submit a Server
2+
description: Submit an MCP server to the registry
3+
title: "[Server] "
4+
labels: ["new-server"]
5+
body:
6+
- type: input
7+
id: name
8+
attributes:
9+
label: Server Name
10+
placeholder: e.g., GitHub MCP Server
11+
validations:
12+
required: true
13+
- type: input
14+
id: repository
15+
attributes:
16+
label: Repository URL
17+
placeholder: https://github.com/...
18+
validations:
19+
required: true
20+
- type: dropdown
21+
id: transport
22+
attributes:
23+
label: Transport Type
24+
options:
25+
- stdio (local command)
26+
- http (remote URL)
27+
validations:
28+
required: true
29+
- type: textarea
30+
id: description
31+
attributes:
32+
label: Description
33+
placeholder: What does this server do?
34+
validations:
35+
required: true
36+
- type: input
37+
id: install_command
38+
attributes:
39+
label: Install Command (for stdio)
40+
placeholder: e.g., npx -y @example/mcp-server
41+
- type: input
42+
id: url
43+
attributes:
44+
label: Server URL (for http)
45+
placeholder: https://api.example.com/mcp
46+
- type: checkboxes
47+
id: categories
48+
attributes:
49+
label: Categories
50+
options:
51+
- label: Developer Tools
52+
- label: Version Control
53+
- label: Cloud Services
54+
- label: Productivity
55+
- label: Database
56+
- label: Search & Web
57+
- label: Communication
58+
- label: File System
59+
- label: Documentation
60+
- label: AI & Machine Learning

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
## New Server Definition
2+
3+
**Server Name:**
4+
**Server ID:**
5+
**Transport:** stdio / http
6+
**Repository:**
7+
8+
### Checklist
9+
10+
- [ ] JSON file placed in `servers/` directory
11+
- [ ] File name matches server ID (e.g., `com.example.server.json`)
12+
- [ ] Schema validates (`npm run validate servers/your-file.json`)
13+
- [ ] No ID/alias conflicts (`npm run check-conflicts`)
14+
- [ ] Required fields: `id`, `name`, `transport`
15+
- [ ] Description provided
16+
- [ ] At least one category assigned
17+
- [ ] Publisher information included
18+
- [ ] Repository link provided

.github/workflows/build-bundle.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: Build Bundle
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "servers/**"
9+
- "categories.json"
10+
workflow_dispatch:
11+
12+
jobs:
13+
build:
14+
name: Build and Upload Bundle
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout
19+
uses: actions/checkout@v4
20+
21+
- name: Setup Node.js
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: 20
25+
cache: npm
26+
27+
- name: Install dependencies
28+
run: npm ci
29+
30+
- name: Validate all server definitions
31+
run: npm run validate:all
32+
33+
- name: Build bundle
34+
run: npm run build
35+
36+
- name: Upload bundle artifact
37+
uses: actions/upload-artifact@v4
38+
with:
39+
name: bundle
40+
path: bundle/bundle.json
41+
retention-days: 90
42+
43+
- name: Upload bundle to R2
44+
uses: cloudflare/wrangler-action@v3
45+
with:
46+
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
47+
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
48+
command: r2 object put mcpmux-registry/bundle/latest.json --file bundle/bundle.json --content-type application/json

.github/workflows/validate-pr.yml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: Validate PR
2+
3+
on:
4+
pull_request:
5+
paths:
6+
- "servers/**"
7+
8+
jobs:
9+
validate:
10+
name: Validate Server Definitions
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Setup Node.js
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: 20
21+
cache: npm
22+
23+
- name: Install dependencies
24+
run: npm ci
25+
26+
- name: Get changed files
27+
id: changed
28+
uses: tj-actions/changed-files@v44
29+
with:
30+
files: "servers/*.json"
31+
32+
- name: Validate changed server files
33+
run: |
34+
if [ -n "${{ steps.changed.outputs.all_changed_files }}" ]; then
35+
npm run validate -- ${{ steps.changed.outputs.all_changed_files }}
36+
else
37+
echo "No changed server files detected, running full validation as fallback"
38+
npm run validate:all
39+
fi
40+
41+
- name: Check for conflicts
42+
run: npm run check-conflicts

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Dependencies
22
node_modules/
3+
4+
# Bundle output
5+
bundle/
36
npm-debug.log*
47
yarn-debug.log*
58
yarn-error.log*

CONTRIBUTING.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,60 @@ Your server definition will be validated against our schema. Ensure:
6565

6666
Follow the same process. Update your existing file and submit a PR.
6767

68+
---
69+
70+
## Trademark & Branding Policy
71+
72+
### Icons
73+
74+
- You may reference icon URLs in the `icon` field (emoji or external URL)
75+
- McpMux does not host icons — they are loaded directly from the URL you provide
76+
- Do NOT submit URLs to assets you don't have the right to reference
77+
- Prefer emoji icons or GitHub avatar URLs when possible
78+
79+
### Naming & Descriptions
80+
81+
- Server names may reference third-party products for identification
82+
(e.g., "MCP Server for GitHub" is OK)
83+
- Use language like "works with", "for", or "connects to"
84+
- Do NOT use "official", "certified", "endorsed", or "licensed"
85+
unless you represent the trademark owner and have been verified by McpMux
86+
87+
### Official Status
88+
89+
- All community submissions default to `official: false`
90+
- To claim `official: true`, you must represent the trademark owner
91+
and go through the McpMux verification process
92+
- False claims of official status will result in submission removal
93+
94+
### Maintainer-Only Fields
95+
96+
The following fields are controlled by McpMux maintainers and must NOT be set
97+
by contributors:
98+
99+
- `publisher.official` — requires proof of authorization from the trademark holder
100+
- `publisher.verified` — granted after McpMux review
101+
- `publisher.domain_verified` — requires DNS verification
102+
- `badges` containing `"official"` or `"verified"`
103+
104+
PRs that set these fields will be rejected unless submitted by a verified publisher.
105+
106+
---
107+
108+
## Contributor Terms
109+
110+
By submitting a Pull Request to this repository, you agree that:
111+
112+
1. You have the right to reference any URLs included in your submission
113+
2. You are not claiming official status or endorsement you do not have
114+
3. You accept responsibility for trademark compliance of your submission
115+
4. You grant McpMux a license to display the submitted definition, including
116+
rendering any referenced icon URLs, on the McpMux discover site and desktop app
117+
5. You understand McpMux may modify or remove your submission at any time
118+
in response to trademark concerns
119+
120+
---
121+
68122
## Questions?
69123

70124
Open an issue if you need help.

TRADEMARK-TAKEDOWN.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Trademark Takedown Policy
2+
3+
## Overview
4+
5+
McpMux respects the intellectual property rights of trademark holders. If you
6+
believe that a server listing in this registry infringes on your trademark,
7+
please follow the process below.
8+
9+
## How to Submit a Takedown Request
10+
11+
### Option 1: GitHub Issue
12+
13+
Open an issue in this repository with the title **"Trademark Takedown Request: [Brand Name]"**
14+
and include the information listed under [Required Information](#required-information).
15+
16+
### Option 2: Email
17+
18+
Send an email to **legal@mcpmux.com** with the subject line
19+
**"Trademark Takedown Request"** and include the information listed below.
20+
21+
## Required Information
22+
23+
Please provide the following in your request:
24+
25+
1. **Your name and contact information**
26+
2. **Company or organization you represent**
27+
3. **The trademark(s) at issue** (registration number if applicable)
28+
4. **The specific server listing(s)** that you believe infringe your trademark
29+
(include the server ID or link to the listing)
30+
5. **Description of the concern** — explain how the listing infringes your
31+
trademark (e.g., unauthorized use of logo, false claim of official status,
32+
misleading endorsement language)
33+
6. **Requested action** — what you would like McpMux to do (e.g., remove the
34+
icon, change the name, remove the listing entirely)
35+
7. **A statement** that you are the trademark owner or authorized to act on
36+
their behalf
37+
38+
## What Happens Next
39+
40+
1. **Acknowledgment** — We will acknowledge receipt of your request within
41+
**2 business days**
42+
2. **Evaluation** — We will review the claim and verify that you are the
43+
trademark owner or authorized representative
44+
3. **Action** — If the claim is valid, we will remove or modify the offending
45+
listing within **48 hours** of completing our evaluation
46+
4. **Notification** — We will notify the original contributor of the action
47+
taken and the reason
48+
5. **Resolution** — We will confirm the resolution with the complainant
49+
50+
## Scope
51+
52+
This policy covers:
53+
54+
- Unauthorized use of trademark logos or brand imagery in server icons
55+
- False claims of official status or endorsement
56+
- Server names or descriptions that imply affiliation where none exists
57+
- Any other trademark misuse in server definitions
58+
59+
## Good Faith
60+
61+
McpMux operates this registry in good faith as a community resource. Server
62+
definitions are contributed by community members, not by McpMux. We do not
63+
verify the trademark compliance of every submission but act promptly on valid
64+
complaints.
65+
66+
## Counter-Notice
67+
68+
If your listing was removed or modified and you believe the takedown was in
69+
error, you may submit a counter-notice explaining why you believe your use is
70+
lawful (e.g., nominative fair use, authorized use). We will evaluate
71+
counter-notices on a case-by-case basis.

categories.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[
2+
{ "id": "developer-tools", "name": "Developer Tools", "icon": "wrench", "display_order": 1 },
3+
{ "id": "version-control", "name": "Version Control", "icon": "git-branch", "display_order": 2 },
4+
{ "id": "cloud", "name": "Cloud Services", "icon": "cloud", "display_order": 3 },
5+
{ "id": "productivity", "name": "Productivity", "icon": "zap", "display_order": 4 },
6+
{ "id": "database", "name": "Database", "icon": "database", "display_order": 5 },
7+
{ "id": "search", "name": "Search & Web", "icon": "search", "display_order": 6 },
8+
{ "id": "communication", "name": "Communication", "icon": "message-circle", "display_order": 7 },
9+
{ "id": "file-system", "name": "File System", "icon": "folder", "display_order": 8 },
10+
{ "id": "documentation", "name": "Documentation", "icon": "book-open", "display_order": 9 },
11+
{ "id": "ai-ml", "name": "AI & Machine Learning", "icon": "brain", "display_order": 10 },
12+
{ "id": "monitoring", "name": "Monitoring & Observability", "icon": "activity", "display_order": 11 },
13+
{ "id": "security", "name": "Security", "icon": "shield", "display_order": 12 }
14+
]

0 commit comments

Comments
 (0)