返回市场
搜索引擎MCP服务器

搜索引擎MCP服务器

作者:sajitsasi2 星标更新:2025-08-20

项目介绍

Elasticsearch MCP Server

该项目实现了一个用于Elasticsearch的MCP(模型上下文协议)服务器,提供了与Elasticsearch集群交互的工具和资源。

License: MIT

功能

工具

  • list_indices: 列出Elasticsearch集群中的所有索引
  • get_mappings: 获取特定索引的映射信息
  • search: 使用提供的查询DSL执行Elasticsearch搜索
  • search_with_query_string: 使用简单的查询字符串执行搜索
  • get_index_stats: 获取特定索引的统计信息

资源

  • elasticsearch://indices: 列出所有Elasticsearch索引
  • elasticsearch://index/{index_name}: 获取特定索引的详细信息
  • elasticsearch://mapping/{index_name}: 获取特定索引的映射信息

预备条件

  • Python 3.7+
  • Elasticsearch Python客户端
  • MCP SDK
  • Elasticsearch集群凭证(云ID和API密钥)

设置

  1. 克隆仓库:

    git clone https://github.com/yourusername/elasticsearch-mcp-server.git
    cd elasticsearch-mcp-server
    
  2. 安装所需依赖项:

    pip install -r requirements.txt
    
  3. 设置环境变量:

    • 复制示例环境文件:cp .env.example .env
    • 编辑.env文件并添加您的Elasticsearch凭证

    或者在您的shell中直接设置它们:

    export ES_CLOUD_ID=your_elasticsearch_cloud_id
    export ES_API_KEY=your_elasticsearch_api_key
    

配置Claude的MCP服务器

configure_mcp_server.py脚本帮助您在Claude的MCP设置文件中配置Elasticsearch MCP服务器。这允许Claude通过MCP服务器连接到您的Elasticsearch集群。

python configure_mcp_server.py your_cloud_id your_api_key

该脚本:

  1. 接收您的Elasticsearch云ID和API密钥作为命令行参数
  2. 查找或创建Claude MCP设置文件
  3. 添加或更新Elasticsearch MCP服务器配置
  4. 设置服务器连接到您的Elasticsearch集群所需的环境变量

运行此脚本后,请重新启动VS Code以应用更改。Claude将能够使用Elasticsearch MCP服务器与您的Elasticsearch集群进行交互。

测试MCP资源

方案1:使用测试脚本

我们提供了一个测试脚本,它会启动MCP服务器并提供测试说明:

# 如果需要,使脚本可执行
chmod +x test_es_mcp.sh

# 运行测试脚本
ES_CLOUD_ID=your_cloud_id ES_API_KEY=your_api_key ./test_es_mcp.sh

该脚本将:

  1. 在后台启动MCP服务器
  2. 提供测试资源的说明
  3. 直到您按下Ctrl+C,服务器将继续运行

方案2:手动测试

  1. 启动MCP服务器:

    ES_CLOUD_ID=your_cloud_id ES_API_KEY=your_api_key python es_mcp_server.py
    
  2. 在Claude中,使用access_mcp_resource工具访问资源:

    a. 列出所有索引:

    <access_mcp_resource>
    <server_name>elasticsearch-mcp-server</server_name>
    <uri>elasticsearch://indices</uri>
    </access_mcp_resource>
    

    b. 获取特定索引的信息:

    <access_mcp_resource>
    <server_name>elasticsearch-mcp-server</server_name>
    <uri>elasticsearch://index/your_index_name</uri>
    </access_mcp_resource>
    

    c. 获取特定索引的映射信息:

    <access_mcp_resource>
    <server_name>elasticsearch-mcp-server</server_name>
    <uri>elasticsearch://mapping/your_index_name</uri>
    </access_mcp_resource>
    

方案3:使用Python测试脚本

我们也提供了一个Python测试脚本,演示如何访问资源:

ES_CLOUD_ID=your_cloud_id ES_API_KEY=your_api_key python test_es_resources.py

资源详情

elasticsearch://indices

返回Elasticsearch集群中所有索引的JSON数组,包括:

  • 索引名称
  • 健康状态
  • 状态
  • 文档数量
  • 大小

elasticsearch://index/{index_name}

返回特定索引的详细信息,包括:

  • 索引名称
  • 设置
  • 统计数据(文档数量、字节大小和MB大小)

elasticsearch://mapping/{index_name}

返回特定索引的映射信息,包括:

  • 完整的映射定义
  • 字段数量
  • 字段类型分布

错误处理

所有资源都包含适当的错误处理和验证:

  • 如果索引不存在,资源将返回适当的错误消息
  • 如果连接到Elasticsearch出现问题,资源将返回错误消息
  • 所有异常都被捕获并作为可读的错误消息返回

贡献

欢迎贡献!以下是贡献的方法:

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature/your-feature-name
  3. 提交更改:git commit -am 'Add some feature'
  4. 推送到分支:git push origin feature/your-feature-name
  5. 提交拉取请求

许可证

本项目采用MIT许可证 - 详情见LICENSE文件。