Skills
Skill 31 of 38
Connect an AI coding tool to Encore’s MCP servers. The local server (encore mcp) gives the agent the app on this machine.
4 minutes · 771 words · 8 sections
Install
npx skills add encoredev/skills --skill encore-mcpnpx skills add encoredev/skills/plugin marketplace add encoredev/skillsThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
| Server | Gives the agent | Needs |
|---|---|---|
Local (encore-local) | The app on this machine: services and endpoints, calling endpoints, local traces, database schemas and queries, Pub/Sub, buckets, caches, cron jobs, and Encore docs | The Encore CLI (encore-install) and an Encore app |
Encore Cloud (encore-cloud) | Deployed apps: environments, deploys and build logs, traces, metrics, database schemas and queries, infrastructure, secrets metadata, and the deployed source | An Encore Cloud account, and a person to approve access, or an API key |
Most agents benefit from both: local while building, Encore Cloud for deploys and production. Set up the ones the user asked for. If they didn’t say, ask.
Most tools load MCP servers when they start. After adding one, ask the user to restart or reload their tool, then check that it’s connected.
From the app’s root directory, get the app’s ID:
encore mcp startIt prints MCP stdio Command: encore mcp run --app=<app-id> and an SSE URL. Use this ID, not the id in encore.app: apps that aren’t on Encore Cloud have an empty id there and a local ID here.
Add the server to the user’s tool:
Claude Code: run from the app’s root directory:
claude mcp add --transport stdio encore-local -- encore mcp run --app=<app-id>This adds it for this project, for this user. Add --scope project to share it with the team through .mcp.json.
Cursor: add to .cursor/mcp.json:
{
"mcpServers": {
"encore-local": {
"command": "encore",
"args": ["mcp", "run", "--app=<app-id>"]
}
}
}VS Code: add to .vscode/mcp.json. VS Code uses servers, not mcpServers:
{
"servers": {
"encore-local": {
"command": "encore",
"args": ["mcp", "run", "--app=<app-id>"]
}
}
}Other tools: a stdio server with the command encore mcp run --app=<app-id>, or an SSE server at http://localhost:9900/sse?app=<app-id>.
If encore isn’t on the tool’s PATH, which is common for editors started from the dock or start menu, use the full path from which encore as the command. Write it out in full, such as /Users/<user>/.encore/bin/encore: config files don’t expand ~.
Check it: claude mcp list in Claude Code, or the tool’s MCP settings, should show encore-local as connected. Then call its get_services tool.
The app doesn’t need to be running. call_endpoint starts it, and the database tools start the local databases, which needs Docker. Traces exist only for requests the local app has served.
The server is at https://api.encore.dev/mcp, over HTTP. It isn’t tied to one app: with OAuth, it sees every app the user can access.
Add the server to the user’s tool:
Claude Code:
claude mcp add --transport http --scope user encore-cloud https://api.encore.dev/mcp--scope user makes it available in every project. Leave it out to add it to this project only.
Cursor: add to ~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": {
"encore-cloud": {
"url": "https://api.encore.dev/mcp"
}
}
}VS Code: add to .vscode/mcp.json:
{
"servers": {
"encore-cloud": {
"type": "http",
"url": "https://api.encore.dev/mcp"
}
}
}Other tools: an HTTP (streamable HTTP) server at https://api.encore.dev/mcp.
Ask the user to authenticate. The agent can’t do this step, because a person approves access in a browser:
/mcp, selects encore-cloud, and chooses Authenticate.encore-cloud from the tool’s MCP settings, or from the prompt the tool shows.Check it: call the app_list tool. It lists the user’s apps.
For CI or when nobody can approve access in a browser, use an API key.
Ask the user to create one in the Cloud Dashboard: the app’s Settings > Access > API Keys. API keys start with enpk_. They’re different from the auth keys under Auth Keys, which log in the CLI (encore-login). A key belongs to one app, and the server only lists the tools its scopes allow, so pick scopes for the tools the agent needs.
Have the user put it in an environment variable, such as ENCORE_API_KEY, and add the server with an Authorization header:
claude mcp add --transport http encore-cloud https://api.encore.dev/mcp \
--header "Authorization: Bearer $ENCORE_API_KEY"In other tools, add "headers": {"Authorization": "Bearer <api-key>"} to the server’s entry, in a config file that isn’t committed, such as a user-level one.
Check it with a tool the key’s scopes allow.
encore-local fails to start: run encore mcp run --app=<app-id> in a terminal to see the error. Usually encore isn’t on the tool’s PATH (use the full path), or the app ID is wrong (run encore mcp start again).encore-cloud says authentication is required: the user hasn’t finished OAuth (step 2), or the API key is wrong, expired, or deleted.encore-cloud lists few or no tools with an API key: the key’s scopes don’t cover them. Ask the user to add scopes or create a new key.encore llm-rules init --llm-rules=<tool> sets up the local server together with Encore’s coding rules for cursor, claudecode, vscode, or zed, for apps that are on Encore Cloud. Use it when the user also wants the rules files.Connect an AI coding tool to Encore's MCP servers. The local server (`encore mcp`) gives the agent the app on this machine. The Encore Cloud server (`https://api.encore.dev/mcp`) gives it deployed environments. Covers Claude Code, Cursor, VS Code, and other MCP hosts, with OAuth or an API key for Encore Cloud.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 26 October 2026.SKILL.md, not by matching a directory convention. One layout observed: encore/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by Encore, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree./encoredev/skills.md, and each skill at its own .md URL.