1. What Is MCP
MCP is short for Model Context Protocol, a protocol for passing context between models and applications.
The greatest value of MCP is that, as the model wars are winding down and AI applications are about to explode, it gives developers a unified standard for invoking capabilities beyond the model itself. If models and providers each defined their own protocol, application developers would face enormous learning and maintenance costs. At the same time, with MCP, existing service capabilities can be reused, which undoubtedly greatly expands the boundaries of AI applications.
Every kind of service capability is worth abstracting into an MCP service.

In the early days without MCP, to query logs, monitor data, and execute SOPS, I had to pull in the SDKs of various components, and I was limited by the programming language of those SDKs, so I could only implement AI Agent functionality in Golang. With MCP, the number of Agents has grown rapidly, and because MCP decouples things, I can use tools like Cursor and TRAE to quickly develop and ship new capabilities according to the specific scenario.
2. ops-mcp-server
https://github.com/shaowenchen/ops-mcp-server provides commonly used MCP services for operations scenarios, including:
2.1 Events
Retrieve Kubernetes events — actually not just Kubernetes events, but events from all event systems, including alert events, cloud provider events, and so on.
Two tools are provided:
get-events-from-ops: retrieve Kubernetes events by conditionlist-events-from-ops: list Kubernetes events
It depends on the https://github.com/shaowenchen/ops project, and needs the ops-server interface to access events in Nats.
2.2 Metrics
Query Prometheus metrics, supporting instant queries and range queries.
Three tools are provided:
list-metrics-from-prometheus: list Prometheus metricsquery-metrics-from-prometheus: instant query of Prometheus metricsquery-metrics-range-from-prometheus: range query of Prometheus metrics
2.3 Logs
Query Elasticsearch logs, supporting full-text search and index queries.
Three tools are provided:
search-logs-from-elasticsearch: full-text search of Elasticsearch logslist-log-indices-from-elasticsearch: list Elasticsearch indicesquery-logs-from-elasticsearch: ES|QL query of Elasticsearch logs
2.4 Traces
Query Jaeger traces, supporting queries by service, operation, and trace ID.
Four tools are provided:
get-services-from-jaeger: list Jaeger servicesget-operations-from-jaeger: list Jaeger operationsget-trace-from-jaeger: query a Jaeger trace by trace IDfind-traces-from-jaeger: search Jaeger traces by condition
2.5 SOPS
Execute SOPS procedures, supporting queries by procedure ID and listing procedures and their parameters.
Three tools are provided:
execute-sops-from-ops: execute a SOPS procedurelist-sops-from-ops: list SOPS procedureslist-sops-parameters-from-ops: list SOPS procedure parameters
It depends on the https://github.com/shaowenchen/ops project. Pipelines are exported as SOPS procedures, so adding a Pipeline means adding a SOPS procedure.
3. Design and Development
3.1 Keep the Number of Tools as Small as Possible
At first, to hand data to the model in a flatter way, I directly exported each SOPS as a tool. The count quickly exceeded 40, hitting Cursor’s limit, and I could not add any more.
I refactored all of them with a RESTful-like interface design: list resources, get resource details, execute resource operations. This greatly reduced the number of tools. At the same time, it avoids coupling operations with data — adding a new event type, SOPS, Metrics metric, and so on does not affect the MCP Server at all; the application side only needs to adjust parameters.
3.2 Customizable Tool Names
| |
When starting the MCP Server, I allow the tool names to be customized through a configuration file. Here -from-prometheus is the suffix of the tool name, indicating that the tool’s source is Prometheus.
If you have multiple Prometheus instances, you can also deploy multiple MCP Servers, distinguished by different prefix and suffix, thereby enabling access to multiple data sources.
Tool names are also part of the prompt. Through customized tool names, the model can understand user intent more accurately.
3.3 Adopt Consensus Parameter and Return Formats
Do not try to be clever with over-engineering; what the model has mastered is industry consensus, not your personal experience.
At the same time, the data returned by the MCP Server is meant for programs or models to use in the first place, so readability is not the most important thing. Just follow the specification and stay consistent with other interfaces.
As a result, you will see that a lot of the logic in the MCP Server is just helping us forward interface requests and then return the raw data. The benefit is that you no longer need to worry about changes to fields or formats, and the generality is excellent.
3.4 Debug with an AI IDE
Add the following configuration to integrate the MCP Server into an AI IDE for testing.
| |

As shown above, if these tools can be invoked very smoothly using as few Prompts as possible, it means the MCP Server is highly usable. In fact, when I write code, I also
4. Observability
From cloud native to AI native, what impressed me most is observability. Without good observability, a system cannot be considered highly mature.
In the cloud native era, all kinds of observability projects emerged one after another, and there were many startups too. The same will happen in the AI native era — langfuse was acquired not long after it came out, which shows that observability remains important in the AI era.
No one wants their tasks to run in a black box, where anomalies cannot be discovered and traffic cannot be observed. That is unacceptable for an engineering team.
ops-mcp-server provides rich observability, including:

- Basic resource usage
- Tool invocation status
5. Summary
MCP cannot rapidly improve the capabilities of an AI Agent; it may even delay the development of AI Agent capabilities because of the work to develop MCP Servers.
However, MCP gives us more opportunities to try things and make mistakes. We can plug MCP directly into existing super agents for testing, or quickly develop multiple AI Agents based on MCP to compare them or use them in different scenarios.
This article is mainly about some of my understanding and thoughts on MCP, with the main content including:
- MCP provides a unified standard for capability invocation, letting developers focus more on implementing business logic
- An introduction to the Events, Metrics, Logs, Traces, SOPS, and other capabilities provided by ops-mcp-server
- Things to pay attention to when designing an MCP Server
- The importance of observability
