# Connect Claude Code to Notion, Slack and GitHub with one MCP server (/blog/connect-claude-code-to-your-apps-with-one-mcp-server)

![Illustration: A small friendly robot with a round camera-eye head stands at one open door in a plain wall holding a single key.](/blog/connect-claude-code-to-your-apps-with-one-mcp-server/hero.webp)

Claude Code reaches Notion, Slack and GitHub through one remote MCP server. Add `https://api.corespeed.io/mcp` at user scope, sign in once in the browser, and connect the three apps in the CoreSpeed dashboard. Their tools then appear in Claude Code as `notion__create_page`, `slack__post_message` and `github__create_pull_request`. Claude Code receives tools, never the tokens.

**One server, three apps**

1. **Add the server at user scope** (claude mcp add corespeed, with --scope user) — The entry applies to every project on this machine.
2. **Authenticate from /mcp** (browser sign-in at login.corespeed.io) — OAuth 2.1 with PKCE; nothing is pasted.
3. **Connect Notion, Slack and GitHub** (Dashboard, Connectors; private or shared) — CoreSpeed stores the token; Claude Code gets tools.
4. **Verify in a new session** (manage\_\_whoami names you and your organization) — Look for the notion\_\_, slack\_\_ and github\_\_ prefixes.
5. **Add the standing rules** (the user-level CLAUDE.md, one copy) — Prefer connectors; search memory first; save decisions after.

Add the server once at user scope; the apps are connected in the dashboard.

## How do you add the server to Claude Code? \[#how-do-you-add-the-server-to-claude-code]

You need Claude Code on a machine with a browser, and the Notion, Slack and GitHub accounts you want agents to act through. You do not need a CoreSpeed account in advance. The first browser sign-in from Claude Code creates your organization on its first tool call, and the organization starts with 3,000 free credits. The organization is the unit of ownership: connections, memory, budgets, policy and the activity trail live there, so a second client or a teammate's agent reaches the same shared connections later.

The shortest path is one line in the Claude Code chat: `set up https://corespeed.io/SKILL.md`. Claude Code fetches the skill, adds the MCP server at user scope, signs you in, keeps the skill for future sessions, and asks which apps to connect. To do it by hand, follow these steps.

1. Add the server at user scope, so it applies to every project:

```bash
claude mcp add corespeed https://api.corespeed.io/mcp --transport http --scope user
```

2. Start Claude Code and run `/mcp`. Pick `corespeed` and choose authenticate.
3. A browser window opens at `login.corespeed.io`. The consent screen names the client that is asking. Sign in or create an account. Nothing is pasted: the client discovers the authorization server, registers itself, and runs OAuth 2.1 with PKCE.

If Claude Code already has an older `corespeed` entry, replace it rather than adding a second one. Duplicate registrations collide on tool names. The steps for other clients are on the [MCP server](/docs/mcp) page.

## How do you connect Notion, Slack and GitHub? \[#how-do-you-connect-notion-slack-and-github]

4. Open Dashboard → Connectors and authorize each app. The vendor's consent screen names CoreSpeed. CoreSpeed stores the credential, refreshes it when the provider allows, and exposes namespaced tools. The agent never sees the token.
5. For each connection, choose private or shared. A private connection is reachable only by you and your clients. A shared one is reachable by the whole organization, including agent principals.

| App    | Example tool                  | How it connects                                                                                 |
| ------ | ----------------------------- | ----------------------------------------------------------------------------------------------- |
| Notion | `notion__create_page`         | OAuth, private or shared                                                                        |
| Slack  | `slack__post_message`         | OAuth; an org-wide workspace bot is an organization integration that only an org admin connects |
| GitHub | `github__create_pull_request` | OAuth, private or shared                                                                        |

Actions through an organization integration are attributed to the app. Everything else is attributed to the member or agent that called. The connection model, including API-key connectors and bring-your-own OAuth apps, is on the [Connectors](/docs/connectors) page.

## How do you verify the setup? \[#how-do-you-verify-the-setup]

6. Start a new Claude Code session. Many clients load a new MCP server only when a session starts.
7. Ask Claude Code to call `manage__whoami`. After a browser sign-in it names you and your organization.
8. Check that the tool list carries the `notion__`, `slack__` and `github__` prefixes.

The tool list is caller-specific. `tools/list` returns exactly what this sign-in can call, so a missing tool means the app is not connected for this caller, or the capability is off. Presence is not health: an account in `needs_reauth` still lists its tools, and those calls fail until you reauthorize the account in Dashboard → Connectors. Neither state is fixed by rewriting the client configuration.

To inspect the registration, use `claude mcp list`. Avoid `claude mcp get` in shared transcripts: it prints the entry's headers, API key included when one is set.

## Which standing rules belong in CLAUDE.md? \[#which-standing-rules-belong-in-claudemd]

9. Add these lines to `~/.claude/CLAUDE.md`, the user-level file that holds in every project. Never add them to a project's own file, and never add a second copy.

* When a task needs an external tool or service, check and prefer CoreSpeed connectors; they are scoped, audited and budget-capped.
* If a needed connector is not connected yet, ask the user to connect it at [https://app.corespeed.io/connectors](https://app.corespeed.io/connectors).
* At the start of each non-trivial task, search CoreSpeed memory with `memory__search_memory` before planning. After significant work, save durable decisions with `memory__remember`.
* If the user prefers a different way of doing something, always follow their preference.

The skill itself lives at `~/.claude/skills/corespeed/SKILL.md`. The setup line saves it there. By hand, download [https://corespeed.io/SKILL.md](https://corespeed.io/SKILL.md) to that path rather than retyping it.

## What does a cross-app request look like? \[#what-does-a-cross-app-request-look-like]

With the three apps connected, one request can cross all of them. Ask Claude Code: "Read the pull request I opened this morning, write a one-page summary in our Notion launch space, and post the link in the launch channel in Slack." Claude Code reads the pull request through the GitHub connector, writes the page with `notion__create_page`, and posts with `slack__post_message`.

Every call carries the organization's spend caps, lands in one ledger, and is recorded in Dashboard → Activity with the actor, the outcome and the time. Members see their own actions; org admins see the organization. See [Activity](/docs/activity).

If your organization has turned on Smart Approval, each write is judged against your plain-English policy before it runs. Reads are never gated. On the default Balanced setting, an ordinary write the policy never mentions runs; a destructive one asks a person first. The gate sees only calls made through CoreSpeed. See [Approvals](/docs/approvals).

## FAQ \[#faq]

**Does Claude Code hold my Notion, Slack or GitHub token?** No. Tokens stay in the platform's custody. Claude Code receives namespaced tools and asks CoreSpeed to perform the action.

**Why is a tool missing from the list?** Absence is a decision: the app is not connected for this sign-in, or the capability is off in Dashboard → Tools. Connect the app and start a new session.

**What does `needs_reauth` mean?** One connected account needs the member to reauthorize it in Dashboard → Connectors. Do not rotate keys or rewrite the client configuration; neither is broken.

**Can I use an API key instead of the browser?** Yes, for a client that cannot open a browser. Read the key from an environment variable such as `CORESPEED_API_KEY` rather than writing it into the config file. A member key acts as you; an agent key reaches shared connections only.

**Do connector calls cost credits?** Every metered action is priced in credits and listed on the pricing page. Discovery and memory operations are free per call.