Add NuGet to the MCP Registry, similar to npm and Python

This commit is contained in:
Joel Verhagen 2025-07-07 12:27:29 -04:00 • committed by Toby Padilla
commit 68ee3b9af9
7 changed files with 49 additions and 9 deletions

View file

@ -31,6 +31,7 @@ graph TB
NPM[npm Registry]
PYPI[PyPI Registry]
DOCKER[Docker Hub]
NUGET[NuGet Gallery]
DNS[DNS Services]
GH[GitHub OAuth]
end
@ -46,6 +47,7 @@ graph TB
API -.-> |Verify| DNS
API -.-> |Reference| NPM
API -.-> |Reference| PYPI
API -.-> |Reference| NUGET
API -.-> |Reference| DOCKER
```

View file

@ -9,7 +9,7 @@ The registry serves as the authoritative metadata repository for publicly-availa
## 2. Minimal Operational Burden
- Design for low maintenance and operational overhead
- Delegate complexity to existing services where possible (GitHub for auth, npm/PyPI for packages)
- Delegate complexity to existing services where possible (GitHub for auth, npm/PyPI/NuGet for packages)
- Avoid features that require constant human intervention or moderation
- Build for reasonable downtime tolerance (24h acceptable) by having consumers cache data for their end-users
@ -21,7 +21,7 @@ The registry serves as the authoritative metadata repository for publicly-availa
## 4. Meets Industry Security Standards
- Leverage existing package registries (npm, PyPI, Docker Hub, etc.) for source code distribution, obviating the need to reinvent source code security
- Leverage existing package registries (npm, PyPI, NuGet, Docker Hub, etc.) for source code distribution, obviating the need to reinvent source code security
- Use mechanisms like DNS verification, OAuth to provide base layer of authentication and trust
- Implement rate limiting, field validation, and blacklisting to prevent abuse

View file

@ -15,7 +15,7 @@ The MCP Registry is the official centralized metadata repository for publicly-ac
### Is the MCP Registry a package registry?
No. The MCP Registry stores metadata about MCP servers and references to where they're hosted (npm, PyPI, Docker Hub, etc.), but does not host the actual source code or packages.
No. The MCP Registry stores metadata about MCP servers and references to where they're hosted (npm, PyPI, NuGet, Docker Hub, etc.), but does not host the actual source code or packages.
### Who should use the MCP Registry directly?
@ -37,7 +37,7 @@ Servers are published by submitting a `server.json` file through our CLI tool. T
1. GitHub authentication
2. A public GitHub repository (even for closed-source servers - just for the metadata)
3. Your server package published to a supported registry (npm, PyPI, Docker Hub, etc.)
3. Your server package published to a supported registry (npm, PyPI, NuGet, Docker Hub, etc.)
4. Optional: DNS verification for custom namespacing
### What namespaces are available?
@ -54,6 +54,7 @@ No. While open source code is encouraged, it is not required for either locally
- npm (Node.js packages)
- PyPI (Python packages)
- NuGet.org (.NET packages)
- GitHub Container Registry (GHCR)
More can be added as the community desires; feel free to open an issue if you are interested in building support for another registry.

View file

@ -171,7 +171,7 @@ components:
properties:
registry_name:
type: string
enum: [npm, docker, pypi, homebrew]
enum: [npm, docker, pypi, homebrew, nuget]
example: "npm"
name:
type: string

View file

@ -179,6 +179,41 @@
}
```
## NuGet (.NET) Package Example
The `dnx` tool ships with the .NET 10 SDK, starting with Preview 6.
```json
{
"name": "Knapcode.SampleMcpServer",
"description": "Sample NuGet MCP server for a random number and random weather",
"repository": {
"url": "https://github.com/joelverhagen/Knapcode.SampleMcpServer",
"source": "github"
},
"version_detail": {
"version": "0.3.0",
"release_date": "2025-07-02T18:54:28.00Z"
},
"packages": [
{
"registry_name": "nuget",
"name": "Knapcode.SampleMcpServer",
"version": "0.3.0-beta",
"runtime_hint": "dnx",
"environment_variables": [
{
"name": "WEATHER_CHOICES",
"description": "Comma separated list of weather descriptions to randomly select.",
"is_required": true,
"is_secret": false
}
]
}
]
}
```
## Complex Docker Server with Multiple Arguments
```json

View file

@ -88,7 +88,8 @@
"npm",
"docker",
"pypi",
"homebrew"
"homebrew",
"nuget"
],
"description": "Package registry type",
"example": "npm"
@ -105,10 +106,11 @@
},
"runtime_hint": {
"type": "string",
"description": "Hint for appropriate runtime (e.g., npx, uvx)",
"description": "Hint for appropriate runtime (e.g., npx, uvx, dnx)",
"examples": [
"npx",
"uvx"
"uvx",
"dnx"
]
},
"runtime_arguments": {

View file

@ -24,7 +24,7 @@
}
]
},{
"registry_name": "docker>",
"registry_name": "docker",
"name": "io.github.<owner>/<server-name>-cli",
"version": "0.123.223",
"runtime_hint": "docker",