mcp英伟达
MCP服务器,用于搜索NVIDIA博客和版本,使LLM能够更好地回答NVIDIA特定的查询。
概述
此模型上下文协议(MCP)服务器使大型语言模型(LLM)能够跨 多个NVIDIA域,以查找有关NVIDIA技术、产品和服务的相关信息。
支持的域名(默认15个,可自定义)
默认情况下,服务器会搜索以下NVIDIA域。您可以使用自定义此列表 MCP_NVIDIA_DOMAINS 环境变量或 domains 搜索查询中的参数:
- blogs.nvidia.com -NVIDIA博客文章
- build.nvidia.com -NVIDIA AI基金会模型和服务
- catalog.ngc.nvidia.com -NGC GPU加速软件目录
- developer.download.nvidia.com -开发人员下载和资源
- developer.nvidia.com -开发人员资源、SDK和技术文档
- docs.api.nvidia.com -API文件
- docs.nvidia.com -全面的技术文档
- docs.omniverse.nvidia.com -全方位文档
- forums.developer.nvidia.com -开发者论坛
- 论坛.nvidia.com -社区论坛
- ngc.nvidia.com -NVIDIA GPU云
- nvidia.github.io -NVIDIA GitHub Pages文档
- nvidia.com -NVIDIA官方新闻和新闻稿
- research.nvidia.com -NVIDIA研究出版物
- resources.nvidia.com -NVIDIA资源和白皮书
备注:为了安全起见,只允许使用nvidia.com域名和nvidia.github.io。
主要特点
搜索与排名
- 高级相关性评分 组合多个信号
- 智能关键字提取
- 上下文感知搜索 带有增强的片段和突出显示
- 灵活排序 按相关性、发布日期或领域
- 内容类型检测 (教程、公告、指南、论坛等)
- 日期提取 来自HTML元数据和页面内容
元数据
- 出版日期 从HTML元数据和文本模式中提取
- 内容元数据 包括作者、字数统计、代码/视频/图像检测
- 结构化内容类型 便于过滤和分类
连接性
- stdio模式 (默认)-适用于本地MCP客户端,如Claude Desktop
- HTTP/SSE模式 -用于远程访问和基于web的客户端
- 结构化JSON输出 与AI代理和LLM兼容
定制
- 特定域过滤 用于定向搜索
- 可配置域 通过环境变量
- 可调相关性阈值 以及结果限制
- 多种排序选项 (相关性、日期、领域)
交互式用户界面(可选)
- MCP-UI集成 具有丰富的交互式HTML组件
- 实时过滤 使用HTMX进行动态更新,无需重新加载页面
- NVIDIA品牌界面 带有绿色重音主题和粘性标题
- 搜索结果UI 特点:
- 交互式过滤器控件(排序方式:相关性/日期/域,最小相关性滑块) - 带有相关性得分、内容类型图标和元数据的结果卡 - 关键字突出显示和发布日期 - 复制引用功能
- 内容发现UI 与:
- 不同内容类型(视频、课程、教程、网络研讨会、博客)的选项卡导航 - 通过HTMX部分更新动态加载内容 - 带有缩略图和相关性评分的内容卡
- 优雅降级 -使用或不使用UI依赖项
安装
通过npx(最简单-建议MCP客户使用)
npx @bharatr21/mcp-nvidia或者添加到您的Claude Desktop配置中:
{
"mcpServers": {
"nvidia": {
"command": "npx",
"args": ["-y", "@bharatr21/mcp-nvidia"]
}
}
}注: 这需要在您的系统上安装Python 3.10+。该包将自动使用Python后端。
通过pip
标准安装(仅JSON响应):
pip install mcp-nvidia具有UI功能(交互式HTML组件):
pip install "mcp-nvidia[ui]"来源
标准安装:
git clone https://github.com/bharatr21/mcp-nvidia.git
cd mcp-nvidia
pip install -e .具有UI功能:
git clone https://github.com/bharatr21/mcp-nvidia.git
cd mcp-nvidia
pip install -e ".[ui]"用法
使用托管远程服务器(推荐)
公共实例可在以下网址获得 https://mcp-nvidia.up.railway.app/ SSE端点位于 https://mcp-nvidia.up.railway.app/sse/。这是开始使用服务器的最快方法——无需本地 需要安装。
克劳德AI/克劳德桌面:
{
"mcpServers": {
"nvidia": {
"url": "https://mcp-nvidia.up.railway.app/sse/",
"transport": "sse"
}
}
}克劳德代码:
claude mcp add mcp-nvidia --transport sse https://mcp-nvidia.up.railway.app/sse/添加 -s user 使其可用于所有项目,或 -s project 仅适用于当前项目。
Gemini CLI:
gemini mcp add --transport sse mcp-nvidia https://mcp-nvidia.up.railway.app/sse/OpenCode (添加到 opencode.json 或 ~/.config/opencode/opencode.json):
{
"mcp": {
"mcp-nvidia": {
"type": "remote",
"url": "https://mcp-nvidia.up.railway.app/sse/"
}
}
}Codex CLI (Codex仅支持stdio传输,因此请使用 mcp-remote 代理):
codex mcp add mcp-nvidia -- npx -y mcp-remote https://mcp-nvidia.up.railway.app/sse/ --transport sse-only或添加到 ~/.codex/config.toml:
[mcp_servers.mcp-nvidia]
command = "npx"
args = ["-y", "mcp-remote", "https://mcp-nvidia.up.railway.app/sse/", "--transport", "sse-only"]在本地运行服务器
MCP服务器可以直接从命令行运行:
mcp-nvidia配置
可以使用环境变量配置服务器:
MCP_NVIDIA_DOMAINS:要搜索的自定义NVIDIA域的逗号分隔列表(覆盖默认值)
- 安全:只允许使用nvidia.com域名和子域名。无效域将被自动过滤掉。 - 例子: "https://developer.nvidia.com/,https://docs.nvidia.com/"
MCP_NVIDIA_LOG_LEVEL:日志记录级别(调试、信息、警告、错误、严重)
例子:
export MCP_NVIDIA_DOMAINS="https://developer.nvidia.com/,https://docs.nvidia.com/"
export MCP_NVIDIA_LOG_LEVEL="DEBUG"
mcp-nvidia使用Claude Desktop进行配置
将以下内容添加到您的Claude Desktop配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"nvidia": {
"command": "mcp-nvidia"
}
}
}使用自定义配置(环境变量):
{
"mcpServers": {
"nvidia": {
"command": "mcp-nvidia",
"env": {
"MCP_NVIDIA_LOG_LEVEL": "DEBUG",
"MCP_NVIDIA_DOMAINS": "https://developer.nvidia.com/,https://docs.nvidia.com/"
}
}
}
}如果你是从源代码安装的,你可能需要使用Python可执行文件的完整路径:
{
"mcpServers": {
"nvidia": {
"command": "/path/to/python",
"args": ["-m", "mcp_nvidia"]
}
}
}HTTP服务器模式(远程访问)
对于远程访问或公共部署,请使用HTTP/SSE模式:
# Run in HTTP mode (default port 8000)
mcp-nvidia http
# Custom host and port
mcp-nvidia http --host 0.0.0.0 --port 3000
# Or explicitly use stdio mode (default)
mcp-nvidia stdio
mcp-nvidia # same as stdio要配置客户端以连接到您的自托管实例,请替换 https://mcp-nvidia.up.railway.app/sse/ 在 托管服务器示例 使用您自己服务器的SSE URL(例如。 http://your-host:8000/sse/).
MCP-UI(交互式HTML组件)
当与UI依赖项一起安装时(pip install "mcp-nvidia[ui]"),服务器提供丰富的交互式HTML 接口以及结构化JSON响应。这是完全向后兼容的——不支持UI的客户端 资源将仅接收JSON响应。
特性
搜索结果界面:
- NVIDIA品牌用户界面 带有绿色重音主题(#76b900)和粘性标题
- 交互式过滤器 在不重新加载页面的情况下更新结果:
- 排序方式:相关性、日期或域(下拉列表) - 最小相关性:滑块(0-100)
- 丰富的结果卡 显示:
- 带有分数的相关性徽章 - 内容类型图标(📖 教程,🎬 视频,📚 课程等) - 域标签和发布日期 - 带有关键字突出显示的片段预览 - 匹配的关键字(最多5个) - “打开”和“复制引文”按钮
- 引文部分 带有编号的参考文献
内容发现界面:
- 选项卡式导航 对于内容类型:
- 🎬 视频 - 📚 课程 - 📖 教程 - 🎥 网络研讨会 - 📝 博客文章
- 动态选项卡切换 HTMX部分更新(无页面重新加载)
- 内容卡 带有缩略图、标题和相关性评分
运作原理
用户界面由以下组件驱动:
- MCP-UI服务器 -生成UI资源以及工具响应
- HTMX -无需JavaScript即可实现动态更新
- 服务器端渲染 -从工具响应生成的HTML
- 优雅降级 -无需UI依赖即可工作(仅返回JSON)
当你打电话的时候 search_nvidia 或 discover_nvidia_content 从克劳德桌面(或其他MCP-UI兼容客户端), 你会看到两者:
- 结构化JSON (供克劳德阅读和推理)
- 交互式HTML用户界面 (供您浏览和互动)
安全功能
- 输入验证 具有sort_by和content_type的满配列表
- XSS预防 所有用户输入都有HTML转义
- URL验证 仅限于安全方案(http、https、mailto)
- rel=“noopener noreferrer” 在所有外部链接上防止标签
- ASGI协议合规性 对于SSE运输
HTMX端点
在HTTP模式下运行时,以下端点支持HTMX交互:
/ui/filter-根据过滤器更改更新搜索结果/ui/content-加载不同内容类型选项卡的内容/ui/citation/{index}-处理引文复制操作
SDK资源(代码执行模式)
除了标准的MCP工具调用接口外,此服务器还公开 TypeScript和Python SDK 作为MCP资源。这使得代码执行工作流成为可能,AI代理可以:
- 发现SDK文件 通过
list_resources() - 读取类型定义 通过
read_resource(uri) - 编写代码 使用全类型接口而不是原始工具调用
这种方法提供了以下所述的好处 使用MCP执行Anthropic的代码 和 Cloudflare的代码模式:
- 类型安全性 -输入和输出的完整TypeScript/Python类型提示
- 代码中的数据处理 -在返回模型之前过滤和转换结果
- 利用法学硕士的优势 -LLM擅长针对API编写代码
可用SDK资源
服务器通过MCP资源协议公开以下资源:
TypeScript SDK:
mcp-nvidia://sdk/typescript/search_nvidia.ts-search_nvidia的TypeScript类型和接口mcp-nvidia://sdk/typescript/discover_nvidia_content.ts-discover_nvidia_content的TypeScript类型mcp-nvidia://sdk/typescript/index.ts-桶导出文件mcp-nvidia://sdk/typescript/README.md-TypeScript SDK文档
Python SDK:
mcp-nvidia://sdk/python/search_nvidia.py-search_nvidia的Python类型和接口mcp-nvidia://sdk/python/discover_nvidia_content.py-discover_nvidia_content的Python类型mcp-nvidia://sdk/python/__init__.py-包装出口mcp-nvidia://sdk/python/README.md-Python SDK文档
示例:代码执行工作流
不要直接调用工具:
# Traditional MCP tool call
result = call_tool("search_nvidia", {"query": "CUDA", "max_results_per_domain": 5})代理可以发现并使用类型化的SDK:
// 1. Agent lists resources to discover SDK files
const resources = await client.list_resources();
// Returns: mcp-nvidia://sdk/typescript/search_nvidia.ts, etc.
// 2. Agent reads the TypeScript definitions
const sdkContent = await client.read_resource("mcp-nvidia://sdk/typescript/search_nvidia.ts");
// 3. Agent writes code using the typed interface
import { searchNvidia, SearchNvidiaInput } from "./search_nvidia";
const input: SearchNvidiaInput = {
query: "CUDA programming",
max_results_per_domain: 5,
sort_by: "relevance"
};
const result = await searchNvidia(input);
// 4. Process results in code
const tutorials = result.results.filter(r => r.content_type === "tutorial");
const recent = result.results.filter(r => r.published_date > "2024-01-01");生成的SDK文件包括:
- TypeScript SDK:与JSDoc+功能包装器的完整接口,通过客户端调用MCP工具
- 开发包:TypedDict定义+直接实现调用(无MCP开销!)
- 类型安全的输入/输出模式
- 示例使用代码
- 全面的文件
主要区别:
- 开发包:直接呼叫
mcp_nvidia.lib功能-无MCP协议开销 - TypeScript SDK:通过MCP客户端调用(因为实现是在Python中)
如何使用SDK资源
通过MCP客户端:
任何支持资源的MCP客户端都可以访问这些SDK文件:
# List available SDK resources
resources = await mcp_client.list_resources()
# Read a specific SDK file
typescript_sdk = await mcp_client.read_resource("mcp-nvidia://sdk/typescript/search_nvidia.ts")
python_sdk = await mcp_client.read_resource("mcp-nvidia://sdk/python/search_nvidia.py")使用Python SDK(直接调用):
# Import the generated SDK
from mcp_nvidia_sdk import search_nvidia
# Call directly - no MCP overhead!
result = await search_nvidia({
"query": "CUDA optimization",
"max_results_per_domain": 5,
"sort_by": "date"
})
# Process with full type safety
for item in result["results"]:
print(f"{item['title']}: {item['url']}")使用TypeScript SDK(通过MCP客户端):
import { searchNvidia, MCPClient } from "./search_nvidia";
// Get MCP client instance
const client: MCPClient = getMCPClient();
// Call via MCP protocol
const result = await searchNvidia({
query: "CUDA optimization",
max_results_per_domain: 5,
sort_by: "date"
}, client);
// Process with full type safety
result.results.forEach(item => {
console.log(`${item.title}: ${item.url}`);
});生成的SDK结构:
每个SDK包括:
- 类型定义:从工具模式自动生成完整的输入/输出类型定义
- 异步函数:为每个工具正确键入异步函数签名
- 文档:解释参数和返回类型的内联注释和文档字符串
- 示例:生成代码中的使用示例
- 索引/初始化文件:方便所有工具的导入
SDK生成与测试
SDK文件是 自动生成 当服务器启动时,从MCP工具模式中选择。 它们被缓存在内存中以提高性能。
运行SDK测试:
# Test SDK generation
pytest tests/test_sdk_generation.py -v
# Test MCP Resources
pytest tests/test_resources.py -v
# Run all tests
pytest tests/ -v向后兼容
SDK资源功能是 完全向后兼容。现有MCP客户端可以继续使用 传统的工具调用,而支持代码执行的客户端可以使用SDK资源。 这两种方法同时起作用。
可用工具
search_nvidia
在NVIDIA域中搜索特定信息。结果包括带有URL的引用,以便于参考。
参数:
query(必填):用于跨NVIDIA域查找信息的搜索查询domains(可选):要搜索的特定NVIDIA域列表。如果未提供,则搜索所有默认域max_results_per_domain(可选):每个域返回的最大结果数(默认值:3)min_relevance_score(可选):过滤结果的最小相关性得分阈值(0-100)(默认值:17)sort_by(可选):结果排序顺序-以下之一:
- relevance (默认):按相关性得分排序(最高者优先) - date:按发布日期排序(最新者优先) - domain:按域名字母顺序排序
示例查询:
- “CUDA编程最佳实践”
- “RTX 4090规格”
- “TensorRT优化技术”
- “最新AI公告”
- “Omniverse开发教程”
排序示例用法:
# Sort by publication date (newest first) - great for finding latest announcements
search_nvidia(query="NIM microservices", sort_by="date")
# Sort by relevance (default) - best for finding most relevant content
search_nvidia(query="CUDA optimization", sort_by="relevance")
# Sort by domain - useful for browsing content by source
search_nvidia(query="TensorRT", sort_by="domain")特征:
- 使用ddgs包增强搜索 实现DuckDuckGo与域过滤的可靠集成
- 结构化JSON输出:以机器可读和结构化格式返回数据
人类可读字段
- 上下文感知片段:自动从源URL获取周围的文本并突出显示
相关片段 **bold** 格式化
- 相关性评分(0-100分):每个结果都包括基于查询词匹配的相关性得分
标题、代码段和URL - 使用默认排序时,结果按相关性得分(最高者优先)排序 - 低于阈值的结果将被自动过滤掉 - 分数以格式化文本显示为“分数:X/100”
- 灵活的排序选项:
- relevance:按相关性得分排序(默认) - date:按发布日期排序,最新者优先 - domain:按域名字母顺序排序
- 出版日期提取:自动从HTML元数据(元标记、时间元素)中提取日期
使用多种策略生成页面内容
- 内容类型检测:将内容标识为公告、教程、指南、论坛讨论,
博客文章、文档、研究论文、新闻、视频、课程或文章
- 丰富的元数据提取:
- 来自各种HTML源的作者姓名 - 大致字数 - 代码段检测 - 通过计数进行视频和图像检测
- 安全控制:输入验证和限制(可通过代码自定义)
- 查询/主题长度:最多500个字符 - 每个域的结果:最多10个 - 域名白名单:仅限nvidia.com和nvidia.github.io - 速率限制:搜索API调用之间200ms(约5次搜索/秒) - 并发搜索:最多5次同时搜索
- 并发搜索 跨多个域以获得快速结果
- 带有标题、URL、带有上下文的增强片段和源域的格式化结果
- 专用引文部分,带有编号的参考文献,便于复制
输出格式: 结果以结构化JSON的形式返回,模式如下:
{
"success": true,
"results": [
{
"title": "Page Title",
"url": "https://example.nvidia.com/page",
"snippet": "Enhanced snippet with **highlighted** keywords",
"domain": "example.nvidia.com",
"relevance_score": 85,
"published_date": "2025-01-15",
"content_type": "tutorial",
"metadata": {
"author": "John Doe",
"word_count": 1234,
"has_code": true,
"has_video": false,
"has_images": true,
"image_count": 5
}
}
],
"metadata": {
"domains_searched": 16,
"search_time_ms": 1234
}
}结果字段:
title:页面标题url:资源的完整URLsnippet:增强的代码片段 大胆 突出显示匹配的关键字domain:源域(例如“docs.nvidia.com”)relevance_score:基于关键字匹配的相关性得分为0-100published_date(可选):YYYY-MM-DD格式的发布日期,从HTML元数据或页面内容中提取content_type:检测到以下内容类型之一:
- announcement:产品/功能公告 - tutorial:分步教程 - guide:如何指导和最佳做法 - forum_discussion:论坛帖子和讨论 - blog_post:博客文章 - documentation:技术文件 - research_paper:研究出版物 - news:新闻文章和新闻稿 - video:视频内容 - course:培训课程 - article:一般文章(默认)
metadata(可选):其他提取的元数据:
- author:内容作者姓名(如有) - word_count:大致字数 - has_code:页面是否包含代码片段 - has_video:页面是否包含嵌入式视频 - has_images:页面是否包含图像 - image_count:页面上的图像数量
备注:The published_date 和 metadata 字段是可选的,只有从页面中成功提取时才会显示。
发现_视频内容
探索特定类型的NVIDIA教育和学习内容,如视频、课程、教程、, 网络研讨会或博客文章。
参数:
content_type(必填):要查找的内容类型-以下之一:
- video:视频教程和演示 - course:培训课程和认证(NVIDIA DLI) - tutorial:分步指南和操作方法 - webinar:网络研讨会和现场会议 - blog:博客文章和文章
topic(必填):查找内容的主题或技术(例如,“CUDA”、“Omniverse”、“AI”)max_results(可选):要返回的最大内容项数(默认值:5)
示例查询:
- 查找视频教程:
discover_nvidia_content(content_type="video", topic="CUDA programming") - 查找培训课程:
discover_nvidia_content(content_type="course", topic="Deep Learning") - 查找网络研讨会:
discover_nvidia_content(content_type="webinar", topic="AI in Healthcare")
特征:
- 针对每种类型优化的内容特定搜索策略
- 0-100分的相关性评分 突出最佳匹配
- 分数显示为“分数:X/100”以提高透明度
- 直接链接到视频、课程、教程和其他资源
- 资源链接部分,便于访问所有发现的内容
发展
建立开发环境
# Clone the repository
git clone https://github.com/bharatr21/mcp-nvidia.git
cd mcp-nvidia
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"运行测试
# Install test dependencies
pip install -e ".[test]"
# Run all tests
pytest tests/ -v
# Run tests excluding slow tests (rate limiting)
pytest tests/ -v -m "not slow"建筑
服务器使用模型上下文协议(MCP)向LLM公开搜索功能。
搜索流程
sequenceDiagram
participant LLM as LLM/AI Agent
participant MCP as MCP Server
participant Validator as Input Validator
participant RateLimit as Rate Limiter
participant DDGS as DuckDuckGo Search
participant Fetcher as URL Fetcher
LLM->>MCP: search_nvidia(query, domains)
MCP->>Validator: Validate inputs
Validator-->>MCP: ✓ Valid (or ✗ Error)
loop For each domain (max 5 concurrent)
MCP->>RateLimit: Check rate limit
RateLimit-->>MCP: ✓ Proceed (wait 200ms)
MCP->>DDGS: Search "site:domain query"
DDGS-->>MCP: Search results
loop For each result
MCP->>Fetcher: Fetch URL context
Fetcher-->>MCP: Enhanced snippet
end
end
MCP->>MCP: Calculate relevance scores
MCP->>MCP: Sort & format JSON
MCP-->>LLM: Structured JSON response系统架构
flowchart TD
A[MCP Client
Claude/LLMs] -->|JSON-RPC| B[MCP Server]
B --> C{Tool Router}
C -->|search_nvidia| D[Search Handler]
C -->|discover_nvidia_content| E[Discovery Handler]
D --> F[Security Layer]
F --> G[Input Validator]
F --> H[Rate Limiter]
F --> I[Concurrency Control]
G --> J[Domain Searcher]
J --> K[DuckDuckGo API]
J --> L[URL Context Fetcher]
L --> M[BeautifulSoup Parser]
J --> N[Relevance Scorer]
N --> O[Response Builder]
O --> P[Structured JSON]
P -->|CallToolResult| A
style F fill:#ffcccc
style P fill:#ccffcc
style K fill:#cce5ff关键组件
- 输入验证:使用sort_by和content_type的分配列表验证查询长度、域白名单和参数限制
- 速率限制:强制DuckDuckGo API调用之间的最小间隔为200ms
- 并发搜索:使用信号量控制同时搜索多达5个域
- 上下文增强:获取实际页面内容并突出显示相关片段
- 相关性评分:根据关键字匹配计算0-100分
- JSON输出:返回与人工智能代理和人类兼容的结构化数据
- SDK生成器:从工具模式自动生成TypeScript和Python SDK
- MCP资源:将生成的SDK作为代码执行工作流的虚拟文件系统资源公开
- MCP-UI集成:使用HTMX呈现交互式HTML界面,用于动态过滤和选项卡导航
- 安全层:XSS预防、URL验证和ASGI协议合规性
扩大域名覆盖范围
可搜索域的列表在中配置 src/mcp_nvidia/server.py 在 DEFAULT_DOMAINS 常数。 要添加更多NVIDIA域,请执行以下操作:
- 编辑
src/mcp_nvidia/server.py - 将新域URL添加到
DEFAULT_DOMAINS列表 - 重新安装软件包
许可证
MIT许可证-有关详细信息,请参阅许可证文件
贡献
欢迎投稿!请随时提交拉取请求。
支持
有关问题、疑问或贡献,请访问 .
