Skip to content

docs: clarify server description and instructions - #2697

Open
looooown2006 wants to merge 1 commit into
modelcontextprotocol:mainfrom
looooown2006:docs/server-description-instructions-2146
Open

looooown2006 wants to merge 1 commit into
modelcontextprotocol:mainfrom
looooown2006:docs/server-description-instructions-2146

Conversation

@looooown2006

Copy link
Copy Markdown

Clarifies how servers and clients should treat serverInfo.description and initialize-result instructions.

The new text distinguishes server discovery/selection metadata from model-facing usage guidance, and notes that instructions should provide server-level guidance without duplicating individual tool, resource, or prompt descriptions.

Addresses #2146.

Note: I saw #2602, which adds a broader server instructions guide. This PR is intentionally narrower: it updates the lifecycle/specification text in both the current dated spec and draft spec, so it can complement that guide rather than replace it.

Verification:

  • npx prettier --check docs/specification/2025-11-25/basic/lifecycle.mdx docs/specification/draft/basic/lifecycle.mdx
  • npm run check:docs:js-comments
  • git diff --check

Note: npm run check:docs:links was attempted but timed out after 5 minutes during the full-site link check.

@looooown2006
looooown2006 marked this pull request as ready for review May 8, 2026 06:22
@looooown2006
looooown2006 requested a review from a team as a code owner May 8, 2026 06:22
@looooown2006
looooown2006 force-pushed the docs/server-description-instructions-2146 branch from c2a8050 to 9572609 Compare May 11, 2026 17:43
Comment on lines 60 to +77
| Field | Type | Required | Description |
| ------------------- | -------------------- | -------- | -------------------------------------------------------------------------------------------- |
| `supportedVersions` | `string[]` | yes | Protocol versions the server supports. The client should choose one for subsequent requests. |
| `capabilities` | `ServerCapabilities` | yes | Capabilities the server supports (tools, resources, prompts, etc.). |
| `serverInfo` | `Implementation` | yes | Name and version of the server software. |
| `instructions` | `string` | no | Natural-language guidance for LLMs on how to use this server effectively. |

The `serverInfo.description` field describes the server itself: what kind of
capabilities it provides and when a client or host might choose to connect to
it. The `instructions` field describes how to use the server effectively after
it is discovered, such as workflow guidance, constraints, or important
relationships between tools, resources, and prompts.

Servers that provide `instructions` should keep them focused on server-level
usage guidance and avoid duplicating individual tool, resource, or prompt
descriptions. Clients and hosts may use `serverInfo.description` for discovery,
server selection, or progressive disclosure, and may use `instructions` as
model-facing context once the server is loaded.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is quite accurate. instructions is really for the LLMs. It's a bit more clear in the table above. I do think you have a point of better describing the difference between instructions and description.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants