当前位置: 首页 > news >正文

如何在 vscode 里配置 MCP 并连接到 Elasticsearch

在之前的文章 “使用 MCP 将代理连接到 Elasticsearch 并对索引进行查询”,我详细地描述了如何在 Claude Desktop 里配置 Elasticsearch MCP server 并连接到 Elasticsearch。对于很多的开发者来说,处于一些原因。Claude Destop 并不为我们中国开发者所能使用。在今天的文章里,我们来详述如何在 VS code 里来配置 Elasticsearch MCP server。

更多阅读:将 agents 连接到 Elasticsearch 使用模型上下文协议 - docker

安装

Elasticseach 及 Kibana

如果你还没有安装好自己的 Elasticsearch 及 Kibana,那么请你按照之前的文章 “使用 MCP 将代理连接到 Elasticsearch 并对索引进行查询” 进行安装。在这里就不一一赘述了。我们需要启动白金试用:

VS Code

我们需要针对 VS Code 来做一些安装:

  1. Github Copilot
  2. Github Copilot Chat:
  3. Gemini Code Assist:

Gemini code assist 可以轻松地帮我们在 VS code 里生成我们所需要的代码:

  • 按 Command+I 来转换你的代码并执行自定义命令
  • 在编辑器中将注释选为提示,然后按 Control+Return 生成代码
  • 点击 Activity Bar 中的 Gemini Logo () 使用 Gemini Code Assist 聊天,向它提问并改进你的代码
  • 向聊天上下文中添加文件、文件夹和工具
  • 添加自定义规则以增强聊天响应

比如,我们可以在 Github Copilot chat 里打入如下的提示:

我的 Elasticsearch 地址是:https://localhost:9200, 连接的 fingerprint 是:0e62f7b65c1aef92bac30593a98ae761e198514282363074326f5c81a5f341e8,超级用户 elastic 的密码是 kR8H8V3G2bgU7rvqk2rX。请创建 python 代码连接到 Elasticsearch,并使用 ping 来查看连接的状态

我们可以参考文章 “Elasticsearch:关于在 Python 中使用 Elasticsearch 你需要知道的一切 - 8.x” 来进行修正我们的 prompt:

我的 Elasticsearch 地址是:https://localhost:9200, 连接的 fingerprint 是:0e62f7b65c1aef92bac30593a98ae761e198514282363074326f5c81a5f341e8,超级用户 elastic 的密码是 kR8H8V3G2bgU7rvqk2rX。请创建 python 代码连接到 Elasticsearch,并使用 ping 来查看连接的状态。请使用 python client 版本 9.1,并使用 ssl_assert_fingerprint 来进行配置

很显然,这次它生成了正确的代码,并且测试正确。从这里我们可以看到 AI 生成代码的优势 :)

安装第一个 MCP 服务器

Time MCP server

我们接下来安装一个简单的 MCP 服务器来尝试一下如何在 VS Code 下来安装 MCP server。首先我们访问 MCP 服务器的官方 github 网站 https://github.com/modelcontextprotocol/servers。在这个网站中,我们可以看到已经发布的一些 MCP 服务器。我们也可以看到 Elastcsearch 也在之列。

我们先来安装一个简单的 time MCP 服务器。按照 https://github.com/modelcontextprotocol/servers/tree/main/src/time 上面所示。我们可以做如下的安装步骤:

 pip install mcp-server-time

安装完成后,你可以通过以下方式将其作为脚本运行:

$ python -m mcp_server_time

这样我们的 time MCP 服务器已经运行起来了。

我们需要在 VS code 里进行一些配置:

点击 VS code 左下角的设置图标:

如上所示,在默认的情况下 chat.mcp.discovery.enabled 默认为 true。我们在这行的下面,可以针对 MCP 服务器进行配置。在 https://github.com/modelcontextprotocol/servers/tree/main/src/time 点击如下的链接:

在安装上面的命令之前,我们需要安装 uv 及 uvx 包以使得安装顺利:

从上面我们可以看到有两个工具被发现。我们我们使用 Ctrl/Command + Shift + P 热键组合来进行查看:

这次,我们看到一个 time 的 MCP 服务器正在运行中:

上面显示它的完整路径:~/Library/Application\ Support/Code/User

$ pwd
/Users/liuxg/Library/Application Support/Code/User
$ cd ~/Library/Application\ Support/Code/User
$ ls
History          mcp.json         snippets         workspaceStorage
globalStorage    settings.json    sync

我们把上面的配置拷贝到 Copilot 的 Chat box 里,然后我们可以看到上面的显示结果。

如上所示,我们也可以在同样的配置文件里配置多个 MCP 服务器。我们可以在下面的 Elasticsearch 中来进行尝试。

Elasticsearch MCP server

我们来安装官方的 Elasticsearch server https://github.com/elastic/mcp-server-elasticsearch 来进行安装:

docker run docker.elastic.co/mcp/elasticsearch
$ docker run docker.elastic.co/mcp/elasticsearch
Unable to find image 'docker.elastic.co/mcp/elasticsearch:latest' locally
latest: Pulling from mcp/elasticsearch
55d734509148: Pull complete 
48ce42b85919: Pull complete 
32d7fa1a9d53: Pull complete 
9bc4ec11f99c: Pull complete 
d9a04cb2562d: Pull complete 
9985f8349d92: Pull complete 
1067966164c0: Pull complete 
a9652bf076e3: Pull complete 
d6895a67259c: Pull complete 
0e35197cc05e: Pull complete 
604b5830399d: Pull complete 
71f017a1c73a: Pull complete 
Digest: sha256:41865d190dbdd3acf93e15eece81a60e84b9737bc36bf0b6e3c7411ee7eb2455
Status: Downloaded newer image for docker.elastic.co/mcp/elasticsearch:latest
Elastic MCP serverUsage: elasticsearch-core-mcp-server <COMMAND>Commands:stdio  Start a stdio serverhttp   Start a streamable-HTTP server with optional SSE supporthelp   Print this message or the help of the given subcommand(s)Options:-h, --help  Print help

MCP 服务器使用以下命令以 stdio 模式启动:

ES_URL=https://host.docker.internal:9200 ES_API_KEY=eE1WQmxKa0I5NnpZa1ZqRFZkUF86SnZoSHZNYXlheXlBX243Tk1Ja3FsZw== ES_SSL_SKIP_VERIFY=true docker run -i --rm -e ES_URL -e ES_API_KEY -e ES_SSL_SKIP_VERIFY docker.elastic.co/mcp/elasticsearch stdio
$ ES_URL=https://host.docker.internal:9200 ES_API_KEY=eE1WQmxKa0I5NnpZa1ZqRFZkUF86SnZoSHZNYXlheXlBX243Tk1Ja3FsZw== ES_SSL_SKIP_VERIFY=true docker run -i --rm -e ES_URL -e ES_API_KEY -e ES_SSL_SKIP_VERIFY docker.elastic.co/mcp/elasticsearch stdio
Unable to find image 'docker.elastic.co/mcp/elasticsearch:latest' locally
latest: Pulling from mcp/elasticsearch
55d734509148: Pull complete 
48ce42b85919: Pull complete 
32d7fa1a9d53: Pull complete 
9bc4ec11f99c: Pull complete 
d9a04cb2562d: Pull complete 
9985f8349d92: Pull complete 
1067966164c0: Pull complete 
a9652bf076e3: Pull complete 
d6895a67259c: Pull complete 
0e35197cc05e: Pull complete 
604b5830399d: Pull complete 
71f017a1c73a: Pull complete 
Digest: sha256:41865d190dbdd3acf93e15eece81a60e84b9737bc36bf0b6e3c7411ee7eb2455
Status: Downloaded newer image for docker.elastic.co/mcp/elasticsearch:latest
2025-08-28T06:24:12.681905Z  INFO elasticsearch_core_mcp_server: Elasticsearch MCP server, version 0.4.5
2025-08-28T06:24:12.681918Z  INFO elasticsearch_core_mcp_server: Starting stdio server
time="2025-08-29T16:24:32+08:00" level=error msg="error waiting for container: unexpected EOF"
$ ES_URL=https://host.docker.internal:9200 ES_API_KEY=ZWRqdDBKZ0JDUHpOTGZoR0E0UzA6Z1B2TlBpUUppTUNvUHlCWEdQSGtrdw== ES_SSL_SKIP_VERIFY=true docker run -i --rm -e ES_URL -e ES_API_KEY -e ES_SSL_SKIP_VERIFY docker.elastic.co/mcp/elasticsearch stdio
2025-09-01T07:28:37.990732Z  INFO elasticsearch_core_mcp_server: Elasticsearch MCP server, version 0.4.5
2025-09-01T07:28:37.990779Z  INFO elasticsearch_core_mcp_server: Starting stdio server

