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

推荐订阅源

Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
A
About on SuperTechFans
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
U
Unit 42
WordPress大学
WordPress大学
Y
Y Combinator Blog
罗磊的独立博客
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
博客园 - 叶小钗
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
V
V2EX
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
SegmentFault 最新的问题
酷 壳 – CoolShell
酷 壳 – CoolShell

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
MCP tool descriptions are part of your security model
Mads Hansen · 2026-05-05 · via DEV Community

Mads Hansen

Most API documentation is written for humans.

MCP tool descriptions are different.

They are read by the model that decides what to call next.

That means tool names, descriptions, schemas, and error messages are not just documentation garnish. They are part of the safety boundary.

A bad tool asks the model to guess

A risky MCP tool often looks like this:

  • name: query
  • input: free-form string
  • description: “Run SQL against the database”

Technically simple.

Operationally vague.

The model has to infer when to use it, what is safe, which tables matter, and what failure means.

That is not a production boundary. That is a shrug with JSON around it.

A better tool is boring on purpose

For database workflows, the tool should make the safe path obvious:

  • query_customer_usage_readonly
  • approved schemas or views
  • structured filters instead of arbitrary commands
  • explicit “do not use for exports or personal data lookup” guidance
  • clear result limits
  • audit logging
  • useful access-denied errors

The database permissions still need to enforce the boundary.

But the model-facing contract matters too.

If the description does not say when not to use the tool, the model will often try anyway.

Errors matter too

“Permission denied” is technically correct.

It is not very helpful for an agent.

A better error explains the safe next step:

This request tried to access a table outside the approved reporting scope. Ask an administrator to add the table to the approved view set, or reformulate the question using customer_usage_summary.

That keeps the agent inside the workflow instead of nudging it toward improvisation.

Conexor focuses on this MCP infrastructure layer: controlled tools for databases and APIs across Claude, ChatGPT, Cursor, n8n, Continue, and other MCP clients.

Longer post: MCP tool descriptions are a security boundary, not documentation garnish

Treat MCP descriptions like the model-facing part of your access policy.

Not comments in code.