diff --git a/gopls/internal/mcp/context.go b/gopls/internal/mcp/context.go
index e98d04d..bbae8bb 100644
--- a/gopls/internal/mcp/context.go
+++ b/gopls/internal/mcp/context.go
@@ -32,6 +32,7 @@
 }
 
 func (h *handler) contextHandler(ctx context.Context, req *mcp.CallToolRequest, params ContextParams) (*mcp.CallToolResult, any, error) {
+	countGoContextMCP.Inc()
 	fh, snapshot, release, err := h.fileOf(ctx, params.File)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/counters.go b/gopls/internal/mcp/counters.go
new file mode 100644
index 0000000..91e4996
--- /dev/null
+++ b/gopls/internal/mcp/counters.go
@@ -0,0 +1,23 @@
+// Copyright 2025 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package mcp
+
+import "golang.org/x/telemetry/counter"
+
+// Proposed counters for evaluating usage of Go MCP Server tools. These counters
+// increment when a user utilizes a specific Go MCP tool.
+var (
+	countGoContextMCP          = counter.New("gopls/mcp-tool:go_context")
+	countGoDiagnosticsMCP      = counter.New("gopls/mcp-tool:go_diagnostics")
+	countGoFileContextMCP      = counter.New("gopls/mcp-tool:go_file_context")
+	countGoFileDiagnosticsMCP  = counter.New("gopls/mcp-tool:go_file_diagnostics")
+	countGoFileMetadataMCP     = counter.New("gopls/mcp-tool:go_file_metadata")
+	countGoPackageAPIMCP       = counter.New("gopls/mcp-tool:go_package_api")
+	countGoReferencesMCP       = counter.New("gopls/mcp-tool:go_references")
+	countGoSearchMCP           = counter.New("gopls/mcp-tool:go_search")
+	countGoSymbolReferencesMCP = counter.New("gopls/mcp-tool:go_symbol_references")
+	countGoWorkspaceMCP        = counter.New("gopls/mcp-tool:go_workspace")
+	countGoVulncheckMCP        = counter.New("gopls/mcp-tool:go_vulncheck")
+)
diff --git a/gopls/internal/mcp/file_context.go b/gopls/internal/mcp/file_context.go
index 9ef128c..c01ea9d 100644
--- a/gopls/internal/mcp/file_context.go
+++ b/gopls/internal/mcp/file_context.go
@@ -21,6 +21,7 @@
 }
 
 func (h *handler) fileContextHandler(ctx context.Context, req *mcp.CallToolRequest, params fileContextParams) (*mcp.CallToolResult, any, error) {
+	countGoFileContextMCP.Inc()
 	fh, snapshot, release, err := h.fileOf(ctx, params.File)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/file_diagnostics.go b/gopls/internal/mcp/file_diagnostics.go
index 7ea2187..e4c8e8a 100644
--- a/gopls/internal/mcp/file_diagnostics.go
+++ b/gopls/internal/mcp/file_diagnostics.go
@@ -29,6 +29,7 @@
 }
 
 func (h *handler) fileDiagnosticsHandler(ctx context.Context, req *mcp.CallToolRequest, params diagnosticsParams) (*mcp.CallToolResult, any, error) {
+	countGoFileDiagnosticsMCP.Inc()
 	fh, snapshot, release, err := h.fileOf(ctx, params.File)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/file_metadata.go b/gopls/internal/mcp/file_metadata.go
index 3ecd955..8b7d670 100644
--- a/gopls/internal/mcp/file_metadata.go
+++ b/gopls/internal/mcp/file_metadata.go
@@ -17,6 +17,7 @@
 }
 
 func (h *handler) fileMetadataHandler(ctx context.Context, req *mcp.CallToolRequest, params fileMetadataParams) (*mcp.CallToolResult, any, error) {
+	countGoFileMetadataMCP.Inc()
 	fh, snapshot, release, err := h.fileOf(ctx, params.File)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/outline.go b/gopls/internal/mcp/outline.go
index 7e4ad29..d67f39e 100644
--- a/gopls/internal/mcp/outline.go
+++ b/gopls/internal/mcp/outline.go
@@ -18,6 +18,7 @@
 }
 
 func (h *handler) outlineHandler(ctx context.Context, req *mcp.CallToolRequest, params outlineParams) (*mcp.CallToolResult, any, error) {
+	countGoPackageAPIMCP.Inc()
 	snapshot, release, err := h.snapshot()
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/references.go b/gopls/internal/mcp/references.go
index 442ac25..a95c1f7 100644
--- a/gopls/internal/mcp/references.go
+++ b/gopls/internal/mcp/references.go
@@ -21,6 +21,7 @@
 }
 
 func (h *handler) referencesHandler(ctx context.Context, req *mcp.CallToolRequest, params findReferencesParams) (*mcp.CallToolResult, any, error) {
+	countGoReferencesMCP.Inc()
 	fh, snapshot, release, err := h.session.FileOf(ctx, params.Location.URI)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/search.go b/gopls/internal/mcp/search.go
index 9cda173..711f8d9 100644
--- a/gopls/internal/mcp/search.go
+++ b/gopls/internal/mcp/search.go
@@ -18,6 +18,7 @@
 }
 
 func (h *handler) searchHandler(ctx context.Context, req *mcp.CallToolRequest, params searchParams) (*mcp.CallToolResult, any, error) {
+	countGoSearchMCP.Inc()
 	query := params.Query
 	if len(query) == 0 {
 		return nil, nil, fmt.Errorf("empty query")
diff --git a/gopls/internal/mcp/symbol_references.go b/gopls/internal/mcp/symbol_references.go
index e4aa132..7eed0e4 100644
--- a/gopls/internal/mcp/symbol_references.go
+++ b/gopls/internal/mcp/symbol_references.go
@@ -29,6 +29,7 @@
 // It finds all references to the requested symbol and describes their
 // locations.
 func (h *handler) symbolReferencesHandler(ctx context.Context, req *mcp.CallToolRequest, params symbolReferencesParams) (*mcp.CallToolResult, any, error) {
+	countGoSymbolReferencesMCP.Inc()
 	fh, snapshot, release, err := h.fileOf(ctx, params.File)
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/vulncheck.go b/gopls/internal/mcp/vulncheck.go
index 72350f2..af35fb0 100644
--- a/gopls/internal/mcp/vulncheck.go
+++ b/gopls/internal/mcp/vulncheck.go
@@ -33,6 +33,7 @@
 }
 
 func (h *handler) vulncheckHandler(ctx context.Context, req *mcp.CallToolRequest, params *vulncheckParams) (*mcp.CallToolResult, *VulncheckResultOutput, error) {
+	countGoVulncheckMCP.Inc()
 	snapshot, release, err := h.snapshot()
 	if err != nil {
 		return nil, nil, err
diff --git a/gopls/internal/mcp/workspace.go b/gopls/internal/mcp/workspace.go
index 38167f3..59f7ab3 100644
--- a/gopls/internal/mcp/workspace.go
+++ b/gopls/internal/mcp/workspace.go
@@ -20,6 +20,7 @@
 )
 
 func (h *handler) workspaceHandler(ctx context.Context, req *mcp.CallToolRequest, _ any) (*mcp.CallToolResult, any, error) {
+	countGoWorkspaceMCP.Inc()
 	var summary bytes.Buffer
 	views := h.session.Views()
 	for _, v := range views {
diff --git a/gopls/internal/mcp/workspace_diagnostics.go b/gopls/internal/mcp/workspace_diagnostics.go
index 5b6efe9..49a4685 100644
--- a/gopls/internal/mcp/workspace_diagnostics.go
+++ b/gopls/internal/mcp/workspace_diagnostics.go
@@ -23,6 +23,7 @@
 }
 
 func (h *handler) workspaceDiagnosticsHandler(ctx context.Context, req *mcp.CallToolRequest, params workspaceDiagnosticsParams) (*mcp.CallToolResult, any, error) {
+	countGoDiagnosticsMCP.Inc()
 	var (
 		fh       file.Handle
 		snapshot *cache.Snapshot
