Skip to content

Commit fed461f

Browse files
authored
docs: update README and LLM instructions (#354)
- 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]>
1 parent 547d1b1 commit fed461f

File tree

3 files changed

+574
-189
lines changed

3 files changed

+574
-189
lines changed

.prettierrc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"printWidth": 80,
3+
"proseWrap": "preserve"
4+
}

README.md

Lines changed: 59 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This repository contains the registry of MCP (Model Context Protocol) servers av
44

55
## What is this?
66

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 capabilitieslike interacting with GitHub, querying databases, or fetching web content.
88

99
## How to Add Your MCP Server
1010

@@ -33,16 +33,17 @@ Create a `spec.yaml` file with this minimum information:
3333

3434
```yaml
3535
# 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
3737
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
3944

4045
# 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
4647
```
4748
4849
#### For Remote Servers
@@ -51,19 +52,20 @@ Create a `spec.yaml` file with this minimum information:
5152

5253
```yaml
5354
# 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
5556
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
5763
5864
# 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
6466
```
6567

66-
### Step 3: Add More Details (Optional but Helpful)
68+
### Step 3: Add More Details (Optional but Recommended)
6769

6870
You can add more information to help users:
6971

@@ -75,7 +77,7 @@ env_vars:
7577
- name: API_KEY
7678
description: Your API key from example.com
7779
required: true
78-
secret: true # Mark sensitive data
80+
secret: true # Mark sensitive data
7981
8082
- name: TIMEOUT
8183
description: Request timeout in seconds
@@ -89,8 +91,8 @@ tags:
8991
- productivity
9092
9193
# 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"
9496
```
9597

9698
### Real Examples
@@ -129,15 +131,15 @@ status: Active
129131
```yaml
130132
url: https://api.example.com/mcp/v1
131133
description: Provides access to Example API services via MCP
132-
transport: sse
134+
transport: streamable-http
133135
repository_url: https://github.com/example/mcp-server
134136
135137
tools:
136138
- fetch_data
137139
- process_request
138140
- submit_job
139141
140-
# Authentication headers for the remote server
142+
# Authentication headers for remote servers
141143
headers:
142144
- name: X-API-Key
143145
description: API key for authentication
@@ -168,16 +170,20 @@ status: Active
168170
This tells ToolHive how to communicate with your server:
169171

170172
For **container-based servers**:
173+
171174
- `stdio` - Standard input/output (most common)
172175
- `sse` - Server-sent events
173176
- `streamable-http` - HTTP streaming
174177

175178
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)
178182
- **Note:** Remote servers cannot use `stdio`
179183

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.
181187

182188
### What is "tier"?
183189

@@ -189,14 +195,23 @@ If you're not sure, use `stdio` for containers and `sse` for remote servers.
189195
- `Active` - Fully functional and maintained
190196
- `Deprecated` - No longer maintained, will be removed
191197

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+
192202
### Do I need a Docker image?
193203

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:
205+
195206
- Docker Hub (`docker.io/username/image`)
196207
- GitHub Container Registry (`ghcr.io/username/image`)
197208
- Other public registries
198209

199-
**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.
200215

201216
### How do I test my entry?
202217

@@ -214,24 +229,37 @@ Or submit a pull request and our automated checks will validate it for you.
214229
1. Fork this repository
215230
2. Add your server entry as described above
216231
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:
218237

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
220246

221247
For **container-based servers**:
248+
222249
- [ ] Your Docker image is publicly accessible
223250
- [ ] The `description` clearly explains what your server does
224251
- [ ] You've listed all the tools your server provides
225252
- [ ] Any required environment variables are documented
226-
- [ ] Your server actually works with ToolHive
253+
- [ ] Your server works with ToolHive
227254

228255
For **remote servers**:
256+
229257
- [ ] Your server endpoint is publicly accessible
230258
- [ ] The `description` clearly explains what your server does
231259
- [ ] You've listed all the tools your server provides
232260
- [ ] 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
235263

236264
## Need Help?
237265

0 commit comments

Comments
 (0)