Token导航 LogoToken导航TokenDH.com
Customized Elasticsearch MCP Server logo
搜索检索stdio官方级别未说明来源级核验

Customized Elasticsearch MCP Server

MCP Server

基于Python FastAPI和FastMCP的自定义Elasticsearch MCP服务,支持关键词搜索、二次过滤、按ID查询和复杂筛选词查询逻辑,适用于新闻搜索和数据检索场景。

工具数

3

提示词数

0

GitHub Stars

2

资源数

0
数据检索FastAPIPython

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Coolgiserz

提供方

Coolgiserz

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -U pip

详细介绍

Customized-Elasticsearch-MCP-Server

基于 Python FastMCPFastAPI 的 自定义Elasticsearch MCP 服务Demo。

特性

  • 支持关键词搜索、二次过滤、按 ID 查询、复杂筛选词查询逻辑
  • 基于 FastMCP 提供 MCP 协议工具:search_newssearch_news_with_secondary_filterread_single_news
  • Prometheus 监控集成(starlette_prometheus
  • 基于 Redis 的服务端 Session 存储(RedisSessionMiddleware
  • Docker 与 Docker Compose 支持
  • 包含单元测试和集成测试

![](images/mcp-server.png)

目录结构

.
├── src
│   └── news_mcp_server
│       ├── app.py               # FastAPI 应用入口
│       ├── mcp_server.py        # FastMCP 服务定义
│       ├── clients
│       │   └── elastic_client.py # 异步 ES 客户端
│       ├── services
│       │   └── news_service.py   # 业务逻辑封装
│       ├── middlewares
│       │   ├── auth.py           # 简单 Token 鉴权
│       │   ├── monitor.py        # Prometheus 中间件
│       │   └── session.py        # Session 中间件
│       ├── schemas
│       │   └── news.py           # Pydantic 数据模型
│       └── config
│           └── settings.py       # 环境配置
├── tests
│   ├── unit                      # 单元测试
│   └── integration               # 集成测试
├── Dockerfile                    # 容器构建配置
├── docker-compose.yml            # Docker Compose 配置
├── Makefile                      # 常用命令集
├── env.sample                    # 环境变量示例
├── pyproject.toml                # Python 项目配置
└── README.md                     # 项目说明

环境变量

复制 env.sample.env 并配置:

cp env.sample .env
# 编辑 .env,至少需要以下变量:
# ES_API_KEY    Elasticsearch API Key(必填)
# ES_HOST       Elasticsearch 主机 URL(含端口)(必填)
# ES_INDEX      Elasticsearch 索引名称(必填)
# API_KEY       MCP 服务访问令牌(Bearer Token)(必填)

安装与运行

本地开发

  1. 克隆项目并进入目录:
   git clone https://github.com/Coolgiserz/customized-elasticsearch-mcp-server
   cd customized-elasticsearch-mcp-server
  1. 创建并激活虚拟环境:
   python3.12 -m venv .venv
   source .venv/bin/activate
  1. 安装依赖:
   pip install -U pip
   pip install uv[all]
   uv sync
  1. 启动服务(热重载):
   make dev
   # 或者
   uv run uvicorn src.main:app --reload --host 0.0.0.0 --port 9009
  1. 访问:

- 健康检查: GET http://localhost:9009/healthcheck - Prometheus 指标: GET http://localhost:9009/metrics

Docker & Docker Compose

  • 构建镜像:
  make build
  • 使用 Docker Compose 一键启动:
  make docker-build
  make docker-up
  • 停止服务:
  make docker-down
  • 日志查看:
  make docker-logs
  • 默认映射端口:28000 -> 8000

API 使用

Healthcheck

GET /healthcheck
Response: {"status":"ok"}

Prometheus Metrics

GET /metrics

MCP 工具调用示例

使用 Python FastMCP 客户端调用 search_news

import asyncio
from fastmcp import Client

async def main():
    # 将 URL 替换为实际部署地址
    async with Client("http://localhost:9009/mcp-server") as client:
        tools = await client.list_tools()
        print("可用工具:", tools)

        result = await client.call_tool("search_news", {
            "query": "人工智能",
            "max_results": 5,
            "date_from": "2024-01-01",
            "date_to": "2024-12-31"
        })
        print(result)

asyncio.run(main())

测试

  • 单元测试:
  make test
  • 集成测试:
  pytest -q -m "integration"

Makefile 常用命令

make init       # 初始化依赖
env sync        # 同步依赖(uv sync)
make dev        # 启动开发模式
make lint       # 代码检查
make format     # 代码格式化
make test       # 运行测试
dmake build     # 构建 Docker 镜像

TODO

  • 引入基于 JWT 或 OAuth2 的更安全鉴权机制
  • 支持多进程/多实例共享会话(如使用 Redis Session Store)
  • 优化 Elasticsearch 查询性能,添加缓存层(Redis)
  • 增加端到端集成测试覆盖,并配置 CI/CD 流水线
  • 支持 ES 聚合查询与热门关键词统计功能
  • 提供 Swagger UI 或 Postman 集合示例

License

本项目采用 MIT 许可证,详见 LICENSE。

目录标签

目录标签

数据检索FastAPIPythonElasticsearch本地部署MCP协议新闻搜索

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

api-key

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdioapi-key部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP