Adding Sources
Sources are the content your MCP server indexes and makes searchable. You can add sources during creation or later from the dashboard.
Source types
| Type | Example | Notes |
|---|---|---|
| Documentation site | https://docs.docker.com | Crawls up to 1,000 pages |
| GitHub repo (public) | https://github.com/docker/docs | Indexes README + markdown via the GitHub API |
| GitHub repo (private) | https://github.com/your-org/internal-docs | Auto-detected; prompts you to link GitHub |
| Any website | https://blog.example.com | BFS crawl from the URL within the same hostname |
| Another MCP server | https://example.com/mcp/abc/sse | Federated at query time, not crawled |
Adding sources during creation
In the wizard's Sources step, paste each URL and it will be validated automatically. What happens depends on the URL:
- Public website / docs site — we estimate the page count. If the site exceeds 1,000 pages we offer to use its underlying GitHub docs repo instead, or you can proceed with the 1,000-page cap.
- Public GitHub repo — added immediately.
- Private GitHub repo — we detect that we can't see it with public access and show a "Looks like a private GitHub repo" callout. Click Link GitHub Account (or Sign in with GitHub if you started with Google) and we'll re-verify ownership through the GitHub API. Once verified, the source is added with a Private badge.
- MCP server URL — added immediately; queries are federated to that server at runtime.
The free tier includes 2 sources per server.
Adding sources from the dashboard
- Open your server on the Dashboard
- Scroll to the Sources section
- Paste a new URL and click Add Source
- The source begins indexing immediately
The free tier includes 2 sources per server. Additional sources cost $3 each (one-time, permanent for that server). You can swap out which URLs are in those slots at any time.
Refreshing sources
Each source has a Refresh button that re-indexes it from scratch. This is useful when the content has been updated.
Sources also auto-refresh daily at 7:00 AM Central US time.
Large documentation sites
If a site has more than 100 pages:
- A callout appears in the wizard explaining the limitation
- You can proceed with the 100-page limit
- Or provide a more specific URL (e.g., a specific docs section)
- Or connect the docs GitHub repo for full coverage
Private GitHub repos
When you paste a private repo URL into the wizard or the dashboard, MCP Studio:
- Detects that the repo isn't publicly visible by probing the GitHub API.
- Asks you to authenticate — if you originally signed up with Google, you'll see a Link GitHub Account button. If you started with GitHub, this step is silent because we already have your token.
- Verifies ownership by re-probing the repo authenticated as your linked GitHub user. We require an HTTP 200 from
GET /repos/:owner/:namebefore we'll create the source. - Indexes the repo using the GitHub API. The source row carries an
isPrivateflag and a lock badge in the dashboard.
We request the repo scope because GitHub doesn't offer a "read-only private repo" scope. The token is stored encrypted in the Account table and is only used server-side by the crawler. No code is stored beyond the indexed text chunks.
What if access is later revoked?
If you remove MCP Studio from your GitHub authorized apps, the next refresh will fail with a auth_required error and the dashboard will show a Re-authenticate CTA next to that source.
Common errors
| Error reason | What it means | Fix |
|---|---|---|
auth_required | We don't have a valid GitHub token for this account | Click Link GitHub in the dashboard or wizard |
not_found | Token is valid but the repo wasn't found (renamed, deleted, or you lost access) | Confirm the URL or re-grant org access in GitHub settings |
rate_limited | GitHub temporarily rate-limited the lookup | Wait a minute and click Refresh |
network | Crawl timed out before completing | Click Refresh |