惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
D
DataBreaches.Net
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
S
Secure Thoughts
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
腾讯CDC
GbyAI
GbyAI
G
Google Developers Blog
博客园 - 司徒正美
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
Microsoft Security Blog
Microsoft Security Blog
Jina AI
Jina AI
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
P
Privacy & Cybersecurity Law Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
AI
AI
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
H
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
S
Security Affairs
TaoSecurity Blog
TaoSecurity Blog
The GitHub Blog
The GitHub Blog
Hacker News: Ask HN
Hacker News: Ask HN
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19) 使用 Velero 备份 Kubernetes 集群 Kubernetes Cheat Sheet 开发 Tips(18) 如何构建一个 Java 工程 开发 Tips(17) KubeSpray 安装 Kubernetes 报错 ip in ansible_all_ipv4_addresses 基于 Kubernetes 和 Jenkins 搭建自动化测试系统 在 Kubernetes 上动态创建 Jenkins Slave 使用 Jenkins 进行服务拨测 开发 Tips(16) Kubernetes 签发 Ingress 证书及日常故障运维 Kubernetes 中 Deployment 的基本操作 Kubernetes 中的证书 如何使用 KubeBuilder 开发一个 Operator Kubernetes 1.6.0 安装问题汇总 镜像管理工具 -- Harbor 开发 Tips(15) Docker 如何拉取镜像 开发 Tips(14) 使用 Helm 安装 harbor 开发 Tips(13) 使用 S2I 构建云原生应用 在 Kubernetes 中使用 emptyDir、hostPath、localVolume 开发 Tips(12) 开发 Tips(11) 代码质量分析工具 SonarQube 使用 Kubeadm 安装 Kubernetes 集群 一起来学 Go --(4)常用函数 Kubernetes 中的 Ceph Kubernetes 之 Volumes Kubernetes 之 Labels、Selectors 开发 Tips(10) 开源正在重构商业模式 Kubernetes 之网络 Kubernetes 之 API 使用 Helm 和 Operator 快速部署 Prometheus Kubernetes 复杂有状态应用管理框架 -- Operator Kubernetes 的包管理器 -- Helm 一起来学 Go --(3)Go Modules 如何一步一步地优化博客方案 kubectl 实用指南 Kubernetes 中的基本概念 搭建远程 Kubernetes 开发环境 大公司和小公司的 ToB 思路 开发 Tips(9) Go 入门指南 一起来学 Go --(2)数据与逻辑结构 如何预防 Web 富文本中的 XSS 攻击 django-xss-cleaner 云工作时代 一起来学 Go --(1)背景与特点 SaaS 开发团队的不同阶段 你不知道的 Git 使用技巧 输出既服务 微服务设计 继续奔跑 开发 Tips(8) 从账户安全到二次验证 Django 性能之数据库查询优化 Django 性能之分库分表 敏捷开发之研发流程 打造一致性的团队 开发 Tips(7) Pytest 进阶学习之 Mock PaaS 部署之 buildpack Go 开发配置 领域输出才是 PaaS 的核心竞争力 Pytest 入门学习 开发 Tips(6) 如何使用 Jenkins、Docker、GitLab 搭建 Django 自动化部署流程
你也可以这样落地 AI Agent - MCP 篇
微信公众号 · 2026-01-29 · via 陈少文的网站

1. MCP 是什么

MCP 是 Model Context Protocol 的缩写,是一个用于在模型和应用程序之间传递上下文的协议。

MCP 最大的价值是,在模型大战快结束,AI 应用爆发前夕,让开发者们对模型之外的能力调用有了统一的标准。如果模型、服务商各自定制一套协议,应用开发者们将面临巨大的学习成本、维护成本。同时,有了 MCP,存量的服务能力可以被复用,这无疑大大扩展了 AI 应用的边界。

每一种服务能力,都值得被抽象为一个 MCP 服务。

初期没有 MCP 时,为了查询日志、监控数据、执行 SOPS,我不得不引入各种组件的 SDK,而且受到 SDK 编程语言的限制,只能用 Golang 实现 AI Agent 的功能。有了 MCP 之后,Agent 的数量急剧的增加,通过 MCP 解耦,我可以根据具体场景使用 Cursor、TRAE 等工具快速开发上线新的能力。

2. ops-mcp-server

https://github.com/shaowenchen/ops-mcp-server 提供了运维场景下常用的 MCP 服务,包括:

2.1 Events

获取 Kubernetes 事件,其实不止是 Kubernetes 事件,而是所有事件系统的事件,包括告警事件、云厂事件等。

提供有两个工具:

  • get-events-from-ops:按条件获取 Kubernetes 事件
  • list-events-from-ops:列出 Kubernetes 事件

依赖于 https://github.com/shaowenchen/ops 项目,需要 ops-server 的接口访问 Nats 中的事件。

2.2 Metrics

查询 Prometheus 指标,支持即时查询和区间查询。

