app.scfcontrolsplatform/mcp-server-scf
NPM · MCP-SERVER-SCF
MCP server for the SCF Controls Platform — 187 tools for controls, evidence, risk, and TPRM.
Available components
Last scanned (7 hours ago)
Scores higher than 94% of npm servers
Category Security
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
- 30 of 92 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 Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
Checks we ran (16)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
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.
- 4 Nov 26 −5
- Stability: pass → 0.63 functional
- 29 Oct 26 0
- Stability: 0.97 → pass security
- 28 Oct 26 0
- Stability: pass → 0.97 functional
- 22 Oct 26 0
- Stability: 0.97 → pass security
- 21 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 −1
- Stability: pass → 0.93 functional
- 17 Oct 26 +3
- Stability: 0.80 → pass security
- 16 Oct 26 +44
- Injection markers: unverified → pass ▲ security
- Stability: unverified → 0.80 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
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 5 Nov 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 | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:864b65ab73c8ad6895c0cb94a34e8e8c77fb60f3605ce4e019c1bb0382be5675b733fdd2f861d798f63a3acd72539efffeb70c25f95b3f0000fcfba33 |
Background: How many MCP packages publish verified provenance →
Dependencies 92 packages
| Packages resolved | 92 |
|---|---|
| Stale | 30 |
| 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.
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
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 91 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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 5 November 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.
What did VerifyMCP test on the app.scfcontrolsplatform/mcp-server-scf server?
VerifyMCP ran 16 checks on app.scfcontrolsplatform/mcp-server-scf, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.