Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

everything server: instructions unconditionally reference sampling/elicitation tools that only exist when the client declares those capabilities

Đang mở Phù hợp với người mới
#4,792 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
75/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
backend

Hướng nghiên cứu

Bắt đầu trong server/index.ts, tập trung vào registerConditionalTools() bên trong oninitialized và chuỗi instructions tĩnh. Chạy bản tái hiện server npx được cung cấp với capabilities trống và với sampling/elicitation capabilities, sau đó xác minh rằng instructions mô tả nhất quán liệu trigger-sampling-request và trigger-elicitation-request có khả dụng hay không.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Factual issue

The @modelcontextprotocol/server-everything v2026.8.31 instructions string unconditionally tells integrating agents to use trigger-sampling-request and trigger-elicitation-request:

## Constraints & Limitations
- Sampling requests (`trigger-sampling-request`) require client sampling capability
- Elicitation requests (`trigger-elicitation-request`) require client elicitation capability

These tools are registered through registerConditionalTools() inside oninitialized, gated on the client's declared capabilities (server/index.ts). For a client that declares no sampling/elicitation capability — e.g. the majority of clients today, and verified by a capability sweep across 12 popular MCP servers — the tools never appear in tools/list, and the instructions reference tools that do not exist for that session:

  • initialize with capabilities: {} → tools/list returns 13 tools, none of them trigger-sampling-request or trigger-elicitation-request
  • initialize with capabilities: {sampling:{}, elicitation:{}} → 16 tools, both present

Suggested fixes (pick any)

  1. Make the instructions conditional-aware — e.g. "when your client declares the sampling capability, trigger-sampling-request is available" — so the guidance matches what an agent can actually call.
  2. Compose the instructions per session — the instructions string is static, but it could be built from the registered-tools state after oninitialized, or the conditionality could be stated in one sentence.
  3. At minimum, add the phrase "if your client declares the corresponding capability" to the two bullets.

Why this matters beyond this server

The instructions field exists to orient agents; an agent that follows these instructions on a non-capability client will attempt to call a tool that is not in its catalog — a coherence class that deterministic batteries (this was found with mcp-eval's catalog-vs-instructions checks) can expose mechanically.

Repro

npx -y @modelcontextprotocol/server-everything
# initialize with capabilities: {} ; then tools/list -> 13 tools, no trigger-sampling-request
# initialize with capabilities: {sampling:{},elicitation:{}} ; wait ~1.5s after notifications/initialized ; tools/list -> 16 tools, both present

Environment: server-everything v2026.8.31 (npm), server self-reports 2.0.0; verified against the published dist (registerConditionalTools in dist/server/index.js).

Ngôn ngữ chính
TypeScript
Star
90.5k
Fork
11.7k
Merge trung bình
5 ngày 19 giờ
Pull request đã merge (30 ngày)
6

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của modelcontextprotocol/servers

Tất cả issue của modelcontextprotocol/servers

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.