Quick takeaways

  • MCP is useful when assistants need governed access to tools and context.
  • Start read-only, then move to drafts, then limited writes.
  • Treat permissions and logging as first-class design decisions.

MCP explained for developers

Fireship explains the Model Context Protocol, why it matters, and how to start using MCP servers.

MCP architecture

MCP helps an assistant discover structured tools and context from systems it should interact with. The point is not to make the assistant magical; the point is to make access explicit, governed, and easier to audit.

In a typical MCP setup, the host is the AI application, the server exposes tools or resources, and the client connects them. The assistant can query available tools, receive structured responses, and decide what to do next. All of this happens through a defined protocol rather than ad-hoc integrations.

What to connect

  • Read-only docs or knowledge stores.
  • Task systems or project trackers.
  • Developer tools, repos, or local files.
  • Business systems that need an approval step before writes.

Permission model

ReadAssistant can inspect approved context.
DraftAssistant proposes changes but does not apply them.
ApproveHuman reviews before the action executes.
WriteLimited writes only after the workflow proves reliable.

Security considerations

Connecting AI to real systems creates real risk. Treat MCP integrations like any other API or automation layer.

  • Least privilege: Give the assistant only the permissions it needs.
  • Audit logging: Record what tools were called, with what inputs, and by which user.
  • Scope boundaries: Limit which tools are available in which conversations or contexts.
  • Human gates: Require approval before destructive or customer-facing actions.
  • Credential hygiene: Rotate keys, use scoped tokens, and avoid sharing credentials across environments.

Integration map

Use this map when planning an MCP integration:

  1. Define the workflow: What is the input, decision, and output?
  2. Choose the tool surface: Which system holds the data or action?
  3. Decide the permission level: Read, draft, approve, or write?
  4. Build the MCP server: Expose the tool with clear schemas and descriptions.
  5. Test in isolation: Verify tool calls and responses before connecting the assistant.
  6. Add logging and review: Make sure every action is traceable and reversible.

MCP is not a replacement for good API design or security practices. It is a protocol that makes tool access explicit. The hard work of permissions, testing, and review still belongs to the team.

Related: Read What is MCP? for the shorter overview, then return here for implementation thinking.

Setup example

Here is a sample Claude Desktop configuration that connects a Postgres MCP server. Use read-only credentials and restrict the schema the server can access.

Package choice matters. The old reference server @modelcontextprotocol/server-postgres was archived in 2025 and has an unpatched SQL-injection issue that bypasses its read-only mode — do not install it. A maintained option is Postgres MCP Pro, which enforces restricted (read-only) mode by parsing statements, not just wrapping them in a transaction:

{
  "mcpServers": {
    "postgres": {
      "command": "uvx",
      "args": ["postgres-mcp", "--access-mode=restricted"],
      "env": {
        "DATABASE_URI": "postgresql://readonly_user:pass@localhost:5432/dbname"
      }
    }
  }
}

Install it with pipx install postgres-mcp (Python 3.12+) or run the crystaldba/postgres-mcp Docker image. Two extra precautions: always pass --access-mode=restricted (the default is unrestricted read/write), and connect with a database role that has SELECT-only grants — server-level read-only is a seatbelt, not a wall.

For step-by-step setup guides, see Postgres MCP server, GitHub MCP server, and Slack MCP server. To build your own, see Build an MCP server.

Troubleshooting

  • Server not found: Verify the command path and that the package is installed globally or via npx.
  • Permission errors: Use scoped credentials. Never give an MCP server broader access than the workflow needs.
  • Slow responses: Reduce the data returned per tool call or cache read-only results.
  • Unexpected tool calls: Check the tool description and schema. Ambiguous descriptions lead to wrong invocations.

Without AI vs. with AI

TaskWithout AIWith AI
Tool integrationEvery AI tool is connected with a custom, undocumented script.MCP exposes tools through a standard protocol so assistants can discover and call them.
PermissionsAssistants inherit broad access because integration was faster than scoping.Each MCP connection is scoped to read, draft, approve, or write with explicit credentials.
Context passingUsers copy-paste files, logs, and data into chat windows.The assistant reads approved resources directly through MCP servers.
AuditabilityTool calls happen in silos with no shared log.MCP servers log inputs, outputs, and caller identity for review.
OnboardingNew integrations require learning a new API for every system.A common protocol means new MCP servers work with any compatible host.

FAQ

Is MCP a replacement for RAG?

No. MCP handles structured tool/context access. RAG handles retrieval of source-backed knowledge.

Should all MCP connections be writable?

No. Read-only access is the best starting point.

What systems are good first MCP candidates?

Internal docs, project trackers, and read-only databases are safer starting points than customer-facing systems.

How is MCP different from traditional APIs?

MCP gives the assistant a structured way to discover and call tools, but the underlying security and permission rules should still match your API standards.

Do I need a developer to set up MCP?

Usually yes. Building or configuring an MCP server requires understanding schemas, permissions, and tool descriptions.

When should I avoid MCP?

Avoid it when the workflow is unclear, the data is highly sensitive, or you cannot maintain audit logs and review gates.

Is MCP only for Claude Desktop?

No. MCP is a protocol. Any host that implements the client side can connect to MCP servers.

How do I secure an MCP server?

Use least-privilege credentials, scoped tokens, audit logs, and human approval gates for writes.

Can MCP servers write to my database?

They can if you grant write permissions. Start read-only and add writes only after testing and review.

What makes a good MCP tool description?

Clear names, precise input schemas, and examples of correct usage. Ambiguous descriptions lead to wrong tool calls.