You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Re-structure instructions for consistency
- Apply corrections to instructions and README
- Minor polishing of README
---------
Signed-off-by: Dan Barr <[email protected]>
Co-authored-by: Dan Barr <[email protected]>
Copy file name to clipboardExpand all lines: README.md
+59-31Lines changed: 59 additions & 31 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ This repository contains the registry of MCP (Model Context Protocol) servers av
4
4
5
5
## What is this?
6
6
7
-
Think of this as a catalog of tools that AI assistants can use. Each entry in this registry represents a server that provides specific capabilities - like interacting with GitHub, querying databases, or fetching web content.
7
+
Think of this as a catalog of tools that AI assistants can use. Each entry in this registry represents a server that provides specific capabilities—like interacting with GitHub, querying databases, or fetching web content.
8
8
9
9
## How to Add Your MCP Server
10
10
@@ -33,16 +33,17 @@ Create a `spec.yaml` file with this minimum information:
33
33
34
34
```yaml
35
35
# Required fields - you must provide these
36
-
image: docker.io/myorg/my-server:latest # Your Docker image
36
+
image: docker.io/myorg/my-server:latest # Your Docker image
37
37
description: What your server does in one sentence
38
-
transport: stdio # How your server communicates (usually "stdio")
38
+
transport: stdio # How your server communicates (usually "stdio")
39
+
tier: Community # "Official" or "Community"
40
+
status: Active # "Active" or "Deprecated"
41
+
tools:
42
+
- tool_name_1 # List the tools your server provides
43
+
- tool_name_2 # Or use "set_during_runtime" if tools aren't knowable up-front
39
44
40
45
# Recommended fields - helps users understand your server
41
-
tools:
42
-
- tool_name_1 # List the tools your server provides
43
-
- tool_name_2
44
-
45
-
repository_url: https://github.com/myorg/my-server # Where to find your code
46
+
repository_url: https://github.com/myorg/my-server # Where to find your code
46
47
```
47
48
48
49
#### For Remote Servers
@@ -51,19 +52,20 @@ Create a `spec.yaml` file with this minimum information:
51
52
52
53
```yaml
53
54
# Required fields - you must provide these
54
-
url: https://api.example.com/mcp # Your MCP server endpoint
55
+
url: https://api.example.com/mcp # Your MCP server endpoint
55
56
description: What your server does in one sentence
56
-
transport: sse # Remote servers use "sse" or "streamable-http" (not "stdio")
57
+
transport: streamable-http # Remote servers use "streamable-http" (preferred) or "sse" (not "stdio")
58
+
tier: Community # "Official" or "Community"
59
+
status: Active # "Active" or "Deprecated"
60
+
tools:
61
+
- tool_name_1 # List the tools your server provides
62
+
- tool_name_2 # Or use "set_during_runtime" if tools aren't knowable up-front
57
63
58
64
# Recommended fields - helps users understand your server
59
-
tools:
60
-
- tool_name_1 # List the tools your server provides
61
-
- tool_name_2
62
-
63
-
repository_url: https://github.com/myorg/my-server # Where to find your code
65
+
repository_url: https://github.com/myorg/my-server # Where to find your code
64
66
```
65
67
66
-
### Step 3: Add More Details (Optional but Helpful)
68
+
### Step 3: Add More Details (Optional but Recommended)
67
69
68
70
You can add more information to help users:
69
71
@@ -75,7 +77,7 @@ env_vars:
75
77
- name: API_KEY
76
78
description: Your API key from example.com
77
79
required: true
78
-
secret: true # Mark sensitive data
80
+
secret: true # Mark sensitive data
79
81
80
82
- name: TIMEOUT
81
83
description: Request timeout in seconds
@@ -89,8 +91,8 @@ tags:
89
91
- productivity
90
92
91
93
# Server classification
92
-
tier: Community # or "Official" if maintained by the protocol team
93
-
status: Active # or "Beta", "Deprecated"
94
+
tier: Community # or "Official" if maintained by the protocol team
95
+
status: Active # or "Deprecated"
94
96
```
95
97
96
98
### Real Examples
@@ -129,15 +131,15 @@ status: Active
129
131
```yaml
130
132
url: https://api.example.com/mcp/v1
131
133
description: Provides access to Example API services via MCP
This tells ToolHive how to communicate with your server:
169
171
170
172
For **container-based servers**:
173
+
171
174
- `stdio`- Standard input/output (most common)
172
175
- `sse`- Server-sent events
173
176
- `streamable-http`- HTTP streaming
174
177
175
178
For **remote servers**:
176
-
- `sse`- Server-sent events (recommended)
177
-
- `streamable-http`- HTTP streaming
179
+
180
+
- `streamable-http`- HTTP streaming (recommended)
181
+
- `sse`- Server-sent events (deprecated but still supported)
178
182
- **Note:** Remote servers cannot use `stdio`
179
183
180
-
If you're not sure, use `stdio` for containers and `sse` for remote servers.
184
+
If you're not sure, use `stdio` for containers and `streamable-http` for remote servers.
185
+
186
+
**Important:** For container servers using `streamable-http` or `sse` transport, you must also specify the `target_port` field.
181
187
182
188
### What is "tier"?
183
189
@@ -189,14 +195,23 @@ If you're not sure, use `stdio` for containers and `sse` for remote servers.
189
195
- `Active`- Fully functional and maintained
190
196
- `Deprecated`- No longer maintained, will be removed
191
197
198
+
### What about the "tools" field?
199
+
200
+
List all the tools your server provides. If your server's tools aren't knowable until runtime (for example, if they're dynamically generated based on configuration), you can use `"set_during_runtime"` as the value instead of listing specific tool names.
201
+
192
202
### Do I need a Docker image?
193
203
194
-
**For container-based servers:** Yes! Your MCP server must be packaged as a Docker image and published to a registry like:
204
+
**For container-based servers:** Yes. Your MCP server must be packaged as a Docker image and published to a registry like:
**For remote servers:** No! You just need to provide the URL endpoint where your MCP server is accessible.
210
+
**For remote servers:** No. You just need to provide the URL endpoint where your MCP server is accessible.
211
+
212
+
### Security Note: Filesystem Permissions
213
+
214
+
**Important:** Don't specify filesystem paths or volume mounts in your registry entries. Mounting host directories is a security risk and should be configured by users at runtime, not in registry specs. Only network permissions (allowed hosts and ports) should be specified in the `permissions` section.
200
215
201
216
### How do I test my entry?
202
217
@@ -214,24 +229,37 @@ Or submit a pull request and our automated checks will validate it for you.
214
229
1. Fork this repository
215
230
2. Add your server entry as described above
216
231
3. Submit a pull request
217
-
4. We'll review and merge your addition!
232
+
4. We'll review and merge your addition
233
+
234
+
### Registry Inclusion Criteria
235
+
236
+
We evaluate submissions based on several criteria to ensure quality and usefulness for the community. Your server should:
218
237
219
-
### Before Submitting, Please Ensure:
238
+
- Provide clear value and unique capabilities
239
+
- Be well-documented with accurate tool descriptions
240
+
- Follow security best practices
241
+
- Be actively maintained with recent updates
242
+
243
+
For detailed evaluation criteria, see the [Registry Criteria documentation](https://docs.stacklok.com/toolhive/concepts/registry-criteria).
244
+
245
+
### Before Submitting, Please Ensure
220
246
221
247
For **container-based servers**:
248
+
222
249
- [ ] Your Docker image is publicly accessible
223
250
- [ ] The `description` clearly explains what your server does
224
251
- [ ] You've listed all the tools your server provides
225
252
- [ ] Any required environment variables are documented
226
-
- [ ] Your server actually works with ToolHive
253
+
- [ ] Your server works with ToolHive
227
254
228
255
For **remote servers**:
256
+
229
257
- [ ] Your server endpoint is publicly accessible
230
258
- [ ] The `description` clearly explains what your server does
231
259
- [ ] You've listed all the tools your server provides
232
260
- [ ] Any required authentication (headers/OAuth) is documented
233
-
- [ ] The transport is set to `sse` or `streamable-http` (not `stdio`)
234
-
- [ ] Your server actually works with ToolHive's proxy command
261
+
- [ ] The transport is set to `streamable-http` (preferred) or `sse` (not `stdio`)
262
+
- [ ] Your server works with ToolHive's proxy command
0 commit comments