# MCP servers

MCP (Model Context Protocol) is an open standard for connecting AI agents to external tools. Cora supports MCP servers to give it access to systems beyond the local codebase GitHub, Slack, databases, CI pipelines, internal APIs, and anything else with an MCP server implementation.

<figure><img src="/files/em9oU3c1cnCbmkhPxU1c" alt=""><figcaption></figcaption></figure>

***

### Storage locations

**Global MCP config** available in every project:

```
~/.config/Code/User/globalStorage/codemateai.codemate-agent/settings/mcp_settings.json
```

**Project MCP config** available in the current workspace only:

```
your-project/.cora/mcp_settings.json
```

Use the global config for services you use across all projects GitHub, Slack, a personal database. Use the project config for services specific to a codebase the project's own database, its staging environment, its internal tools.

***

### Configuration format

`mcp_settings.json` is a JSON file where each key is a server name and the value describes how to start it.

```json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "<BASE_PATH>"
      ]
    },
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git"]
    },
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ],
      "env": {
        "MEMORY_FILE_PATH": "<BASE_PATH>/memory.jsonl"
      }
    },
    "slack": {
      "command": "npx",
      "args": ["-y", "@jtalk22/slack-mcp"]
    }
  }
}
```

Environment variable references in the format `${VAR_NAME}` are resolved from your shell environment when Cora starts. Never write credential values directly into the file.

> If `mcp_settings.json` is inside a project directory, add it to `.gitignore` — even with environment variable references, the file may reveal internal service names or infrastructure details you don't want in a shared repository.

***

### Using MCP tools in prompts

Once configured, MCP tools are available in any mode. Describe what you want in natural language Cora calls the appropriate tool without special syntax.

```
Check GitHub for open issues tagged "auth" and summarize
what's blocking the multi-tenant login bug.
```

```
Query the production database for the 10 organizations
with the highest event volume in the last 7 days.
```

```
Post a summary of today's merged PRs to the #deployments
Slack channel.
```

```
Create a GitHub issue for the rate limiting edge case we
just found and assign it to the auth milestone.
```

***

### Editing the config directly

Because `mcp_settings.json` is a plain file on your filesystem, you can edit it directly:

```bash
# Edit the global MCP config
code ~/.config/Code/User/globalStorage/codemateai.codemate-agent/settings/mcp_settings.json

# Edit a project MCP config
code .cora/mcp_settings.json
```

Changes take effect the next time Cora starts a session. If you add a new server mid-session, reload the Cora panel to pick it up.

***

### Security

MCP servers run as separate processes. Cora calls them over a local interface they don't have access to Cora's context or your environment beyond what you explicitly configure in the `env` block.

Before adding an MCP server from a third party, verify it comes from a trusted source and review what permissions and credentials it requests. A server that only needs to read GitHub issues does not need a token with write access to your repositories.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.codemate.ai/cora/configuration/mcp-servers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
