Eodly MCP server setup for Claude and Cursor
Eodly has an MCP server, so an agent can read your end-of-day reports and roster as tools rather than by scraping a dashboard. Ask Claude "who is slipping this week?" and it pulls the sourced answer from your workspace.
It is read-only. Nothing exposed here can change anything in Eodly.
Option 1: sign in with Eodly (no key needed)
In Claude, or any MCP client that supports sign-in, add a custom connector with this URL (ChatGPT support is coming soon):
https://eodly.io/mcp
The client opens an Eodly page. Sign in, check what the app is asking for, and choose Allow. Only a founder or lead of the workspace can connect it. The connection is read-only and works on every Eodly plan.
To see or remove connected apps later, open Settings, then the Developer tab, and look under Connected apps. Disconnecting stops the app's access straight away.
Using an API key instead
Options 2 and 3 use an organization-scoped key instead of a sign-in. In Eodly, open Settings, then the Developer tab, and create a key under API keys for agents. Pick the scopes you want the agent to have:
reports:readfor the end-of-day reports.team:readfor the roster.
Keys look like eodly_sk_..., are scoped to one organization, and can be revoked from the same screen at any time.
Option 2: the hosted server with an API key
Point your client at the remote endpoint:
https://eodly.io/api/mcp
It speaks MCP over Streamable HTTP. Authenticate with the key as a bearer token, Authorization: Bearer eodly_sk_....
There is nothing to install, and it always runs the current version. Use it when your client takes a header rather than a sign-in.
Option 3: the npm package (local, stdio)
If your client expects a local stdio server, use the published package:
npx -y @eodly/mcp
It needs EODLY_API_KEY in the environment. The package is @eodly/mcp on npm, and the source is public at layergen/eodly-mcp.
Claude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"eodly": {
"command": "npx",
"args": ["-y", "@eodly/mcp"],
"env": { "EODLY_API_KEY": "eodly_sk_..." }
}
}
}
Cursor and most other MCP clients take the same shape. Restart the client after editing the config.
The tools
| Tool | What it returns | Scope needed |
|---|---|---|
whoami |
Which organization the connection belongs to and what scopes it holds | none |
list_reports |
Recent end-of-day report summaries, most recent first | reports:read |
get_report |
One full report by id: what got done, silent, slipping, blockers | reports:read |
list_team |
The roster: names, roles, departments | team:read |
list_reports and get_report also render an interactive report card in clients that support MCP Apps, rather than returning a wall of JSON. The view is served as a ui://eodly/report.html resource and is self-contained, with no network access of its own.
Checking it works
Run whoami first. It needs no scope, so it tells you whether the connection itself is good before you debug anything else. A healthy response names your organization and lists the scopes it holds.
If your client can read a machine-readable description instead, the server card at /.well-known/mcp/server-card.json carries the transport, protocol versions, authentication and the full tool list.
Troubleshooting
A GET to https://eodly.io/api/mcp returns 405. That is expected, not a fault. The endpoint speaks JSON-RPC over POST, and Streamable HTTP reserves GET for a server-initiated event stream that this server does not offer. Point an MCP client at it rather than a browser, or read the server card if you just want to see what it supports.
The sign-in page says only a founder or lead can connect. Ask a founder or lead of your workspace to add the connector, or to change your role.
401 on every call. The key is missing, mistyped, or revoked. Create a fresh one under Settings, then Developer. With the sign-in option, remove the connector in your client and add it again.
403 on list_reports or list_team. The key is valid but lacks that scope. Scopes are fixed when the key is created, so make a new key with the scope you need.
The agent sees no tools. Check the client actually restarted after the config change, and that EODLY_API_KEY is set in the environment the client launches, not just your shell.
Next
- Eodly API and developer documentation for the REST API and the OpenAPI spec
- Getting started with Eodly
- Troubleshooting