Skip to content

chore(mcp): deprecate local MCP server with repo banner + runtime notice (AICHAT-1153)#230

Merged
Aryamanz29 merged 2 commits into
mainfrom
aryaman/aichat-1153
Jun 1, 2026
Merged

chore(mcp): deprecate local MCP server with repo banner + runtime notice (AICHAT-1153)#230
Aryamanz29 merged 2 commits into
mainfrom
aryaman/aichat-1153

Conversation

@Aryamanz29
Copy link
Copy Markdown
Member

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)

  1. README.md — GFM [!WARNING] callout above the title. Surfaces on the repo homepage.
  2. modelcontextprotocol/README.md — same callout. This README is the PyPI long_description for atlan-mcp-server, so the banner shows on the package page too.
  3. modelcontextprotocol/server.py — two runtime notices:
    • FastMCP("Atlan MCP Server", instructions=_DEPRECATION_NOTICE) — returned in serverInfo during MCP initialize. Most MCP clients (Claude Desktop, Cursor, Codex, …) render instructions in their UI so the user sees it once per session.
    • Stderr banner 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.

Scope (per ticket decisions)

  • ✅ Banner in repo
  • ✅ Runtime notice (both stderr + MCP instructions)
  • ❌ No PyPI Development Status :: 7 - Inactive classifier (kept soft)
  • ❌ No repo archive (kept soft)
  • ❌ No sunset date in the message (intentionally — message says "no new features, support not guaranteed" without committing to a removal date)

Verification

$ python modelcontextprotocol/server.py --help  # banner prints to stderr
$ python -c "from fastmcp import FastMCP; import inspect; print('instructions' in inspect.signature(FastMCP.__init__).parameters)"
True

Follow-ups (separate, not in this PR)

  • Update GitHub repo description with ⚠️ Deprecated — prefix (repo settings, not in code)
  • Migration docs on docs.atlan.com (out of scope here, owned by docs team)

Linear: AICHAT-1153

🤖 Generated with Claude Code

…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/
@Aryamanz29 Aryamanz29 requested review from Hk669 and firecast as code owners June 1, 2026 08:55
@Aryamanz29 Aryamanz29 self-assigned this Jun 1, 2026
…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.comhttps://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.
Comment thread modelcontextprotocol/server.py
@Aryamanz29 Aryamanz29 merged commit cda594f into main Jun 1, 2026
2 checks passed
@Aryamanz29 Aryamanz29 deleted the aryaman/aichat-1153 branch June 1, 2026 10:45
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.

3 participants