MCP Tools¶
Mit MCP-Tools arbeiten und eigene erstellen.
Built-in Tools vs MCP Tools¶
| Built-in | MCP |
|---|---|
| Read, Write | Custom Tools |
| Bash, Glob, Grep | Via Server definiert |
| Immer verfügbar | Muss verbunden sein |
MCP Tools nutzen¶
Automatisch¶
Claude erkennt verfügbare MCP-Tools und nutzt sie automatisch:
→ Claude nutzt mcp__github__create_issue automatisch
Explizit¶
Tool Discovery¶
Verfügbare Tools anzeigen¶
Oder:
Zeigt alle Server und deren Tools.
Tool-Schema anzeigen¶
Tool-Namen¶
MCP Tools folgen dem Schema:
Beispiele:
- mcp__github__list_issues
- mcp__notion__search_pages
- mcp__filesystem__read_file
Tool-Einschränkungen¶
In settings.json¶
{
"permissions": {
"allowedTools": [
"Read",
"Write",
"mcp__github__*",
"mcp__notion__search_*"
],
"deniedTools": [
"mcp__github__delete_*"
]
}
}
Wildcards (*) werden unterstützt.
In Skills¶
---
name: github-review
allowed-tools:
- Read
- mcp__github__list_issues
- mcp__github__get_pull_request
---
Eigene MCP Server bauen¶
Minimal Server (Node.js)¶
// my-mcp-server.js
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-tools",
version: "1.0.0"
}, {
capabilities: { tools: {} }
});
// Tool definieren
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "hello",
description: "Says hello",
inputSchema: {
type: "object",
properties: {
name: { type: "string", description: "Name to greet" }
},
required: ["name"]
}
}]
}));
// Tool implementieren
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "hello") {
const name = request.params.arguments.name;
return {
content: [{ type: "text", text: `Hello, ${name}!` }]
};
}
});
// Server starten
const transport = new StdioServerTransport();
await server.connect(transport);
Registrieren¶
MCP Resources¶
Neben Tools können MCP Server auch Resources bereitstellen:
Resources auflisten¶
Resource laden¶
Syntax: @server:resource-uri
Praktische Beispiele¶
GitHub Workflow¶
1. List open issues in anthropics/claude-code
2. Get details for issue #123
3. Create a branch for the fix
4. After fixing, create a PR
Claude nutzt automatisch die passenden MCP-Tools.
Notion Integration¶
Database Queries¶
Error Handling¶
Tool schlägt fehl¶
Claude zeigt Fehlermeldung und schlägt Alternativen vor.
Server nicht erreichbar¶
Fix: Server neu starten oder Credentials prüfen.
Permission Denied¶
Wenn Tool in deniedTools:
Best Practices¶
- Least Privilege - Nur nötige Tools erlauben
- Secrets in Env - Nie hardcoded Credentials
- Timeouts setzen -
MCP_TIMEOUTfür langsame Server - Output begrenzen -
MAX_MCP_OUTPUT_TOKENSbei großen Responses