RAG协议服务器

Vectara MCP Server是一个基于Model Context Protocol (MCP)的RAG协议服务器,提供安全、可靠且减少幻觉的检索增强生成功能,适用于AI系统与多种数据源和工具的交互。

  • by vectara
  • Python
  • 本地部署
  • 30 星标
  • 更新于
在 GitHub 查看 vectara/vectara-mcp

使用说明

Vectara MCP 服务器

🔌 电源插头 兼容于 Claude Desktop(可译为“Claude桌面版”或保持原样,根据上下文判断是否需要具体翻译)以及任何其他MCP客户端!

Vectara MCP 也兼容任何 MCP 客户端

模型上下文协议(MCP)是一项开放标准,它使人工智能系统能够与各种数据源和工具无缝交互,促进安全的双向连接。

Vectara-MCP 通过 MCP 协议,为任何代理应用程序提供访问快速、可靠且减少幻觉的检索增强生成(RAG)功能,这一切都得益于 Vectara 的可信 RAG 平台。

安装

你可以直接从 PyPI 安装这个包:

pip install vectara-mcp

快速入门

默认安全(带身份验证的HTTP/SSE)

# Start server with secure HTTP transport (DEFAULT)
python -m vectara_mcp
# Server running at http://127.0.0.1:8000 with authentication enabled

本地开发模式(STDIO)

# For Claude Desktop or local development (less secure)
python -m vectara_mcp --stdio
# ⚠️ Warning: STDIO transport is less secure. Use only for local development.

配置选项

# Custom host and port
python -m vectara_mcp --host 0.0.0.0 --port 8080

# SSE transport mode
python -m vectara_mcp --transport sse --path /sse

# Disable authentication (DANGEROUS - dev only)
python -m vectara_mcp --no-auth

运输方式

HTTP传输(默认 - 推荐)

  • 安全: 通过承载令牌进行内置认证
  • 加密: HTTPS已准备就绪
  • 速率限制: 默认每分钟100个请求
  • CORS 保护: 可配置的来源验证
  • 用例: 生产部署,云环境

SSE Transport(公司名,可译为“SSE运输”或根据具体语境调整为更贴切的名称)

  • 流媒体: 用于实时更新的服务器发送事件
  • 认证: 支持承载令牌(Bearer Token)
  • 兼容性: 与旧版MCP客户端兼容
  • 用例: 实时流媒体应用

STDIO 传输

  • ⚠️ 安全警告: 没有传输层安全(机制)
  • 演出 本地通信的低延迟
  • 用例: 本地开发,Claude Desktop
  • 要求: 必须明确启用 --stdio 旗帜

环境变量

# Required
export VECTARA_API_KEY="your-api-key"

# Optional
export VECTARA_AUTHORIZED_TOKENS="token1,token2"  # Additional auth tokens
export VECTARA_ALLOWED_ORIGINS="http://localhost:*,https://app.example.com"
export VECTARA_TRANSPORT="http"  # Default transport mode
export VECTARA_AUTH_REQUIRED="true"  # Enforce authentication

认证

HTTP/SSE 传输

当使用HTTP或SSE传输时,默认情况下需要进行身份验证:

# Using curl with bearer token
curl -H "Authorization: Bearer $VECTARA_API_KEY" \
     -H "Content-Type: application/json" \
     -X POST http://localhost:8000/call/ask_vectara \
     -d '{"query": "What is Vectara?", "corpus_keys": ["my-corpus"]}'

# Using X-API-Key header (alternative)
curl -H "X-API-Key: $VECTARA_API_KEY" \
     http://localhost:8000/sse

禁用身份验证(仅限开发环境)

# ⚠️ NEVER use in production
python -m vectara_mcp --no-auth

可用工具

API密钥管理

  • 设置Vectara API密钥 为本次会话配置并验证您的Vectara API密钥(一次性设置)。

    参数:

    • api_key: 字符串,您的Vectara API密钥 - 必填。

    返回值:

    • 成功确认,但API密钥已隐藏或验证出错。
  • 清除Vectara API密钥 从服务器内存中清除存储的API密钥。

    返回值:

    • 确认信息。

查询工具

  • ask_vectara:(这句可能是特定语境下的指令或用户名,直译为“询问Vectara”,但具体含义需结合上下文理解) 使用Vectara运行一个RAG(检索增强生成)查询,并返回带有生成响应的搜索结果。

    参数:

    • 查询:str,要运行的用户查询 - 必填。
    • `corpus_keys`:`list[str]`,用于搜索的Vectara语料库密钥列表 - 必填。
    • `n_sentences_before`: int,上下文中包含答案前的句子数量 - 可选,默认值为2。
    • `n_sentences_after`: int,答案之后要包含在上下文中的句子数量 - 可选,默认值为2。
    • 词汇插值:float,用于词汇插值的数量 - 可选,默认值为0.005。
    • `max_used_search_results`: int,要使用的最大搜索结果数量 - 可选,默认值为10。
    • `generation_preset_name`: 字符串类型,要使用的生成预设的名称 - 可选,默认值为 "vectara-summary-table-md-query-ext-jan-2025-gpt-4o"。
    • `response_language`: str,响应的语言 - 可选,默认为“eng”。

    返回值:

    • Vectara的回复,包括生成的答案和搜索结果。
  • search_vectara:(可译为)搜索Vectara(注:Vectara可能是一个特定的搜索引擎或数据库名称,根据上下文具体确定) 使用Vectara运行语义搜索查询,不进行生成。

    参数:

    • 查询:str,要运行的用户查询 - 必填。
    • `corpus_keys`:`list[str]`,用于搜索的Vectara语料库密钥列表 - 必填。
    • `n_sentences_before`: int,上下文中包含答案之前的句子数 - 可选,默认值为2。
    • `n_sentences_after`: int,答案之后要包含在上下文中的句子数量 - 可选,默认值为2。
    • 词汇插值:浮点数,表示要使用的词汇插值量 - 可选,默认值为0.005。

    返回值:

    • Vectara的回复,包括匹配的搜索结果。

分析工具

  • 纠正幻觉(或:纠正错误认知) 使用Vectara的VHC(Vectara幻觉纠正)API识别并纠正生成文本中的幻觉。

    参数:

    • 生成文本:str,需分析以检测幻觉的生成文本 - 必填。
    • 文档:list[str],待比较的源文档列表 - 必填。
    • 查询:str,生成文本所依据的原始用户查询 - 可选。

    返回:

    • 包含校正文本和详细校正信息的JSON格式字符串。
  • 评估事实一致性: 使用Vectara专用的事实一致性评估API,评估生成文本与源文档的事实一致性。

    参数:

    • 生成文本:str,用于评估事实一致性的生成文本 - 必填。
    • 文档:列表[字符串],待比较的源文档列表 - 必填。
    • 查询:str,生成文本所依据的原始用户查询 - 可选。

    返回:

    • 包含事实一致性评估结果和评分的JSON格式字符串。

注: 首先必须使用API密钥进行配置 setup_vectara_api_key 工具或 VECTARA_API_KEY 环境变量。

与Claude Desktop的配置

要与Claude Desktop一起使用,请更新您的配置以使用STDIO传输:

{
  "mcpServers": {
    "Vectara": {
      "command": "python",
      "args": ["-m", "vectara_mcp", "--stdio"],
      "env": {
        "VECTARA_API_KEY": "your-api-key"
      }
    }
  }
}

或者使用紫外线:

{
  "mcpServers": {
    "Vectara": {
      "command": "uv",
      "args": ["tool", "run", "vectara-mcp", "--stdio"]
    }
  }
}

注: Claude Desktop 需要 STDIO 传输。虽然它比 HTTP 不那么安全,但对于本地桌面使用来说是可以接受的。

在Claude桌面应用程序中的使用

安装完成后,且Claude桌面应用程序已配置好,您必须完全关闭并重新打开Claude桌面应用程序,才能看到Vectara-mcp服务器。您应该会在应用程序的左下角看到一个锤子图标,表示可用的MCP工具,您可以点击锤子图标,查看关于Vectara-search和Vectara-extract工具的更多详细信息。

现在,Claude 将能够完全访问 Vectara-mcp 服务器,包括所有六个 Vectara 工具。

安全设置工作流程

首次设置(每会话一次):

  1. 安全地配置您的API密钥:
setup-vectara-api-key
API key: [your-vectara-api-key]

设置完成后,使用任何工具时都不要暴露您的API密钥:

Vectara 工具示例

  1. 带有生成功能的RAG查询:
ask-vectara
Query: Who is Amr Awadallah?
Corpus keys: ["your-corpus-key"]
  1. 仅语义搜索:
search-vectara
Query: events in NYC?
Corpus keys: ["your-corpus-key"]
  1. 幻觉检测与修正:
correct-hallucinations
Generated text: [text to check]
Documents: ["source1", "source2"]
  1. 事实一致性评估:
eval-factual-consistency
Generated text: [text to evaluate]
Documents: ["reference1", "reference2"]

安全最佳实践

  1. 在生产环境中始终使用HTTP传输 - 从不将STDIO传输暴露给网络
  2. 保持身份验证启用状态 - 只有在使用时禁用 --no-auth 用于本地测试
  3. 在生产环境中使用HTTPS - 部署在具有TLS终止功能的反向代理之后
  4. 正确配置CORS(跨源资源共享) - 设定 VECTARA_ALLOWED_ORIGINS 限制访问
  5. 定期轮换API密钥 - 更新 VECTARA_API_KEY 并且 VECTARA_AUTHORIZED_TOKENS
  6. 监控速率限制 - 默认100请求/分钟,根据您的需求进行调整

见 `SECURITY.md` 翻译为中文是“安全指南/安全文件”。这个文件通常用于说明项目的安全措施、报告漏洞的流程、安全最佳实践等内容 以获取详细的安全指南。

支持

如需了解问题、提问或做出贡献,请访问: https://github.com/vectara/vectara-mcp 翻译为中文是:“https://github.com 上的 vectara/vectara-mcp 项目”。不过,通常我们不会直接翻译网址,而是直接使用原网址或简单说明其来源和内容。在这里,如果要简洁地表达,可以说“GitHub 上的 vectara/vectara-mcp 项目”