请注意:在上面,我们使用地址 https://host.docker.internal:9200 来代替 Elasticsearch 地址:https://localhost:9200。可以详细阅读文章 “将 agents 连接到 Elasticsearch 使用模型上下文协议 - docker”。

我们使用如下的格式来进行配置:

{"servers": {"elasticsearch-mcp-server": {"command": "docker","args": ["run", "-i", "--rm", "-e", "ES_URL", "-e", "ES_API_KEY", "docker.elastic.co/mcp/elasticsearch", "stdio"],"env": {"ES_URL": "<elasticsearch-cluster-url>","ES_API_KEY": "<elasticsearch-API-key>"}}}
}
{"servers": {"time": {"command": "uvx","args": ["mcp-server-time"],"type": "stdio"},"my-elasticsearch-mcp-server": {"command": "docker","args": ["run","-i","--rm","-e","ES_URL","-e","ES_API_KEY","-e","ES_SSL_SKIP_VERIFY","docker.elastic.co/mcp/elasticsearch","stdio"],"env": {"ES_URL": "https://host.docker.internal:9200","ES_API_KEY": "eE1WQmxKa0I5NnpZa1ZqRFZkUF86SnZoSHZNYXlheXlBX243Tk1Ja3FsZw==","ES_SSL_SKIP_VERIFY": "true"},"type": "stdio"},"github": {"type": "http","url": "https://api.githubcopilot.com/mcp/"}},"inputs": []
}

我们再次同时按下 Ctrl/Command + Shift + P:

我们之间使用 VS code 里的 Chat 功能来进行聊天:

测试 Elasticsearch MCP server:

我们按照如下的步骤来导入 Elasticsearch 索引:

我们同时打入如下的命令来创建一个叫做 people 的索引:

PUT /people
{"mappings": {"properties": {"name": {"type": "text"},"description": {"type": "text"},"sex": {"type": "keyword"},"age": {"type": "integer"},"address": {"type": "text"}}}
}
POST /_bulk
{ "index" : { "_index" : "people", "_id" : "1" } }
{ "name" : "John Doe", "description" : "A software developer", "sex" : "Male", "age" : 30, "address" : "123 Elm Street, Springfield" }
{ "index" : { "_index" : "people", "_id" : "2" } }
{ "name" : "Jane Smith", "description" : "A project manager", "sex" : "Female", "age" : 28, "address" : "456 Maple Avenue, Anytown" }
{ "index" : { "_index" : "people", "_id" : "3" } }
{ "name" : "Alice Johnson", "description" : "A graphic designer", "sex" : "Female", "age" : 26, "address" : "789 Oak Lane, Metropolis" }
{ "index" : { "_index" : "people", "_id" : "4" } }
{ "name" : "Bob Brown", "description" : "A marketing specialist", "sex" : "Male", "age" : 32, "address" : "321 Pine Street, Gotham" }
{ "index" : { "_index" : "people", "_id" : "5" } }
{ "name" : "Charlie Davis", "description" : "An IT analyst", "sex" : "Male", "age" : 29, "address" : "654 Cedar Blvd, Star City" }
{ "index" : { "_index" : "people", "_id" : "6" } }
{ "name" : "Diana Prince", "description" : "A diplomat", "sex" : "Female", "age" : 35, "address" : "987 Birch Road, Themyscira" }
{ "index" : { "_index" : "people", "_id" : "7" } }
{ "name" : "Evan Wright", "description" : "A journalist", "sex" : "Male", "age" : 27, "address" : "213 Willow Lane, Central City" }
{ "index" : { "_index" : "people", "_id" : "8" } }
{ "name" : "Fiona Gallagher", "description" : "A nurse", "sex" : "Female", "age" : 31, "address" : "546 Spruce Street, South Side" }
{ "index" : { "_index" : "people", "_id" : "9" } }
{ "name" : "George King", "description" : "A teacher", "sex" : "Male", "age" : 34, "address" : "879 Elm St, Smallville" }
{ "index" : { "_index" : "people", "_id" : "10" } }
{ "name" : "Helen Parr", "description" : "A full-time superhero", "sex" : "Female", "age" : 37, "address" : "123 Metro Avenue, Metroville" }

在上面的例子中,我们可以看到有5个男的5个女的。我们打入如下的问题:

How many are males and how many are females?

Please use index kibana_sample_data_flights to find out the cheapest price from CN to US and tell me the OriginCityName and DestCityName

请使用索引 kibana_sample_data_flights 查找从 中国 到 美国 的最便宜价格,并告诉我 OriginCityName 和 DestCityName

祝大家使用 VS code 顺序!

http://www.dtcms.com/a/423721.html

相关文章:

  • 开源安全管理平台wazuh-安装与配置
  • 开发区建网站外包上海小程序开发与制作公司
  • 常州做网站建设的公司网络营销的优势有哪些?
  • Zookeeper 技术详细介绍
  • 精美个人网站电子商务基础网站建设与维护单项选择题
  • 菜鸟教程网站建设培训网站建设方案说明书
  • 直播间 网站建设南京市建设工程网站
  • 网页设置百度seo外包
  • 塑料餐饮具头部优势,新天力市占率稳步提升
  • 郑州做定制网站的公司自学python需要的软件
  • 每天五分钟深度学习:如何判断神经网络是过拟合还是欠拟合?
  • Supermicro NVIDIA Grace Superchip存储服务器超微ARS-121L-NE316R开箱评测
  • 解决在使用Lombok时maven install 找不到符号的问题
  • 从零复现论文:深度学习域适应1
  • 一品威客:小程序智能客服:AI 如何帮助企业降低 80% 客服成本?
  • 爱电影网站织梦网站404怎么做
  • 【读取WPS嵌入图片】使用POI读取Excel中的嵌入图片
  • 【Block总结】LAGA,大核分组注意力门,实现特征融合|即插即用
  • 科研项目管理系统对比:如何管好需求、进度、资源与成果?
  • 全球设计网站排行高德是外国公司吗?
  • 动态规划DP:从硬币问题到挤牛奶问题的算法实战
  • 二十八、API之《System 类》——与系统交互的“桥梁”
  • GitHub 热榜项目 - 日榜(2025-09-29)
  • 3分钟,官方讲讲STM32CubeProgrammer 2.20更新哪些新特性?
  • 想学做网站要去哪里学济南网站制作哪家最好
  • Go基础(⑥Cors)
  • 九龙坡区网站建设南宁网站建设速成培训
  • ⸢ 柒 ⸥ ⤳ 可信纵深防御建设方案:a.基线 基础设施可信
  • 山东营销网站建设设计装修网平台
  • android 增强版 RecyclerView