项目简介

EOSC Data Commons MCP Server 是欧洲开放科学云(EOSC)项目的一部分,旨在通过人工智能助手简化科研人员对海量开放数据和工具的发现与访问。它通过一个标准化的Model Context Protocol (MCP) 接口,让大型语言模型(LLM)能够理解用户需求,调用相应的工具在OpenSearch数据库中搜索相关数据集,获取文件元数据,并最终向用户提供结构化且易于理解的搜索结果。

主要功能点

  • 智能数据搜索: 利用大型语言模型处理自然语言查询,通过OpenSearch服务在EOSC Data Commons中检索相关数据集。
  • 数据集文件元数据获取: 提供工具获取特定数据集中的文件名称、描述、类型等详细元数据。
  • LLM集成: 支持通过HTTP POST接口与多种LLM提供商(如e-infra CZ, Mistral.ai, OpenRouter)进行集成,实现智能对话和工具调用。
  • MCP协议支持: 完全遵循Model Context Protocol,支持Streamable HTTP和Stdio等多种传输协议,方便各类MCP客户端(如VS Code GitHub Copilot)进行连接和交互。

安装步骤

  1. 安装'uv': 确保你的系统已安装'uv',这是一个用于Python包管理和虚拟环境的工具。如果尚未安装,请参照'uv'官方文档进行安装。
  2. 安装Docker: 如果你计划在本地运行OpenSearch实例,需要安装Docker。如果已有运行中的OpenSearch实例,则可以跳过此步骤。
  3. 配置LLM API Key: 在项目根目录下创建一个名为'keys.env'的文件,在其中添加你选择的LLM提供商的API密钥。例如:
    EINFRACZ_API_KEY=YOUR_EINFRA_CZ_API_KEY
    MISTRAL_API_KEY=YOUR_MISTRAL_API_KEY
    OPENROUTER_API_KEY=YOUR_OPENROUTER_API_KEY
    SEARCH_API_KEY=YOUR_OPTIONAL_SECRET_KEY # 用于保护/chat端点,可不设
    请将'YOUR_..._API_KEY'替换为你的实际密钥。
  4. 安装开发依赖: 在项目根目录下运行以下命令安装所有必要的Python依赖:
    uv sync --extra agent
  5. 启动开发服务器: 运行以下命令启动服务器。服务器将在'http://localhost:8000'启动,MCP接口位于'http://localhost:8000/mcp':
    uv run uvicorn src.data_commons_mcp.main:app --log-config logging.yml --reload
  6. 启动OpenSearch(可选): 如果你没有外部OpenSearch实例,可以使用Docker启动一个。请参考仓库的Docker部署说明,通常是通过'docker compose up'启动一个预配置的OpenSearch服务。

服务器配置(MCP客户端使用)

MCP客户端(例如,VS Code中的GitHub Copilot)需要配置MCP服务器的连接信息。以下是两种常见的配置方式,你只需选择其中一种进行配置。

  • HTTP 传输协议配置: 如果你的MCP客户端支持HTTP传输,你可以直接提供服务器的URL。

    • 服务器名称: 'data-commons-mcp-http' (你可以自定义一个名称)
    • URL: 'http://localhost:8000/mcp' (这是你的MCP服务器的HTTP接口地址)
    • 传输类型: 'http'
    • (无需额外参数,MCP客户端会自动处理请求和响应。)
  • Stdio 传输协议配置: 如果你的MCP客户端通过标准输入/输出与服务器进程通信,你需要提供启动服务器进程的命令和参数。

    • 服务器名称: 'data-commons-mcp-stdio' (你可以自定义一个名称)
    • 传输类型: 'stdio'
    • 启动命令: 'uvx' (用于执行Python脚本的工具)
    • 命令参数: '["data-commons-mcp"]' (指示'uvx'运行'data-commons-mcp'这个Python包)
    • 环境变量:
      • 'OPENSEARCH_URL': 你的OpenSearch实例的URL,例如 'http://localhost:9200'。
      • 'EINFRACZ_API_KEY': 你的e-infra CZ API密钥。
      • 'MISTRAL_API_KEY': 你的Mistral.ai API密钥。
      • 'OPENROUTER_API_KEY': 你的OpenRouter API密钥。
    • (请注意,这些环境变量需要在MCP客户端的配置中明确提供,而不是在命令行中直接编码,因为MCP客户端会负责启动进程并设置这些变量。)

基本使用方法

  1. 连接MCP客户端: 按照你的MCP客户端(如VS Code GitHub Copilot)的指引,添加一个新的MCP服务器。选择相应的传输类型(HTTP或Stdio),并提供上述的配置信息。

  2. 通过LLM聊天界面交互: 部署完成后,你可以通过访问服务器的'/chat'端点(例如'http://localhost:8000/chat')与AI助手进行对话。例如,使用'curl'发送POST请求:

    curl -X POST http://localhost:8000/chat \
        -H "Content-Type: application/json" -H "Authorization: Bearer SECRET_KEY" \
        -d '{"messages": [{"role": "user", "content": "Educational datasets from Switzerland covering student assessments, language competencies, and learning outcomes."}], "model": "einfracz/qwen3-coder"}'

    请将'SECRET_KEY'替换为你在'keys.env'中配置的'SEARCH_API_KEY'(如果设置了的话)。

  3. 直接调用MCP工具: 高级用户可以直接通过JSON-RPC协议(通过MCP客户端库)调用服务器提供的工具,例如'search_data'和'get_dataset_files',以获取结构化的数据。

信息

分类

AI与计算