chore(mcp): deprecate local MCP server with repo banner + runtime notice (AICHAT-1153)#230
Merged
Conversation
…ice (AICHAT-1153)
Add a soft deprecation signal across three surfaces so users on the local
install path discover the hosted MCP at mcp.atlan.com:
1. **Top-level README banner** — GFM `[!WARNING]` callout above the title.
Also surfaces on the repo homepage.
2. **modelcontextprotocol/README banner** — same callout. This README is the
PyPI long_description for `atlan-mcp-server`, so it shows on the package
page too.
3. **Runtime notice (two channels)**:
- `FastMCP("Atlan MCP Server", instructions=...)` — the deprecation string
is returned in `serverInfo` during MCP `initialize`. MCP clients (Claude
Desktop, Cursor, Codex, …) render `instructions` in their UI, so the
user sees it once per session.
- Stderr banner printed in `main()` at startup. stdio transport uses stdout
for JSON-RPC so the banner MUST go to stderr; most clients capture stderr
to their log file.
No sunset date in the message (per ticket scope — soft deprecation only).
No PyPI classifier change, no repo archive — easy to walk back if needed.
Linear: https://linear.app/atlan-epd/issue/AICHAT-1153/
…s + fix URLs Address review feedback: 1. **URL corrections** in all 3 surfaces (top README, MCP README, server.py stderr banner + instructions): - https://mcp.atlan.com → https://mcp.atlan.com/mcp (the actual MCP endpoint) - docs `…/atlan-mcp-overview` → `…/remote-mcp-overview` (current docs page) 2. **Soften the FastMCP `instructions=` field.** Some MCP clients inject the server's `instructions` string into the LLM's system prompt context. With strong words like "DEPRECATED" / "maintenance-only" / "no new features" in there, the LLM might: - Pre-warn the user before every tool call - Hesitate or refuse to use tools - Get confused by mixed signals The README banner and stderr startup banner already carry the strong deprecation signal for humans. The `instructions` field is now an information-only note about the hosted alternative — no alarm words. The README banners and stderr banner retain the full "deprecated / maintenance-only" language so users reading docs, PyPI, or server logs still see it clearly.
Aryamanz29
commented
Jun 1, 2026
abhinavmathur-atlan
approved these changes
Jun 1, 2026
Hk669
approved these changes
Jun 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Soft-deprecate the local Atlan MCP server in favor of the hosted MCP at mcp.atlan.com. Three surfaces, no sunset date, easy to walk back.
Changes (3 files, +54 / -1)
README.md— GFM[!WARNING]callout above the title. Surfaces on the repo homepage.modelcontextprotocol/README.md— same callout. This README is the PyPI long_description foratlan-mcp-server, so the banner shows on the package page too.modelcontextprotocol/server.py— two runtime notices:FastMCP("Atlan MCP Server", instructions=_DEPRECATION_NOTICE)— returned inserverInfoduring MCPinitialize. Most MCP clients (Claude Desktop, Cursor, Codex, …) renderinstructionsin their UI so the user sees it once per session.main()at startup. stdio transport uses stdout for JSON-RPC, so the banner MUST go to stderr; most clients capture stderr to their log file.Scope (per ticket decisions)
instructions)Development Status :: 7 - Inactiveclassifier (kept soft)Verification
Follow-ups (separate, not in this PR)
⚠️ Deprecated —prefix (repo settings, not in code)Linear: AICHAT-1153
🤖 Generated with Claude Code