MCP servers

Do MCP servers change their tools?

Often. We installed the newest releases of 46 popular MCP servers and recorded every tool definition each one served. Of the 34 that started, 28 added, removed or rewrote a tool, in 61 of 128 updates. Your agent reads that text as instructions, and a version range lets it change without anyone looking.

Recorded on 24 October 2026 on a clean machine with placeholder settings; nothing was called, only tools/list. A changed description is not a vulnerability: we found no malicious change. Method and limits.

MCP servers and how often their tool definitions changed
ServerUpdates that changed a toolDescriptions rewrittenLast change
mcp-atlassian PyPI5 of 5570.23.0 → 0.23.1
@perplexity-ai/mcp-server npm4 of 561.2.1 → 1.3.0
chrome-devtools-mcp npm4 of 461.11.0 → 1.12.0
@playwright/mcp npm4 of 500.0.82 → 0.0.83
@wonderwhy-er/desktop-commander npm3 of 5170.2.52 → 0.3.0
@supabase/mcp-server-supabase npm3 of 570.13.0 → 0.14.0
@sentry/mcp-server npm3 of 550.39.0 → 0.40.0
exa-mcp-server npm3 of 543.2.1 → 3.4.0
@hubspot/mcp-server npm3 of 510.3.3 → 0.4.0
firecrawl-mcp npm2 of 553.33.4 → 3.34.0
arxiv-mcp-server PyPI2 of 530.7.2 → 0.7.3
awslabs.aws-documentation-mcp-server PyPI2 of 521.2.1 → 1.2.2
mcp-server-git PyPI2 of 212026.10.10 → 2026.10.19
tavily-mcp npm2 of 510.2.18 → 0.2.19
@brave/brave-search-mcp-server npm2 of 502.1.3 → 2.1.4
@executeautomation/playwright-mcp-server npm2 of 501.0.10 → 1.0.11
airtable-mcp-server npm2 of 501.13.0 → 1.14.0
mcp-server-fetch PyPI2 of 202026.10.10 → 2026.10.19
mongodb-mcp-server npm2 of 502.1.2 → 3.0.5
@modelcontextprotocol/server-everything npm1 of 131.0.0 → 2.0.0
duckduckgo-mcp-server PyPI1 of 110.6.1 → 0.7.0
@modelcontextprotocol/server-memory npm1 of 101.0.0 → 2.0.0
@modelcontextprotocol/server-sequential-thinking npm1 of 101.0.0 → 2.0.0
@upstash/context7-mcp npm1 of 504.3.0 → 4.4.0
figma-developer-mcp npm1 of 500.11.0 → 0.12.0
mcp-server-qdrant PyPI1 of 100.8.0 → 0.8.1
mcp-server-time PyPI1 of 202026.10.10 → 2026.10.19
task-master-ai npm1 of 500.42.0 → 0.43.0
@agentdeskai/browser-tools-mcp npm0 of 20none seen
@apify/actors-mcp-server npm0 of 40none seen
@heroku/mcp-server npm0 of 10none seen
@modelcontextprotocol/server-filesystem npm0 of 10none seen
@notionhq/notion-mcp-server npm0 of 50none seen
mcp-server-kubernetes npm0 of 50none seen

Did not start

These needed a real key or a running service, or had no current release, so there is nothing to compare: @modelcontextprotocol/server-brave-search, @browserbasehq/mcp-server-browserbase, @elastic/mcp-server-elasticsearch, @modelcontextprotocol/server-github, @modelcontextprotocol/server-gitlab, @modelcontextprotocol/server-google-maps, @21st-dev/magic, markitdown-mcp, @modelcontextprotocol/server-postgres, @modelcontextprotocol/server-puppeteer, @modelcontextprotocol/server-slack, mcp-server-sqlite.

Know when yours change

verfy lock check --update pins the tools your MCP config serves today in verfy.lock. Commit it, and the CI check fails the pull request when a tool changes, with the text before and after.