MCP server for populating and managing Sciple platform content
Project description
Sciple Platform MCP Server
MCP server that lets a local Claude populate and manage Sciple platform content — environments, services, observability dashboards, and runbooks — via the Sciple REST API. Engineers use it to bootstrap tenant structure, maintain the service catalog, build dashboards, and author runbooks without leaving their AI coding session.
Published on PyPI: https://pypi.org/project/sciple-mcp/ Source: https://github.com/navaganeshr/sciple-mcp
Install
The recommended install is via uv — it's a one-time setup that gives you uvx, which fetches and caches sciple-mcp on demand. No clone required.
# Install uv (one-time, only if you don't have it)
curl -LsSf https://astral.sh/uv/install.sh | sh
uvx sciple-mcp will resolve the latest version from PyPI on first run and cache it locally.
Configuration
The server reads three environment variables:
SCIPLE_API_URL=http://localhost:8000/api/v1
SCIPLE_API_TOKEN=sciple_pat_...
SCIPLE_TENANT_ID=<your tenant id>
SCIPLE_API_TOKEN is a personal access token minted under Profile → Access tokens in the Sciple dashboard, scoped to the permissions the server should have:
| Domain | Permissions |
|---|---|
| Environments | environments.view, environments.manage |
| Services | services.view, services.manage |
| Observability | observability.view, observability.manage |
| Runbooks | observability.view, observability.manage (runbooks live under the observability permission family) |
The PAT is single-tenant — its bound tenant must equal SCIPLE_TENANT_ID. Calls against a different tenant return 403.
Wire into Claude Desktop / Claude Code
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop) or your Claude Code MCP config:
{
"mcpServers": {
"sciple-platform": {
"command": "uvx",
"args": ["sciple-mcp"],
"env": {
"SCIPLE_API_URL": "http://localhost:8000/api/v1",
"SCIPLE_API_TOKEN": "sciple_pat_...",
"SCIPLE_TENANT_ID": "..."
}
}
}
}
Then restart Claude. You should see 26 platform tools available.
The Sciple dashboard also renders this exact JSON block — with
SCIPLE_API_URLandSCIPLE_TENANT_IDpre-filled from the running environment — inside the "How to use this token with Claude" panel on Profile → Access tokens. Generate a token there and copy the snippet directly.
Tools
Environments
| Tool | Description |
|---|---|
list_environments |
List all environments in the tenant (id, name, slug, group, default flag) |
create_environment |
Create an environment with optional group assignment and default flag |
update_environment |
Update an environment's name, description, group, or sort order |
delete_environment |
Delete an environment by id (irreversible) |
list_environment_groups |
List environment groups (id, name, slug, AWS account binding) |
create_environment_group |
Create an environment group with optional AWS account binding |
Services
| Tool | Description |
|---|---|
list_services |
List all services in the tenant catalog (id, name, slug) |
create_service |
Create a service in the catalog with kind, language, SCM provider, and repository |
update_service |
Update a service's metadata, lifecycle, owner, tags, links, or environment associations |
delete_service |
Delete a service from the catalog by id (irreversible) |
Observability
| Tool | Description |
|---|---|
list_dashboards |
List all observability dashboards in the tenant (id, name, panel count) |
get_dashboard |
Get a dashboard's name, description, and panel list |
create_dashboard |
Create a new dashboard with optional description |
update_dashboard |
Replace a dashboard's name and description (full PUT; name required) |
delete_dashboard |
Delete a dashboard and all its panels (irreversible) |
add_panel |
Add a panel to a dashboard with an optional PromQL or CloudWatch Metrics query (mutually exclusive). Log panels (logs/log_table types) are accepted but the API doesn't yet carry log-query content — author those in the UI. |
delete_panel |
Delete a panel from a dashboard (irreversible) |
Runbooks
| Tool | Description |
|---|---|
list_runbooks |
List all runbooks in the tenant with lifecycle status and cell count |
get_runbook |
Get a runbook with its cells (name, status, content preview per cell) |
create_runbook |
Create a new runbook in draft status |
add_cell |
Add a markdown / shell / http cell to a runbook with optional k8s/ecs/ec2 target |
update_cell |
Update a cell's content or execution target |
delete_cell |
Remove a cell from a runbook |
reorder_cells |
Set the execution order of all cells in a runbook |
promote_runbook |
Advance the runbook lifecycle: draft → reviewed → standard |
deprecate_runbook |
Mark a runbook as deprecated |
Runbook lifecycle: draft → reviewed → standard. Deprecation is one-way from any state.
Security
The server can only do what the PAT's scope allows. Attempts to write without the relevant manage permission return a 403 from the API and are surfaced as an error in Claude's response. The PAT is revocable at any time from Profile → Access tokens in the Sciple dashboard — revoking it immediately cuts off the server's access without any config change.
Development
To work on the server itself:
git clone https://github.com/navaganeshr/sciple-mcp
cd sciple-mcp
uv sync --all-groups
uv run python -m pytest -q
Releases are tag-driven via a GitHub Actions workflow using PyPI Trusted Publishing (OIDC). To cut a release:
- Bump
versioninpyproject.toml. - Commit, then
git tag vX.Y.Z && git push origin vX.Y.Z. - Approve the
pypienvironment deployment in the Actions UI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sciple_mcp-0.3.0.tar.gz.
File metadata
- Download URL: sciple_mcp-0.3.0.tar.gz
- Upload date:
- Size: 49.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b77ad50151daf2fb310f7d0cc3fdf89e8890ca701a4dc496578f1d47a5e06d0
|
|
| MD5 |
28b605c0d7d4c498df66212ab56611eb
|
|
| BLAKE2b-256 |
4e6eb8431a3fa3608803ecc5b45e514d047bb3283a4634a3684870d837c38bd9
|
Provenance
The following attestation bundles were made for sciple_mcp-0.3.0.tar.gz:
Publisher:
publish.yml on navaganeshr/sciple-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sciple_mcp-0.3.0.tar.gz -
Subject digest:
0b77ad50151daf2fb310f7d0cc3fdf89e8890ca701a4dc496578f1d47a5e06d0 - Sigstore transparency entry: 1845377899
- Sigstore integration time:
-
Permalink:
navaganeshr/sciple-mcp@cb47e6e3883218a5a3ff916e34fa18aa7e9eced2 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/navaganeshr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cb47e6e3883218a5a3ff916e34fa18aa7e9eced2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file sciple_mcp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: sciple_mcp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 15.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
582cb54c9b17685bcced93a1034a7c843d5136c795f3bc509d42a3e76387e9f0
|
|
| MD5 |
f7223710ddd6f0bcfe970daaaffe3d74
|
|
| BLAKE2b-256 |
854ffc9cc2687d8f883c67e1953ebafea5b127069753ff97c576db0fb0fd8560
|
Provenance
The following attestation bundles were made for sciple_mcp-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on navaganeshr/sciple-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sciple_mcp-0.3.0-py3-none-any.whl -
Subject digest:
582cb54c9b17685bcced93a1034a7c843d5136c795f3bc509d42a3e76387e9f0 - Sigstore transparency entry: 1845378057
- Sigstore integration time:
-
Permalink:
navaganeshr/sciple-mcp@cb47e6e3883218a5a3ff916e34fa18aa7e9eced2 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/navaganeshr
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@cb47e6e3883218a5a3ff916e34fa18aa7e9eced2 -
Trigger Event:
push
-
Statement type: