MCP Servers

Connect production MCP servers to your on-device model — a hands-on way to learn the Model Context Protocol

Three ways to use MCP with LocalLM Lab:

  • Connect a server and use its tools — this page.
  • Building a server? Test it against an independent client and a range of models — Testing your MCP server.
  • Want an MCP client in your own app? This same one, as a Swift package — the MCP client SDK.

This page covers every MCP server LocalLM Lab has been tested against, how to connect each one, and a couple of example prompts to try once it's connected. All of this happens in the MCP Servers panel, opened from the Window menu (or ⌘3).

These settings apply to both Prompt Playground and API Lab — a connected server's enabled tools are available to the local model itself, not to either surface individually. If you're building against API Lab's OpenAI-compatible endpoint, any tool you've enabled here (e.g. Todoist's find-tasks-by-date) is available to your own chat client exactly the same way it is in Prompt Playground.

Why this is here

The Model Context Protocol (MCP) is quickly becoming the standard way AI applications connect to real tools and data — the same role API Lab plays for learning the OpenAI API, MCP Servers plays for learning this. Instead of reading about client-server architecture, tool discovery, or OAuth flows in the abstract, you connect to real, production MCP servers (Slack, Linear, GitHub, and others) and watch the actual protocol exchange happen: capability negotiation, tool/resource/prompt discovery, and live tool calls, all running against your own Mac's on-device model.

You don't need to build your own MCP server, pay for API access, or set up a sandbox to start learning this — every server below is a real, publicly reachable one, and connecting to it costs nothing beyond the few minutes of setup each section describes. If you're new to MCP entirely, see Learn more about MCP at the end of this page before diving in.

LocalLM Lab's MCP client speaks the current protocol revision (2025-11-25) and negotiates down automatically for older servers — everything below connects regardless of which revision it implements. Newer servers can also return structured tool results (data alongside the text, checked against the tool's declared output schema), resource links (pointers to content the model can ask to read), and elicitation (see below). The next revision (2026-07-28) is already on the roadmap.

↑ Top

Servers at a glance

ServerAuth typeWhat it's for
DeepWikiNoneAI-generated documentation/Q&A for any public GitHub repo
Context7NoneUp-to-date library/framework documentation lookup
TavilyPersonal Access Token (or OAuth)Web search — the thing a local model can't do on its own
GitHubPersonal Access TokenIssues, pull requests, repos, commits
NotionOAuth (automatic)Pages, databases, search, comments
TodoistOAuth (automatic)Tasks and projects
LinearOAuth (automatic)Issues, projects, users
SlackOAuth (manual client)Channels, messages, search
MCP reference serverOAuth (automatic)Official spec-conformance test server — exercises tools, resources, and prompts all in one place

"OAuth (automatic)" means: just add the server with auth type None — LocalLM Lab detects the login requirement itself and opens your browser to sign in, no setup on the service's side. "OAuth (manual client)" means the service requires you to register an app with it first (a few extra one-time steps, covered below).

↑ Top

⚠️ Before you start: the context budget is small

The on-device model has a fixed ~4096-token context window, shared across every enabled tool from every connected server. Most of these services expose far more tools than that budget allows — Linear exposes 50+ tools, Todoist exposes 45, and Slack, Notion, and GitHub aren't far behind.

Because of this, a newly connected server starts with every tool unchecked in the MCP Servers panel — nothing is sent to the model until you explicitly enable something. Go to the server's entry after adding it and enable only the one or two tools you actually need for what you're about to ask. Each section below names the exact tool(s) to turn on for its example prompts.

↑ Top

When a server asks you for input

Some MCP servers pause a running tool call to ask you for something — a value the tool needs, a confirmation before it acts, or which workspace to target. This is a standard MCP feature called elicitation, and it's server-initiated: the model isn't asking, the server is.

When it happens, LocalLM Lab shows a sheet that:

  • names the server that's asking ("Linear is asking for input", with a "not LocalLM Lab" line) — the spec requires clients to show this, and forbids servers from using elicitation to ask for passwords or tokens;
  • renders a typed form from what the server requested — text fields, date pickers, sliders for bounded numbers, toggles, single- and multi-select menus, with field names cleaned up and required ones marked;
  • returns your Submit, Decline ("I won't give you this"), or Cancel ("I didn't decide") — three answers the server can treat differently.

A server may instead hand back a link and ask you to finish a step in your browser; the sheet then shows an "Open in browser" button and waits. See the elicitation UI for exactly what it looks like. The MCP reference server below has an elicitInputs tool that demonstrates it.

↑ Top

DeepWiki

Auth type: None  ·  Server URL: https://mcp.deepwiki.com/mcp

  1. MCP Servers panel → Add Server.
  2. URL: https://mcp.deepwiki.com/mcp, display name: "DeepWiki", auth type: None.
  3. Click Add. No sign-in required — connects immediately.

DeepWiki only has 3 tools total, so it's fine to enable all of them here if you want to explore — but for the prompts below, read_wiki_structure is the only one actually used.

Try it (enable read_wiki_structure):

What documentation topics are available for the GitHub repo nickclyde/duckduckgo-mcp-server?

Try it (enable ask_question):

What transport protocols does the repo nickclyde/duckduckgo-mcp-server support?

⚠️ Avoid asking for a full documentation summary of a large repo in one go (the read_wiki_contents tool) — that alone can return enough content to exceed the on-device model's context budget. Ask about one section/topic at a time instead.

↑ Top

Context7

Auth type: None  ·  Server URL: https://mcp.context7.com/mcp

  1. MCP Servers panel → Add Server.
  2. URL: https://mcp.context7.com/mcp, display name: "Context7", auth type: None.
  3. Click Add. No sign-in required.

Context7 only has 2 tools (resolve-library-id, query-docs) — both are needed together (the model resolves the library name first, then queries its docs), so enable both.

Try it:

Show me current documentation for the React useEffect hook.
How do I set up middleware in Express?
↑ Top

Tavily

Auth type: Personal Access Token (recommended) or OAuth  ·  Server URL: https://mcp.tavily.com/mcp/

A local model has a training cutoff and no way to reach the live web — ask it anything recent and it either refuses or invents. Tavily is a web-search API built for AI: it returns short, ranked, source-attributed snippets rather than raw pages, which is the shape a small model can use in a tight context window.

  1. Get an API key at app.tavily.com (free tier available).
  2. MCP Servers panel → Add Server.
  3. URL: https://mcp.tavily.com/mcp/, display name: "Tavily", auth type: Personal Access Token, paste the tvly-… key.
  4. Click Add. Connects immediately — no browser. (Leaving auth type None works too, via an OAuth browser round-trip.)

Tavily exposes four tools (tavily_search, tavily_extract, tavily_crawl, tavily_map) — enable only tavily_search unless a task needs the others.

Try it (enable tavily_search):

Search the web for the current MCP protocol revision and cite your source.
What were the top AI news stories this week? Give me the source links.

Tavily accepts the connection before it checks your key (it validates the key only when a search runs), so a mistyped key shows as Connected but every search fails. If that happens, remove the server and re-add it with the key copied carefully.

↑ Top

GitHub

Auth type: Personal Access Token  ·  Server URL: https://api.githubcopilot.com/mcp/

  1. On github.com: Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token.
  2. Scope it to a single repository you control (not all repos), with read-only permissions where possible (Contents, Issues, Pull requests, Metadata).
  3. Set a short expiration — this is easy to regenerate later.
  4. Copy the token.
  5. MCP Servers panel → Add Server → URL https://api.githubcopilot.com/mcp/ → display name "GitHub" → auth type Personal Access Token → paste the token → Add.

GitHub's MCP server exposes a large tool surface across issues, PRs, repos, actions, and more — enable only what each prompt below needs.

Try it (enable get_me):

What's my GitHub username?

⚠️ Apple's on-device Foundation Models framework can sometimes flag a prompt like this one with a privacy/safety warning instead of answering — it doesn't happen every time, so don't be alarmed if it works fine for you. If you do hit it, try rephrasing with the key phrase in quotes, e.g. asking for "my username" — that's worked around it in practice.

Try it (enable list_issues):

List the open issues in <owner>/<repo>.
↑ Top

Notion