提供有三个工具:

  • list-metrics-from-prometheus:列出 Prometheus 指标
  • query-metrics-from-prometheus:即时查询 Prometheus 指标
  • query-metrics-range-from-prometheus:区间查询 Prometheus 指标

2.3 Logs

查询 Elasticsearch 日志,支持全文检索和索引查询。

提供有三个工具:

  • search-logs-from-elasticsearch:全文检索 Elasticsearch 日志
  • list-log-indices-from-elasticsearch:列出 Elasticsearch 索引
  • query-logs-from-elasticsearch:ES|QL 查询 Elasticsearch 日志

2.4 Traces

查询 Jaeger 链路,支持按服务、操作、trace ID 查询。

提供有四个工具:

  • get-services-from-jaeger:列出 Jaeger 服务
  • get-operations-from-jaeger:列出 Jaeger 操作
  • get-trace-from-jaeger:按 trace ID 查询 Jaeger 链路
  • find-traces-from-jaeger:按条件搜索 Jaeger 链路

2.5 SOPS

执行 SOPS 流程,支持按流程 ID 查询、列出流程及参数。

提供有三个工具:

  • execute-sops-from-ops:执行 SOPS 流程
  • list-sops-from-ops:列出 SOPS 流程
  • list-sops-parameters-from-ops:列出 SOPS 流程参数

依赖于 https://github.com/shaowenchen/ops 项目,Pipeline 导出为 SOPS 流程,添加 Pipeline 即添加 SOPS 流程。

3. 设计和开发

3.1 尽可能少的 tools 数量

起初,我为了更扁平地将数据给模型,直接将每个 SOPS 导出为一个 tool,数量很快就超过了 40 个,达到了 Cursor 的上限,无法继续添加。

我全都采用了类似 RESTful 的接口设计进行重构,列出资源、获取资源详情、执行资源操作,这样大大减少了 tool 的数量。同时,也避免操作与数据耦合,新增加一个事件类型、SOPS、Metrics 指标等,完全不会影响到 MCP Server,只需要应用端调整参数即可。

3.2 tool 名字可定制

1
2
3
4
5
metrics:
  enabled: true
  tools:
    prefix: ""
    suffix: "-from-prometheus"

在启动 MCP Server 时,我允许通过配置文件定制 tool 的名字。这里的 -from-prometheus 就是 tool 名字的 suffix,指明了 tool 的来源是 Prometheus。

如果你有多个 Prometheus 实例,也可以部署多个 MCP Server,采用不同的 prefixsuffix 来区分,以此实现多数据源的接入。

tool 名字也是 prompt 的一部分,通过定制的 tool 名字,可以让模型更准确地理解用户意图。

3.3 采用共识的参数和返回格式

不要自作聪明地过渡设计,模型掌握的是行业内的共识,而不是你的个人经验。

同时,MCP Server 返回的数据本来就是给程序或模型使用,可读性并不是最重要的,准守规范,与其他接口保持一致即可。

因此,你会看到 MCP Server 很多逻辑只是在帮我们转发接口请求,然后返回原始数据。这样做的好处是,不在需要关心字段、格式的变化,通用性非常好。

3.4 使用 AI IDE 进行调试

通过添加下面这段配置,在 AI IDE 中集成 MCP Server 进行测试。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "mcpServers": {
    "ops-sse-from-ai": {
      "url": "http://x.x.x/mcp",
      "headers": {
        "Authorization": "Bearer xxx"
      }
    }
  }
}

如上图,如果使用尽可能少的 Prompt 就能让这些工具能够非常顺利地调用,说明 MCP Server 可用性非常好。实际上,我在写代码时,也会

4. 观测能力

从云原生到 AI 原生,让我印象深刻的是观测能力。没有良好的观测性,算不上是一个成熟度很高的系统。

云原生时代,各种观测项目层出不穷,创业公司也很多。AI 原生时代也会有,langfuse 出来不久就被收购,可见观测能力在 AI 时代依然重要。

谁都不愿意自己的任务跑在黑盒中,有异常无法发现,有流量无法观测,这对工程团队来说是无法接受的。

ops-mcp-server 提供了丰富的观测能力,包括:

  • 基础资源使用
  • tool 调用情况

5. 总结

MCP 并不能迅速提升 AI Agent 的能力,可能还会因为开发 MCP Server 延迟了 AI Agent 能力的开发。

但是,MCP 给了我们更多试错,更多尝试的机会。我们可以将 MCP 直接接入已有的超级智能体进行测试,也可以基于 MCP 快速开发多个 AI Agent 进行对比或者用在不同场景。

本篇主要介绍的是我对 MCP 的一些理解和思考,主要内容包括:

  • MCP 提供了统一的能力调用标准,让开发者们可以更加专注于业务逻辑的实现
  • 介绍 ops-mcp-server 提供的 Events、Metrics、Logs、Traces、SOPS 等能力
  • 设计 MCP Server 时,需要注意的事项
  • 观测能力的重要性