MCP Authentication
The MCP endpoint uses the standard Easy8 API authentication model.
POST /mcpaccepts API authentication- API-key authentication requires the Easy8 REST API to be enabled
- use an Easy8 API key in
X-Redmine-API-Key,X-Easy8-API-Key, orAuthorization: Bearer <api-key> ?key=<api-key>is also accepted, but headers are preferred- use an Easy8 OAuth access token in
Authorization: Bearer <access-token> - HTTP Basic credentials are not accepted by
/mcp - permissions are still enforced by Easy8 visibility and authorization rules
Example:
POST /mcp HTTP/1.1
Host: your-easy8.example.com
Content-Type: application/json
X-Easy8-API-Key: <your-api-key>
Equivalent alternatives:
If the API credential is missing or invalid, the endpoint returns 401 Unauthorized.
OAuth discovery metadata
Easy8 also publishes OAuth discovery metadata for agents that need to discover how MCP authentication should work:
/.well-known/oauth-authorization-server- OAuth authorization server metadata/.well-known/oauth-protected-resource- OAuth protected resource metadata for the MCP resource/.well-known/oauth-protected-resource/mcp- path-specific protected resource metadata for/mcp/.well-known/jwks.json- JSON Web Key Set endpoint; currently empty because Easy8 OAuth access tokens are opaque tokens/auth.md- agent-facing registration instructions/oauth2/register- OAuth Dynamic Client Registration endpoint
When POST /mcp receives an unauthenticated request, it includes a WWW-Authenticate challenge with the protected resource metadata URL:
WWW-Authenticate: Bearer resource_metadata="https://your-easy8.example.com/.well-known/oauth-protected-resource", scope="mcp"
The metadata advertises OAuth Dynamic Client Registration, manual OAuth client registration, and S256 PKCE for authorization-code clients.
User identity
MCP tools use the effective Easy8 API user as me.
- with a personal API key,
meis the owner of that key - with an OAuth access token,
meis the user who authorized the OAuth client - with an admin API key and no
X-Redmine-Switch-Userheader,meis the admin - with an admin API key and
X-Redmine-Switch-User,meis the switched active user Setting.sys_api_keyis not used for MCP authentication
Use easy8_users_me when the client needs to inspect the effective user explicitly.
Example admin switch-user request:
POST /mcp HTTP/1.1
Host: your-easy8.example.com
Content-Type: application/json
X-Easy8-API-Key: <admin-api-key>
X-Redmine-Switch-User: <user-login>
Permission model
The API key only identifies the effective user. It does not bypass Easy8 permissions.
- visibility checks use standard Easy8 visibility rules
- tool actions respect regular Easy8 permissions such as issue creation and editing
- project-specific workflow restrictions and required custom fields still apply
- read-only API keys can call read tools, but write tools return a tool-level
Permission deniederror