# Feedback4.dev MCP server

> A project-scoped, stateless Streamable HTTP MCP endpoint at https://feedback4.dev/api/mcp for reading feedback, recording agent notes, asking the client and requesting approval.

## Connection

Create the credential in App → Agents or through POST /api/v1/projects/{project_id}/agent-credentials. It is bound to exactly one project, expires after 1–365 days, is shown once and can be revoked immediately.

Send Authorization: Bearer $FEEDBACK4_MCP_TOKEN to https://feedback4.dev/api/mcp. The server declares MCP protocol version 2025-06-18, returns JSON responses, keeps no MCP session ID and does not provide a server-initiated SSE stream. A GET therefore returns 405 as permitted for a server without that stream.

The current service uses manually issued project credentials, not an OAuth authorization server. It intentionally does not publish OAuth protected-resource metadata. Clients that only support OAuth discovery cannot connect until that flow is implemented.

```toml
[mcp_servers.feedback]
url = "https://feedback4.dev/api/mcp"
bearer_token_env_var = "FEEDBACK4_MCP_TOKEN"
```

## Claude Code configuration

Claude Code supports remote Streamable HTTP servers with custom request headers and environment-variable expansion. Keep the project credential in FEEDBACK4_MCP_TOKEN and commit only the interpolation shown below.

Claude.ai and Claude Desktop custom remote connectors currently support authless or OAuth-based servers. Feedback4.dev does not yet implement OAuth, so do not paste an mcp_ credential into a connector URL or prompt; use Claude Code or another client that supports a Bearer header.

```json
{
  "mcpServers": {
    "feedback4": {
      "type": "http",
      "url": "https://feedback4.dev/api/mcp",
      "headers": {
        "Authorization": "Bearer ${FEEDBACK4_MCP_TOKEN}"
      }
    }
  }
}
```

## Published tools

- feedback_projects — return the single project assigned to the credential and its agent mode.
- feedback_list — list up to 50 tickets from that project, optionally filtered by status.
- feedback_get — return one ticket, proposed implementation prompt, selected-element highlight URL and comments.
- feedback_add_internal_note — append an internal progress or decision note.
- feedback_ask_client — record and queue a private question to the authorized reviewer.
- feedback_request_approval — record a change summary and queue client approval; available only in auto mode.

## Agent modes are server-enforced boundaries

The MCP server does not edit files, commit code, deploy, create projects, change ticket workflow status or autonomously invoke an AI model. The connected client owns those capabilities and must apply its own authorization. Use the REST API when workflow status must be updated programmatically.

- off: feedback lists are empty and ticket details are not available to the agent.
- propose: the agent can read, analyze, record notes and ask the reviewer; feedback_request_approval is rejected.
- auto: the same tools are available and the agent may record completed work and request client approval.

## Raw initialization example

```bash
curl -fsS -X POST https://feedback4.dev/api/mcp \
  -H "Authorization: Bearer $FEEDBACK4_MCP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example-agent","version":"1.0.0"}}}'
```
