loading…
Search for a command to run...
loading…
Secure multi-source MCP server for reading local, GitHub, GitLab, Bitbucket, and network source code with read-only-by-default access, enabling AI assistants to
Secure multi-source MCP server for reading local, GitHub, GitLab, Bitbucket, and network source code with read-only-by-default access, enabling AI assistants to inspect repositories safely.
Secure multi-source MCP server for local repositories, GitHub, GitLab, Bitbucket, and mounted network workspaces.
Sourceplane MCP provides a consistent Model Context Protocol interface for safely exposing source code and documentation to MCP-compatible AI clients such as Claude Desktop.
The platform is read-only by default, with optional local-only development write support.
It is designed specifically for source context and repository inspection — not platform automation.
Modern engineering environments are fragmented across:
AI assistants are significantly more useful when they can safely inspect source trees directly instead of relying on manual copy/paste.
Sourceplane MCP focuses on:
| Source Type | Description | Token Required |
|---|---|---|
github |
GitHub repository via API | Optional for public repos |
gitlab |
GitLab project via API | Optional for public projects |
bitbucket |
Bitbucket Cloud or Data Center repository | Optional for public repos |
local |
Local workspace folder | No |
network |
Mounted NAS or network share | No |
Network sources are mounted filesystem paths such as:
/Volumes/Engineering/shared-platform
/mnt/shared/platform
They are not arbitrary internet URLs.
| Capability | GitHub | GitLab | Bitbucket Cloud | Bitbucket Data Center | Local | Network |
|---|---|---|---|---|---|---|
| Public source without token | Yes | Yes | Yes | Usually internal only | N/A | N/A |
| Private source with token | Yes | Yes | Yes | Yes | N/A | N/A |
Custom host |
Yes | Yes | Yes | Yes | N/A | N/A |
Custom webUrl |
Yes | Yes | Yes | Yes | N/A | N/A |
list_sources |
Yes | Yes | Yes | Yes | Yes | Yes |
read_file |
Yes | Yes | Yes | Yes | Yes | Yes |
read_files |
Yes | Yes | Yes | Yes | Yes | Yes |
list_files |
Yes | Yes | Yes | Yes | Yes | Yes |
get_source_structure |
Yes | Yes | Yes | Yes | Yes | Yes |
search_code |
API search | API search / tree search | Tree-based search | Tree-based search | Local scan | Local scan |
| Branch override | Yes | Yes | Yes | Yes | No | No |
| Built-in blocklist | Yes | Yes | Yes | Yes | Yes | Yes |
| Source-specific blocklist | Yes | Yes | Yes | Yes | Yes | Yes |
| Write operations | No | No | No | No | Optional local-only | No |
| Tool | Description |
|---|---|
list_sources |
List configured sources |
read_file |
Read a single file |
read_files |
Read multiple files |
list_files |
List files in a directory |
get_source_structure |
Get recursive source tree |
search_code |
Search source code |
write_file |
Write a UTF-8 text file to an explicitly writable local source |
All tools use the same source-key model:
{
"sourceKey": "platform-api",
"path": "src/index.ts"
}
Optional:
git clone https://github.com/infraWS/sourceplane-mcp.git
cd sourceplane-mcp
npm install
npm run build
Copy the example configuration:
cp config/sources.example.yaml config/sources.yaml
config/sources.yaml is intentionally gitignored.
server:
name: sourceplane-mcp
version: 1.0.0
defaults:
owner: my-org
defaultBranch: main
maxFileSizeKb: 512
maxFiles: 1000
followSymlinks: false
pathBlocklist:
- .env
- .env.*
- secrets/
- certificates/
- private/
- "*.pem"
- "*.key"
- "*.p12"
- terraform.tfstate
- terraform.tfstate.*
- "*.tfvars"
sources:
github-public:
type: github
owner: nodejs
name: node
github-private:
type: github
name: terraform-platform
token: ${GITHUB_TOKEN}
github-enterprise:
type: github
host: https://github.company.com/api/v3
webUrl: https://github.company.com
owner: platform
name: terraform-platform
token: ${GITHUB_ENTERPRISE_TOKEN}
gitlab-public:
type: gitlab
projectId: gitlab-org/gitlab
gitlab-private:
type: gitlab
projectId: platform/backend-api
token: ${GITLAB_TOKEN}
gitlab-self-managed:
type: gitlab
host: https://gitlab.company.com
webUrl: https://gitlab.company.com
projectId: platform/backend-api
token: ${GITLAB_SELF_MANAGED_TOKEN}
bitbucket-cloud:
type: bitbucket
workspace: engineering
slug: frontend-app
token: ${BITBUCKET_TOKEN}
bitbucket-datacenter:
type: bitbucket
host: https://bitbucket.company.com/rest/api/1.0
webUrl: https://bitbucket.company.com
projectKey: PLATFORM
slug: frontend-app
token: ${BITBUCKET_DC_TOKEN}
local-api:
type: local
path: ~/Projects/api-service
write:
enabled: false
allowOverwrite: false
createDirs: false
shared-network:
type: network
path: /Volumes/Engineering/shared-platform
Sourceplane MCP is read-only by default.
Local filesystem sources can explicitly opt into controlled write access for development workflows.
Write support is:
local sourcesSupported operations:
Unsupported operations:
sources:
local-dev:
type: local
path: ~/Projects/my-app
write:
enabled: true
allowOverwrite: true
createDirs: true
write_file{
"sourceKey": "local-dev",
"path": "src/generated/example.ts",
"content": "export const example = true;\n"
}
Sourceplane MCP is intentionally restrictive.
It does not:
Only explicitly configured sources are accessible.
Even when write support is enabled for local sources, writes remain constrained to the configured source root and continue to enforce:
The server rejects:
../)/etc/passwd)//)\)%2e, %2f, %5c)The server always applies an internal protection layer.
Examples include:
.git/.wrangler/node_modules/.envBlocklists are merged in this order:
DEFAULT_PATH_BLOCKLIST
→ defaults.pathBlocklist
→ source.pathBlocklist
The server refuses to read binary files using:
Local and network sources are constrained to their configured root path.
Example rejected request:
{
"sourceKey": "local-api",
"path": "../../.ssh/id_rsa"
}
Symlinks are disabled by default:
defaults:
followSymlinks: false
macOS Claude Desktop configuration path:
~/Library/Application Support/Claude/claude_desktop_config.json
Example:
{
"mcpServers": {
"sourceplane-mcp": {
"command": "node",
"args": [
"/absolute/path/to/sourceplane-mcp/dist/index.js"
],
"env": {
"SOURCEPLANE_CONFIG": "/absolute/path/to/sourceplane-mcp/config/sources.yaml",
"GITHUB_TOKEN": "github_pat_xxx",
"GITLAB_TOKEN": "glpat_xxx",
"BITBUCKET_TOKEN": "xxx"
}
}
}
}
Restart Claude Desktop after updating the configuration.
Sourceplane MCP includes automated tests covering:
Current coverage includes:
Run tests:
npm run test
npm run coverage
npm run dev
npm run build
npm run start
npm run clean
npm run test
npm run coverage
Sourceplane MCP favors:
It is intentionally narrower in scope than platform-automation MCP servers.
MIT License
Выполни в терминале:
claude mcp add sourceplane-mcp -- npx Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development