惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
F
Fortinet All Blogs
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
MyScale Blog
MyScale Blog
B
Blog
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
GbyAI
GbyAI
Google DeepMind News
Google DeepMind News
IT之家
IT之家
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
博客园_首页
L
LangChain Blog
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Tools vs Resources in MCP (A Subtle Difference That Matters)
Saras Growth · 2026-05-06 · via DEV Community

Saras Growth Space

By now, we’ve covered:

  • tools (actions the model can take)
  • MCP server (execution layer)
  • MCP client (orchestration layer)

Now let’s look at something that often causes confusion:

What’s the difference between tools and resources?


🧠 Simple Definitions

🔧 Tool

Something the model uses to perform an action


📚 Resource

Something the model uses to read data


⚠️ The Core Difference

Type Purpose
Tool Do something
Resource Know something

🧩 Examples


Tools (actions)

  • create_order
  • cancel_order
  • send_email

👉 These:

  • change state
  • trigger operations

Resources (data)

  • user_profile
  • product_catalog
  • documents

👉 These:

  • are read-only
  • provide context

🧠 Why This Separation Matters

If you mix these concepts, your system becomes:

  • inefficient
  • harder to reason about
  • more error-prone

⚠️ Common Mistake

Using tools for everything.


❌ Example

get_user_profile(user_id)

Enter fullscreen mode Exit fullscreen mode

This is a read operation, but implemented as a tool.


✅ Better Approach

  • Resource → user_profile
  • Tool → update_user_profile

👉 Now:

  • reading is simple
  • writing is explicit

🔥 Rule of Thumb

If it changes something → Tool
If it only provides data → Resource


🧠 But It’s Not Always That Simple

Some operations look like reads but are actually dynamic.


Example

search_products(query)

Enter fullscreen mode Exit fullscreen mode


Why is this a tool?

Because:

  • results depend on input
  • it involves processing
  • it’s not static data

Compare with Resource

product_catalog

Enter fullscreen mode Exit fullscreen mode

👉 Static dataset → resource


🧠 Better Mental Model

Think of it like this:

  • Resources → database tables
  • Tools → API endpoints

⚠️ What Happens If You Get This Wrong?


Everything as tools

  • unnecessary execution
  • higher latency
  • harder decision-making

Everything as resources

  • no clear actions
  • limited functionality

👉 Balance is key.


🧠 Real Example (E-commerce)


Resources

  • user_profile
  • product_catalog

Tools

  • search_products
  • create_order
  • cancel_order

👉 Clean separation → predictable behavior


🧭 Why This Matters in Practice

This distinction helps you:

  • design better systems
  • reduce unnecessary calls
  • improve model decision-making

🧭 What’s Next

Now that we understand tools and resources, let’s go deeper:

How does MCP actually communicate under the hood?

We’ll look at request/response flow and how everything connects in real systems.