Initial commit
This commit is contained in:
116
skills/mcp-management/references/mcp-protocol.md
Normal file
116
skills/mcp-management/references/mcp-protocol.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Model Context Protocol (MCP) Reference
|
||||
|
||||
## Protocol Overview
|
||||
|
||||
MCP is JSON-RPC 2.0 based protocol for AI-tool integration.
|
||||
|
||||
**Version**: 2025-03-26
|
||||
**Foundation**: JSON-RPC 2.0
|
||||
**Architecture**: Client-Host-Server
|
||||
|
||||
## Connection Lifecycle
|
||||
|
||||
1. **Initialize**: Client sends `initialize` request with capabilities
|
||||
2. **Response**: Server responds with its capabilities
|
||||
3. **Handshake**: Client sends `notifications/initialized`
|
||||
4. **Active**: Bidirectional messaging
|
||||
5. **Shutdown**: Close connections, cleanup
|
||||
|
||||
## Core Capabilities
|
||||
|
||||
### Tools (Executable Functions)
|
||||
|
||||
Tools are functions that servers expose for execution.
|
||||
|
||||
**List Tools**:
|
||||
```json
|
||||
{"method": "tools/list"}
|
||||
```
|
||||
|
||||
**Call Tool**:
|
||||
```json
|
||||
{
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": "tool_name",
|
||||
"arguments": {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Prompts (Interaction Templates)
|
||||
|
||||
Prompts are reusable templates for LLM interactions.
|
||||
|
||||
**List Prompts**:
|
||||
```json
|
||||
{"method": "prompts/list"}
|
||||
```
|
||||
|
||||
**Get Prompt**:
|
||||
```json
|
||||
{
|
||||
"method": "prompts/get",
|
||||
"params": {
|
||||
"name": "prompt_name",
|
||||
"arguments": {}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Resources (Data Sources)
|
||||
|
||||
Resources expose read-only data to clients.
|
||||
|
||||
**List Resources**:
|
||||
```json
|
||||
{"method": "resources/list"}
|
||||
```
|
||||
|
||||
**Read Resource**:
|
||||
```json
|
||||
{
|
||||
"method": "resources/read",
|
||||
"params": {"uri": "resource://path"}
|
||||
}
|
||||
```
|
||||
|
||||
## Transport Types
|
||||
|
||||
### stdio (Local)
|
||||
|
||||
Server runs as subprocess. Messages via stdin/stdout.
|
||||
|
||||
```typescript
|
||||
const transport = new StdioClientTransport({
|
||||
command: 'node',
|
||||
args: ['server.js']
|
||||
});
|
||||
```
|
||||
|
||||
### HTTP+SSE (Remote)
|
||||
|
||||
POST for requests, GET for server events.
|
||||
|
||||
```typescript
|
||||
const transport = new StreamableHTTPClientTransport({
|
||||
url: 'http://localhost:3000/mcp'
|
||||
});
|
||||
```
|
||||
|
||||
## Error Codes
|
||||
|
||||
- **-32700**: Parse error
|
||||
- **-32600**: Invalid request
|
||||
- **-32601**: Method not found
|
||||
- **-32602**: Invalid params
|
||||
- **-32603**: Internal error
|
||||
- **-32002**: Resource not found (MCP-specific)
|
||||
|
||||
## Best Practices
|
||||
|
||||
1. **Progressive Disclosure**: Load tool definitions on-demand
|
||||
2. **Context Efficiency**: Filter data before returning
|
||||
3. **Security**: Validate inputs, sanitize outputs
|
||||
4. **Resource Management**: Cleanup connections properly
|
||||
5. **Error Handling**: Handle all error cases gracefully
|
||||
Reference in New Issue
Block a user