# MCP (Model Context Protocol) Recipe

MCP tool endpoints for AI agent integration via the JSON-RPC 2.0 protocol.

## Template Selection

Resource filter: `mcp`  
Discover templates via MCP or CDN manifest where `resource == "mcp"` and `language` matches user request.

## Protocol

MCP uses the **JSON-RPC 2.0** protocol. Two template types with different transport support:

- **Extension-based** (`mcp-server-remote-*`) supports both Streamable HTTP and SSE transports
- **Self-hosted** (`mcp-sdk-hosting-*`) — supports Streamable HTTP only

See [MCP Specification](https://modelcontextprotocol.io/) for protocol details.

## Troubleshooting

### Transport Mismatch

**Cause:** Client and server using different transports — SSE client gets `404`/`405`, HTTP client gets unexpected `text/event-stream`.  
**Solution:** Extension-based templates support both Streamable HTTP and SSE. Self-hosted templates support Streamable HTTP only. In VS Code `mcp.json`, set `"type": "sse"` or `"type": "http"` to match the server.

### Missing App Settings After Deploy

**Cause:** Required app settings not configured on the function app.  
**Solution:** Ensure protected resource metadata settings are present. For C# self-hosted servers, verify `host.json` `arguments` points to the compiled DLL path.

See [MCP extension trigger and bindings](https://learn.microsoft.com/azure/azure-functions/functions-bindings-mcp) for extension-based servers, [Self-hosted MCP servers](https://learn.microsoft.com/en-us/azure/azure-functions/self-hosted-mcp-servers) for self-hosted architecture, and [MCP tutorial troubleshooting](https://learn.microsoft.com/en-us/azure/azure-functions/functions-mcp-tutorial?tabs=self-hosted#troubleshooting) for self-hosted deployment issues.

## Eval

| Path | Description |
|------|-------------|
| [eval/summary.md](eval/summary.md) | Evaluation summary |
| [eval/python.md](eval/python.md) | Python evaluation results |
