app.scfcontrolsplatform/mcp-server-scf
NPM · MCP-SERVER-SCF · SCANNED SEP 20
MCP server for the SCF Controls Platform — 187 tools for controls, evidence, risk, and TPRM.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to MarkAC007/mcp-server-scf). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 20095 tokens (~107/item across 187 items; 187 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management91
- Stability check failed: the tool surface changed between 2.1.0 and 3.4.2: 7 tool removals, 0 breaking changes, 59 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 15 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 187 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the app.scfcontrolsplatform/mcp-server-scf server?
app.scfcontrolsplatform/mcp-server-scf runs locally as an npm package, launched with npx -y mcp-server-scf. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · mcp-server-scf
claude mcp add app-scfcontrolsplatform-mcp-server-scf -- npx -y mcp-server-scf
{
"mcpServers": {
"app-scfcontrolsplatform-mcp-server-scf": {
"command": "npx",
"args": [
"-y",
"mcp-server-scf"
]
}
}
} {
"servers": {
"app-scfcontrolsplatform-mcp-server-scf": {
"command": "npx",
"args": [
"-y",
"mcp-server-scf"
]
}
}
} codex mcp add app-scfcontrolsplatform-mcp-server-scf -- npx -y mcp-server-scf
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"app-scfcontrolsplatform-mcp-server-scf": {
"type": "local",
"command": [
"npx",
"-y",
"mcp-server-scf"
],
"enabled": true
}
}
} openclaw mcp add app-scfcontrolsplatform-mcp-server-scf --command npx --arg -y --arg mcp-server-scf
mcp_servers:
app-scfcontrolsplatform-mcp-server-scf:
command: "npx"
args: ["-y", "mcp-server-scf"] {
"McpServers": {
"app-scfcontrolsplatform-mcp-server-scf": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"mcp-server-scf"
]
}
}
} assistant mcp add app-scfcontrolsplatform-mcp-server-scf -t stdio -c npx -a -y mcp-server-scf
{
"mcpServers": {
"app-scfcontrolsplatform-mcp-server-scf": {
"command": "npx",
"args": [
"-y",
"mcp-server-scf"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 88 to 91.
- 18 Sept 26 +1
- Package version: 2.0.1 → 3.4.2 functional
- 16 Sept 26 −3
- Stability: pass → fail ▼ security
- 15 Sept 26 +15
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- 14 Sept 26 −14
- Known CVEs: pass → unverified ▼ security
- Stability: 0.93 → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Schema quality: 13281 → 20095 ▼ functional
- Dependency health: 0.84 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Security disclosure: unverified → pass ▲ functional
- Package version: 3.0.0 → 3.4.2 functional
- Package version: 3.0.0 → 3.4.0 functional
- Package version: 3.0.0 → 3.2.0 functional
- 13 Sept 26 0
- Security disclosure: pass → unverified ▼ functional
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/mcp-server-scf@3.4.2
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | MarkAC007/mcp-server-scf |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/MarkAC007/mcp-server-scf/.github/workflows/auto-release.yml@refs/heads/main |
| Rekor log index | 2831944435 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:864b65ab73c8ad6895c0cb94a34e8e8c77fb60f3605ce4e019c1bb0382be5675b733fdd2f861d798f63a3acd72539efffeb70c25f95b3f0000fcfba33 |
Background: How many MCP packages publish verified provenance →
Dependencies 95 packages
| Packages resolved | 95 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
scf_preview_document ~76
Preview a document's assembled content as structured JSON (read — viewer role) — the merged result of generated and edited sections without rendering to a file.
| Name | Type | Req | Description |
|---|---|---|---|
| document_id | string | yes | Generated document UUID — obtain from scf_list_documents |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_refresh_stale_window_assessments ~69
Queue a fresh windowed AI assessment for every evidence item whose newest file postdates its last assessment (write — editor role). Capped per run; returns how many were queued.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_remove_custom_risk_control ~132
Unlink a scoped control from a custom risk (write — editor+ role). The control and risk both remain; only the mapping is removed.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| risk_code | string | yes | Custom risk code in R-ORG-N format (e.g., 'R-ORG-1') — obtain from scf_list_custom_risks |
| scf_id | string | yes | SCF control ID to unlink (e.g., 'AST-01') — obtain from scf_list_custom_risk_controls |
No output schema declared.
No examples provided.
scf_remove_engagement_auditor ~98
Revoke an auditor's access to one engagement (destructive write — admin role). Returns no content on success.
| Name | Type | Req | Description |
|---|---|---|---|
| auditor_id | string | yes | Engagement auditor record UUID — obtain from scf_list_engagement_auditors |
| engagement_id | string | yes | Audit engagement UUID — obtain from scf_list_engagements |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_remove_team_member ~91
Remove a user from a team (destructive write — admin role). The membership row is deleted; the audit trail keeps the history.
| Name | Type | Req | Description |
|---|---|---|---|
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| team_id | string | yes | Team UUID — obtain from scf_list_teams |
| user_id | string | yes | User UUID — obtain from scf_get_team |
No output schema declared.
No examples provided.
scf_resolve_document_section ~146
Resolve one section's merge state (write — editor role). keep_mine/take_generated settle a conflict; retire/keep dispose of a pending retirement. The wrong pair for the state returns 409.
| Name | Type | Req | Description |
|---|---|---|---|
| choice | string | yes | keep_mine / take_generated answer a conflict; retire / keep answer a pending retirement |
| document_id | string | yes | Generated document UUID — obtain from scf_list_documents |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| section_id | string | yes | Section identifier from the document detail (scf_get_document). May contain slashes — pass it exactly as returned, unescaped. |
No output schema declared.
No examples provided.
scf_respond_to_engagement_query ~115
Add a response to an auditor query (write — org member or assigned auditor). Posting a response moves an open query to answered. Returns the updated query with its full thread.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Response text |
| engagement_id | string | yes | Audit engagement UUID — obtain from scf_list_engagements |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| query_id | string | yes | Query UUID — obtain from scf_list_engagement_queries |
No output schema declared.
No examples provided.
scf_revalidate_evidence_file ~116
Re-run the validation engine against an evidence file (write — editor+ role). Checks catalog existence, content type, field coverage, freshness, storage. Returns the updated result.
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_id | string | yes | Evidence ID (e.g., 'ERL-IAM-001') — obtain from scf_list_evidence |
| file_id | string | yes | Evidence file UUID — obtain from scf_list_evidence_files |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_review_evidence_assessment ~182
Record a human decision on a file's current AI assessment (write — editor role). confirmed keeps the verdict; overridden needs a reason and at least one objective re-designation.
| Name | Type | Req | Description |
|---|---|---|---|
| ao_overrides | array | – | Objectives to re-designate — required (≥1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation |
| decision | string | yes | confirmed = AI verdict stands; overridden = you are changing it |
| evidence_id | string | yes | Catalog evidence ID the file belongs to, e.g. E-IAM-01 |
| file_id | string | yes | Evidence file UUID — obtain from scf_list_evidence_files |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| reason | string | – | Why the verdict is overridden — required when decision is overridden |
No output schema declared.
No examples provided.
scf_review_evidence_file ~130
Approve, reject or request revision on one uploaded file (write — editor role). Returns 410 where per-window review is enabled — use scf_review_window_assessment there.
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_id | string | yes | Catalog evidence ID the file belongs to, e.g. E-IAM-01 |
| file_id | string | yes | Evidence file UUID — obtain from scf_list_evidence_files |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| review_notes | string | – | Reviewer notes |
| review_status | string | yes | Review decision |
No output schema declared.
No examples provided.
scf_review_window_assessment ~113
Set the review state of a windowed evidence assessment (write — editor role): approved, rejected, needs_revision, or not_reviewed to revoke a prior decision.
| Name | Type | Req | Description |
|---|---|---|---|
| ewa_id | string | yes | Window assessment UUID — obtain from scf_list_window_assessments |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| review_notes | string | – | Reviewer notes |
| review_status | string | yes | Review state to set; not_reviewed revokes |
No output schema declared.
No examples provided.
scf_rollback_catalog_reconciliation ~105
Roll an applied reconciliation run back (destructive write — admin role). Asynchronous, and requires the typed confirmation string the run detail states.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_text | string | yes | The exact confirmation phrase the platform requires for this rollback |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| run_id | string | yes | Reconciliation run UUID — obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation |
No output schema declared.
No examples provided.
scf_rotate_webhook_secret ~82
Rotate the HMAC signing secret for a webhook endpoint (write — admin role). The old secret is invalidated immediately. Returns the new plaintext secret exactly once.
| Name | Type | Req | Description |
|---|---|---|---|
| endpoint_id | string | yes | Webhook endpoint UUID — obtain from scf_list_webhooks |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_scope_framework ~92
Bulk-scope every control mapped to a framework into the organization (write — editor+ role). Creates a scoped-control entry for each control in the framework.
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | yes | Framework slug to scope (e.g., 'nist-800-53-r5') — obtain from scf_list_frameworks |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_set_reconciliation_actions ~142
Record decisions for a reconciliation run (write — admin role). REPLACES the run's planned actions, so send the complete list. Each deprecated entity gets migrate, retain or retire_only.
| Name | Type | Req | Description |
|---|---|---|---|
| actions | array | yes | The complete set of planned actions for this run — partial lists overwrite the rest |
| confirmed_framework_ids | array | – | On a first reconciliation, the confirmed framework list this organization is scoping to |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| run_id | string | yes | Reconciliation run UUID — obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation |
No output schema declared.
No examples provided.
scf_transition_document ~119
Move a document through its lifecycle — draft to review, review to approved, approved to published (write — approving and publishing need admin). Valid targets are enforced by the platform.
| Name | Type | Req | Description |
|---|---|---|---|
| document_id | string | yes | Generated document UUID — obtain from scf_list_documents |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| reason | string | – | Free-text justification recorded on the transition |
| to_status | string | yes | Target lifecycle status (e.g. 'in_review', 'approved', 'published') |
No output schema declared.
No examples provided.
scf_trigger_evidence_assessment ~140
Queue an AI assessment of a single evidence file (write — editor+ role, async). Returns a pending record; poll scf_get_evidence_assessment until status is sufficient/partial/insufficient.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_source | string | – | Origin tag for the request (default on_demand) |
| evidence_id | string | yes | Evidence ID (e.g., 'ERL-IAM-001') — obtain from scf_list_evidence |
| file_id | string | yes | Evidence file UUID — obtain from scf_list_evidence_files |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_trigger_vendor_assessment ~190
Queue an AI vendor security assessment (write — editor+ role, async, HTTP 202). Replaces the deprecated DPSIA trigger. Returns assessment_id + job_id; poll scf_get_vendor_assessment_status.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_context | string | – | Free-text context, scope notes, or specific concerns to feed the assessor (max 5000 chars) |
| assessment_type | string | – | Assessment type: 'initial', 'annual', or 'adhoc' (default 'initial') |
| data_role | string | – | GDPR data role (default 'Processor') |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| services_used | string | – | Description of services the vendor provides, 1–2000 chars (auto-derived from the vendor record if omitted) |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
No output schema declared.
No examples provided.
scf_trigger_vendor_research ~117
Queue AI security research for a vendor (write — editor+ role, async). Checks HIBP breach data, NVD vulnerabilities, and public posture. Returns a task ID; poll scf_get_vendor_research.
| Name | Type | Req | Description |
|---|---|---|---|
| domain_override | string | – | Override the vendor's website domain used for research lookup (e.g., 'example.com') |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
No output schema declared.
No examples provided.
scf_trigger_window_assessment ~123
Queue a windowed AI assessment that scores every file in the evidence item's frequency window as one portfolio (write — editor+ role, async). Returns 422 if tracking or frequency is missing.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_source | string | – | Origin tag for the request (default on_demand) |
| evidence_id | string | yes | Evidence ID (e.g., 'E-IAM-01'). Tracking row with a frequency must exist — set via scf_update_evidence first |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_update_comment ~79
Edit a comment you authored (write — author only). Replaces the body and, if given, the mentions; the platform keeps the edit history.
| Name | Type | Req | Description |
|---|---|---|---|
| comment_id | string | yes | Comment UUID — obtain from scf_list_comments |
| content | string | yes | New comment body |
| mentions | array | – | User UUIDs to notify |
No output schema declared.
No examples provided.
scf_update_compensating_control ~160
Update a vendor compensating control (write — editor role). Only passed fields change: gap description, control text, effectiveness rating, risk-reduction notes.
| Name | Type | Req | Description |
|---|---|---|---|
| cc_id | string | yes | Compensating control UUID — obtain from scf_list_compensating_controls |
| compensating_control | string | – | The control that offsets the gap |
| effectiveness_rating | string | – | Effectiveness (default partial) |
| gap_description | string | – | The gap the control offsets |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| risk_reduction_notes | string | – | How much residual risk this removes |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
No output schema declared.
No examples provided.
scf_update_custom_risk ~145
Update a custom risk definition's metadata — title, description, category (write — editor+ role). Only provided fields are applied.
| Name | Type | Req | Description |
|---|---|---|---|
| category_color | string | – | New hex color for the category badge |
| category_name | string | – | New category label |
| description | string | – | New risk description |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| risk_code | string | yes | Custom risk code in R-ORG-N format (e.g., 'R-ORG-1') — obtain from scf_list_custom_risks |
| title | string | – | New risk title (max 100 chars) |
No output schema declared.
No examples provided.
scf_update_document_section ~130
Replace one section's content with a human edit (write — editor role). Tracked as a human layer, so a later regeneration reports a conflict instead of overwriting it silently.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Full replacement markdown body for this section |
| document_id | string | yes | Generated document UUID — obtain from scf_list_documents |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| section_id | string | yes | Section identifier from the document detail (scf_get_document). May contain slashes — pass it exactly as returned, unescaped. |
No output schema declared.
No examples provided.
scf_update_document_settings ~125
Enable or configure document generation (write — admin role). Generation stays blocked until the SCF licence is acknowledged, so the first call usually sets both enabled and acknowledge_licence.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_licence | boolean | – | Record acknowledgement of the SCF content licence — required once before generation is permitted |
| derivative_generators_enabled | boolean | – | Allow generators that derive content from other generated documents |
| enabled | boolean | – | Turn document generation on or off for this organization |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
No output schema declared.
No examples provided.
scf_update_engagement ~168
Update an engagement's name, frameworks, status or dates (write — editor role). Only passed fields change; status moves are caller-controlled: draft → active → under_review → closed.
| Name | Type | Req | Description |
|---|---|---|---|
| end_date | string | – | Fieldwork end date, ISO 8601 (YYYY-MM-DD) |
| engagement_id | string | yes | Audit engagement UUID — obtain from scf_list_engagements |
| frameworks | array | – | Replacement framework identifier list |
| name | string | – | New engagement name |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| start_date | string | – | Fieldwork start date, ISO 8601 (YYYY-MM-DD) |
| status | string | – | New engagement status: draft, active, under_review or closed |
No output schema declared.
No examples provided.
scf_update_engagement_query_status ~118
Move an auditor query through its lifecycle (write — org member or assigned auditor). Allowed: open → answered|closed, answered → open|closed, closed → open. Others are refused.
| Name | Type | Req | Description |
|---|---|---|---|
| engagement_id | string | yes | Audit engagement UUID — obtain from scf_list_engagements |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| query_id | string | yes | Query UUID — obtain from scf_list_engagement_queries |
| status | string | yes | Target query status |
No output schema declared.
No examples provided.
scf_update_evidence ~261
Upsert an evidence item's tracking fields (write — editor+ role). Creates the tracking row if missing. All body fields are optional; only provided fields are applied.
| Name | Type | Req | Description |
|---|---|---|---|
| collecting_system | string | – | Name of the tool or system that collects the evidence |
| comments | string | – | Free-text notes or context |
| evidence_id | string | yes | Catalog evidence ID (e.g., 'E-IAM-01') — obtain from scf_list_evidence or scf_list_evidence_catalog |
| frequency | string | – | Collection cadence: 'daily', 'weekly', 'monthly', 'quarterly', or 'annually' |
| is_tracked | boolean | – | Toggle active tracking for this item |
| maturity_level | string | – | Evidence maturity level L0–L5 (e.g., 'L3'); omitting never clears the stored value |
| method_of_collection | string | – | Collection approach: 'automated', 'manual', or 'hybrid' |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| owner | string | – | Person accountable for this evidence item |
| system_id | string | – | System UUID to link this evidence to — obtain from scf_list_systems |
No output schema declared.
No examples provided.
scf_update_evidence_task ~186
Update an evidence collection task (write — editor role). Only passed fields change: due date, status, type, priority, title, description, notes, assignee, owning team.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_user_id | string | – | Assignee user UUID — obtain from scf_list_members |
| completion_notes | string | – | Notes recorded on completion |
| description | string | – | What has to be collected and how |
| due_date | string | – | Due date, YYYY-MM-DD |
| owning_team_id | string | – | Team that owns the task — obtain from scf_list_teams |
| priority | string | – | Priority |
| status | string | – | Status |
| task_id | string | yes | Evidence task UUID — obtain from scf_list_evidence_tasks |
| task_type | string | – | Task type |
| title | string | – | Task title |
No output schema declared.
No examples provided.
scf_update_risk_assessment ~251
Update a scored risk by its code (write — editor role). Only passed fields change: inherent and residual likelihood/impact 1–5, treatment status and plan, due and review dates, owner, notes.
| Name | Type | Req | Description |
|---|---|---|---|
| impact | integer | – | Inherent impact on a 1–5 scale |
| likelihood | integer | – | Inherent likelihood on a 1–5 scale |
| next_review_date | string | – | YYYY-MM-DD |
| notes | string | – | Free-text notes on this risk assessment |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| owner_user_id | string | – | Risk owner — obtain from scf_list_members |
| residual_impact | integer | – | Residual impact after treatment, 1–5 scale |
| residual_likelihood | integer | – | Residual likelihood after treatment, 1–5 scale |
| risk_code | string | yes | Risk code — catalog R-XX-N or custom R-ORG-N |
| treatment_due_date | string | – | YYYY-MM-DD |
| treatment_plan | string | – | How the risk is being treated |
| treatment_status | string | – | Treatment lifecycle state |
No output schema declared.
No examples provided.
scf_update_scoped_control ~303
Update a scoped control's implementation fields (write — editor+ role). Identify by scf_id, not UUID. Only provided fields are applied.
| Name | Type | Req | Description |
|---|---|---|---|
| assigned_to | string | – | Assignee responsible for implementation |
| completion_date | string | – | Actual completion date in ISO-8601 (YYYY-MM-DD) |
| implementation_notes | string | – | Free-text implementation notes and context |
| implementation_status | string | – | New implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, or deferred |
| maturity_level | string | – | Maturity level with L prefix: L0 Not Performed, L1 Performed, L2 Planned, L3 Well Defined, L4 Quantitatively Controlled, L5 Continuously Improving |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| owner | string | – | Accountable owner of the control |
| priority | string | – | Implementation priority: 'high', 'medium', or 'low' |
| scf_id | string | yes | SCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'GOV-02') — NOT the UUID |
| selection_reason | string | – | Justification for scoping decision — required for not_applicable or deferred |
| target_date | string | – | Target completion date in ISO-8601 (YYYY-MM-DD) |
No output schema declared.
No examples provided.
scf_update_system ~190
Update an existing system record (write — editor+ role). All fields are optional; only provided fields are applied.
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_template_id | integer | – | New system-catalog template ID link — obtain from scf_list_system_catalog |
| category | string | – | New free-text category |
| description | string | – | New system description |
| name | string | – | New system name |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| status | string | – | New lifecycle status |
| system_id | string | yes | System UUID to update — obtain from scf_list_systems |
| system_type | string | – | New system classification |
| vendor | string | – | New legacy free-text vendor name (prefer vendor_id) |
| vendor_id | string | – | New structural vendor link (UUID, same org) — obtain from scf_list_vendors |
No output schema declared.
No examples provided.
scf_update_system_capability ~171
Update a system's evidence capability (write — editor role). Only passed fields change; move status potential → configured → active as the collector is wired up.
| Name | Type | Req | Description |
|---|---|---|---|
| capability_id | string | yes | Capability UUID — obtain from scf_list_system_capabilities |
| capability_status | string | – | Capability status |
| collection_method | string | – | How the evidence is collected |
| confidence_level | string | – | Confidence in evidence quality |
| data_format | string | – | Format of the collected data, e.g. 'csv', 'json', 'pdf' |
| notes | string | – | Free-text notes about the capability |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| system_id | string | yes | System UUID — obtain from scf_list_systems |
No output schema declared.
No examples provided.
scf_update_team ~143
Update a team's name, description, function alignment or active flag (write — admin role). Set is_active=false to archive; the row is never deleted.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | New description |
| function_id | string | – | New primary business function — obtain from scf_list_functions |
| function_ids | array | – | Replacement set of additional functions the team serves |
| is_active | boolean | – | false archives the team |
| name | string | – | New team name |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| team_id | string | yes | Team UUID — obtain from scf_list_teams |
No output schema declared.
No examples provided.
scf_update_vendor ~139
Update an existing vendor record (write — editor+ role). Only provided fields are applied.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | New category label |
| contact_email | string | – | New primary contact email |
| criticality | string | – | New criticality tier |
| description | string | – | New free-text description |
| name | string | – | New vendor name |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| status | string | – | New lifecycle status |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
| website | string | – | New website URL |
No output schema declared.
No examples provided.
scf_update_vendor_action_item ~200
Update a vendor action item (write — editor role). Only passed fields change; set status=completed with completed_date to close it.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Free-text category, e.g. 'contractual', 'technical' |
| completed_date | string | – | YYYY-MM-DD |
| description | string | – | Action item detail |
| due_date | string | – | YYYY-MM-DD |
| item_id | string | yes | Action item UUID — obtain from scf_list_vendor_action_items |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| owner_name | string | – | Owner name |
| owner_user_id | string | – | Owner — obtain from scf_list_members |
| priority | string | – | Priority |
| status | string | – | Status |
| title | string | – | Action item title |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
No output schema declared.
No examples provided.
scf_update_vendor_certification ~194
Update a vendor certification (write — editor role). Only passed fields change; use it to mark a certificate expired or revoked, or to record the renewed expiry date.
| Name | Type | Req | Description |
|---|---|---|---|
| cert_id | string | yes | Certification UUID — obtain from scf_list_vendor_certifications |
| certificate_number | string | – | Certificate number |
| certification_body | string | – | Issuing body |
| certification_name | string | – | Certification name, e.g. 'ISO 27001:2022' |
| expiry_date | string | – | YYYY-MM-DD |
| issue_date | string | – | YYYY-MM-DD |
| org_id | string | yes | Organization UUID — obtain from scf_list_organizations |
| scope | string | – | Certification scope statement |
| status | string | – | Status |
| vendor_id | string | yes | Vendor UUID — obtain from scf_list_vendors |
| verification_url | string | – | Public verification URL |
No output schema declared.
No examples provided.
What is the app.scfcontrolsplatform/mcp-server-scf server?
app.scfcontrolsplatform/mcp-server-scf is listed in the public MCP registry as app.scfcontrolsplatform/mcp-server-scf. MCP server for the SCF Controls Platform, 187 tools for controls, evidence, risk, and TPRM. This page covers its npm package (mcp-server-scf).
Is the app.scfcontrolsplatform/mcp-server-scf server safe to use?
app.scfcontrolsplatform/mcp-server-scf scores 95 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the app.scfcontrolsplatform/mcp-server-scf server expose?
app.scfcontrolsplatform/mcp-server-scf exposes 187 tools: scf_list_controls, scf_get_control, scf_list_frameworks, scf_list_domains, scf_list_evidence_catalog, and 182 more. Their descriptions and schemas cost roughly 20,095 tokens of context every time the server is loaded.
Is the app.scfcontrolsplatform/mcp-server-scf server still maintained?
app.scfcontrolsplatform/mcp-server-scf is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the app.scfcontrolsplatform/mcp-server-scf server under?
app.scfcontrolsplatform/mcp-server-scf declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.