Auth type: OAuth (automatic — no setup on Notion's side)  ·  Server URL: https://mcp.notion.com/mcp

  1. MCP Servers panel → Add Server.
  2. URL: https://mcp.notion.com/mcp, display name: "Notion", auth type: None.
  3. Click Add. Your browser opens Notion's sign-in/consent screen automatically — sign in and approve.

Try it (enable notion-search):

Search my Notion workspace for pages about "meeting notes".

⚠️ Notion's full tool list (page/database/comment/view creation and editing tools, alongside search) can exceed the on-device context budget on its own if you enable everything. notion-search and notion-fetch cover most read-only lookups — only enable the write/create/update tools if you specifically need them.

↑ Top

Todoist

Auth type: OAuth (automatic — no setup on Todoist's side)  ·  Server URL: https://ai.todoist.net/mcp

  1. MCP Servers panel → Add Server.
  2. URL: https://ai.todoist.net/mcp, display name: "Todoist", auth type: None.
  3. Click Add. Your browser opens Todoist's sign-in/consent screen automatically.

Todoist's server exposes 45 tools — the largest of any server here besides Linear. Confirmed live: enabling just 4 tools (search, user-info, find-tasks, find-tasks-by-date) already uses ~1,249 tokens — close to a third of the entire budget from a small, reasonable-looking selection. Be deliberate about what you turn on.

Try it (enable find-tasks-by-date):

What tasks do I have due today in Todoist?

(find-tasks-by-date supports startDate='today', which includes overdue items too — exactly this prompt.)

Try it (enable add-tasks, ~612 tokens on its own):

Add a task to buy groceries tomorrow.

Other tools worth knowing about if you explore further: search (~79 tokens, cross-task/project search) and fetch (~88 tokens, full contents of a task/project by ID) cover most other read-only lookups cheaply. Todoist also exposes a todoist-task-list resource (an interactive task list widget — click Resources… next to the User Input box in the Prompt Playground, then Attach) and a productivity-analysis prompt template (click Prompts… to use it).

↑ Top

Linear

Auth type: OAuth (automatic — no setup on Linear's side)  ·  Server URL: https://mcp.linear.app/mcp

  1. MCP Servers panel → Add Server.
  2. URL: https://mcp.linear.app/mcp, display name: "Linear", auth type: None.
  3. Click Add. Your browser opens Linear's sign-in screen (sign in and pick/create a workspace if prompted).

Linear's MCP server exposes over 50 tools (issues, projects, documents, releases, diffs, comments, and more) — this is the one most likely to blow the context budget if you enable more than a couple.

Try it (enable list_users):

List the Linear users.

Try it (enable list_issues):

What issues are assigned to me in Linear?
↑ Top

Slack

Auth type: OAuth (manual client) — Slack requires a one-time app setup, unlike the other OAuth servers above.  ·  Server URL: https://mcp.slack.com/mcp

Slack doesn't support the automatic sign-in flow the other services do, so you'll need to register a small app with Slack first (once — takes about five minutes):

  1. Create a Slack App at api.slack.com/appsFrom scratch, in a workspace you control.
  2. OAuth & Permissions → opt into PKCE (irreversible, but required).
  3. OAuth & PermissionsRedirect URLs → add locallmlab://oauth/callback → Save.
  4. App Home → add a Bot User; OAuth & PermissionsBot Token Scopes → add users:read (the bot itself is never used — Slack just requires one to exist).
  5. OAuth & PermissionsUser Token Scopes → add the scopes you want (e.g. channels:read, chat:write, search:read.public — the full list is at https://mcp.slack.com/.well-known/oauth-protected-resource).
  6. Go to https://api.slack.com/apps/<your app ID>/app-assistant and enable MCP server access — this is a separate toggle, easy to miss.
  7. Reinstall the app to your workspace (Slack prompts for this after any scope/config change).
  8. Copy the Client ID from Basic Information — no secret needed.
  9. In LocalLM Lab: MCP Servers panel → Add Server → URL https://mcp.slack.com/mcp → display name "Slack" → auth type OAuth (manual client) → paste the Client ID → Add. Your browser opens Slack's consent screen — approve it.

If something goes wrong along the way, these are the errors you're most likely to hit and what they mean:

ErrorWhat it meansFix
redirect_uri did not match any configured URIs Redirect URL isn't saved on the Slack app yet. Add locallmlab://oauth/callback under step 3 and save.
could not be installed / Invalid permissions requested / No scopes requested No scopes requested, a requested scope isn't declared on the app, or no Bot User + Bot Token Scope exists. Recheck steps 4-5 — Bot User present, a Bot Token Scope added, and User Token Scopes matching what's requested.
Connection failed (HTTP 400) in LocalLM Lab, with "App is not enabled for Slack MCP server access" Sign-in succeeded, but the app hasn't opted into MCP access itself. Step 6 — the app-assistant page toggle.
A banner asking to "Request to Workspace Install" Your workspace requires admin approval for any new app — unrelated to this app's config. Approve it if you're an admin, or use a personal/test workspace instead.

Slack's MCP server exposes about 19 tools (messaging, search, canvases, reactions, files, and more).

Try it (enable slack_search_channels):

What channels are in my Slack workspace?

Try it (enable slack_search_public or slack_search_public_and_private):

Search Slack for messages about "launch".
↑ Top

MCP reference server

Auth type: OAuth (automatic — no setup needed, same DCR path as Notion/Todoist/Linear)  ·  Server URL: https://example-server.modelcontextprotocol.io/mcp

This is the official MCP spec team's own test server — not a real productivity tool, but useful as a low-risk, low-cost way to see tools, resources, and prompts all working in one place (most other servers here only expose tools, or none of the three at once). Everything on it is safe to poke at; nothing it does affects any real account or data.

  1. MCP Servers panel → Add Server.
  2. URL: https://example-server.modelcontextprotocol.io/mcp, display name: "MCP Test" (or anything), auth type: None.
  3. Click Add. Your browser opens a generic sign-in/consent screen automatically.

It exposes 9 small tools — cheap enough (~606 tokens for 8 of them) that you can safely enable most of them to explore, unlike every other server on this page:

  • echo (~57 tokens) — echoes back the input
  • add (~66 tokens) — adds two numbers
  • longRunningOperation (~104 tokens) — demonstrates a long-running operation with progress updates
  • sampleLLM (~96 tokens) — exercises MCP's sampling feature (a server asking the client to run a prompt through its model). LocalLM Lab declines sampling by design, so this tool reports that it was refused — expected, not a bug.
  • getTinyImage (~40 tokens) — returns a small test image
  • annotatedMessage (~125 tokens) — demonstrates content annotations/metadata
  • getResourceReference (~85 tokens) — returns a resource reference usable by MCP clients
  • elicitInputs (~33 tokens) — demonstrates requesting user input with various field types (shows the elicitation sheet)
  • mcp_apps_hello_world (~31 tokens) — returns an interactive UI that runs in the client (pairs with the "Hello World MCP App" resource below)

Try it (enable add):

Use the add tool to add 47 and 89.

Try it (enable echo):

Echo back "testing the reference server".

Resources (Prompt Playground → Resources…): mostly tiny plaintext/binary test resources ("Resource 1" through "Resource 10", alternating plain text and binary — binary ones are correctly refused with a clear message if you try to attach them, they're not meant to be readable), plus one genuinely large one: "Hello World MCP App" — an embedded interactive HTML/JS mini-app (~113,000 tokens) that's a good way to see the size-guard rejection message in action, since it's far larger than the entire context budget on its own.

Prompts (Prompt Playground → Prompts…):

  • simple_prompt — no arguments, good first thing to try.
  • complex_prompt — takes a required temperature and optional style argument, good for trying the argument fill-in form.
  • resource_prompt — takes a resourceId (1-100) and embeds that resource's content into the resulting prompt.
↑ Top

General troubleshooting

↑ Top

Learn more about MCP

If you're a macOS developer new to MCP, these are good starting points, in roughly the order they're useful:

  1. modelcontextprotocol.io/introduction — a short, plain-language overview of what MCP is and why it exists (the official "USB-C for AI applications" framing).
  2. modelcontextprotocol.io/docs/learn/architecture — the core concepts this whole page builds on: hosts, clients, and servers; the tools/resources/prompts primitives; local (stdio) vs. remote (Streamable HTTP) transports; and a full worked example of the actual JSON-RPC exchange. Reading this alongside actually connecting a server here (Notion or Linear are good first ones — no manual setup needed) is the fastest way to make it click.
  3. modelcontextprotocol.io/specification/latest — the formal protocol specification, for when you want the exact wire-level detail behind something you've observed (e.g. what LocalLM Lab's context-budget warnings are protecting against, or exactly what a tools/list response is required to contain).
  4. github.com/modelcontextprotocol/servers — reference server implementations, including the source for the MCP reference server used above.
  5. github.com/modelcontextprotocol/inspector — the official MCP Inspector, a standalone tool for poking at a server's raw tools/list/resources/list/prompts/list responses directly, useful once you want to see the exact protocol traffic LocalLM Lab is making on your behalf.

Every server on this page is a real one you can point either LocalLM Lab or the Inspector at — there's no toy/sandboxed version of MCP here, which is the point.

↑ Top

Contact

Questions about a specific server, or run into something this page doesn't cover? Contact neuron@thisbrain.ai or join our Discord.

↑ Top