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

View file

@ -9,7 +9,7 @@ The registry serves as the authoritative metadata repository for publicly-availa
## 2. Minimal Operational Burden ## 2. Minimal Operational Burden
- Design for low maintenance and operational overhead - 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 - 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 - 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 ## 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 - Use mechanisms like DNS verification, OAuth to provide base layer of authentication and trust
- Implement rate limiting, field validation, and blacklisting to prevent abuse - 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? ### 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? ### 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 1. GitHub authentication
2. A public GitHub repository (even for closed-source servers - just for the metadata) 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 4. Optional: DNS verification for custom namespacing
### What namespaces are available? ### 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) - npm (Node.js packages)
- PyPI (Python packages) - PyPI (Python packages)
- NuGet.org (.NET packages)
- GitHub Container Registry (GHCR) - 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. 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: properties:
registry_name: registry_name:
type: string type: string
enum: [npm, docker, pypi, homebrew] enum: [npm, docker, pypi, homebrew, nuget]
example: "npm" example: "npm"
name: name:
type: string 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 ## Complex Docker Server with Multiple Arguments
```json ```json

View file

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

View file

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