DevOps Center tools query the unnamespaced data model only, failing on Managed Package orgs
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 68/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
Research direction
Start with shared/orgType.ts and the existing branches in sfDevopsDetectConflict.ts and sfDevopsResolveConflict.ts, then inspect the six affected tools and their helpers: sfDevopsListProjects.ts, getProjects.ts, sfDevopsPromoteWorkItem.ts, getWorkItems.ts, and the checkout, commit, and pull-request entry points. Compare their standard queries with getWorkItemsMP.ts, getPipelineMP.ts, and getPipelineStagesMP.ts, then run test/getWorkItemsMP.test.ts. Done means all affected tools handle managed-package objects without breaking standard-org behavior.
Written by the indexing model from the issue text.
Description
Summary
Six of the GA devops toolset tools query the unnamespaced DevOps Center data model (WorkItem, DevopsProject) with no Managed Package fallback. On an org running the DevOps Center managed package (namespace sf_devops__), these tools fail immediately with sObject type 'WorkItem' is not supported.
This looks unintended for two reasons:
- The README points Managed Package users at these tools — it links to Merge Conflict Resolution with DevOps Center MCP Tools (Managed Package).
- The package already has the detection helper and uses it correctly in two tools.
shared/orgType.tsexportsisManagedPackageDevopsOrg(), andsfDevopsDetectConflict.ts/sfDevopsResolveConflict.tsbranch on it to pickfetchWorkItemByNameMP()vsfetchWorkItemByName(). The other tools never call it.
The parallel MP implementations exist in the repo (getWorkItemsMP.ts, getPipelineMP.ts, getPipelineStagesMP.ts) and are covered by tests (test/getWorkItemsMP.test.ts) — they're simply not wired into most tool entry points.
Steps To Reproduce
- Authenticate against a production org with the DevOps Center managed package installed (namespace
sf_devops__), with work items and an active pipeline. - Configure the server scoped to the devops toolset:
{ "mcpServers": { "salesforce-dx": { "command": "npx", "args": [ "-y", "@salesforce/mcp@latest", "--orgs", "myOrgAlias", "--tools", "list_devops_center_projects,promote_devops_center_work_item" ] } } } - Invoke
list_devops_center_projectswith that org's alias. - Invoke
promote_devops_center_work_itemwith a valid work item name (e.g.WI-96271).
Expected result
Both tools operate against the managed package objects (sf_devops__Project__c, sf_devops__Work_Item__c, …), as detect_devops_center_merge_conflict already does on the same org.
Actual result
list_devops_center_projects:
Error fetching projects:
SELECT Id, Name, Description FROM DevopsProject
^
ERROR at Row:1:Column:35
sObject type 'DevopsProject' is not supported.
promote_devops_center_work_item:
Error fetching work items:
FROM WorkItem
^
ERROR at Row:16:Column:18
sObject type 'WorkItem' is not supported.
The managed package objects are present and queryable on the same org with the same authenticated user:
$ sf data query --query "SELECT Id FROM sf_devops__Work_Item__c LIMIT 5" --target-org myOrgAlias
Total number of records retrieved: 5.
Additional information
Root cause. The failing queries are unnamespaced and unconditional:
sfDevopsListProjects.ts→exec()inlinesSELECT Id, Name, Description FROM DevopsProject(also duplicated ingetProjects.ts::fetchProjects).sfDevopsPromoteWorkItem.ts→exec()callsfetchWorkItemsByNames()fromgetWorkItems.ts, which queriesFROM WorkItem.
Neither calls isManagedPackageDevopsOrg(). For contrast, sfDevopsDetectConflict.ts does exactly the right thing:
const isMP = await isManagedPackageDevopsOrg(connection);
if (isMP) {
// Some orgs expose MP objects but store active DevOps Center data in standard WorkItem.
// Prefer standard WorkItem when present; keep MP as fallback.
const mpWorkItem = await fetchWorkItemByNameMP(connection, effectiveWorkItemName);
...
} else {
workItem = await fetchWorkItemByName(connection, effectiveWorkItemName);
}
Affected tools (audit of packages/mcp-provider-devops/src/tools/, main):
| Tool | Queries unnamespaced | Has managed package branch | Works on managed package org |
|---|---|---|---|
list_devops_center_projects |
yes | no | ❌ |
list_devops_center_work_items |
yes | no | ❌ |
promote_devops_center_work_item |
yes | no | ❌ |
checkout_devops_center_work_item |
yes | no | ❌ |
commit_devops_center_work_item |
yes | no | ❌ |
create_devops_center_pull_request |
yes | no | ❌ |
detect_devops_center_merge_conflict |
yes | yes | ✅ |
resolve_devops_center_merge_conflict |
yes | yes | ✅ |
- Dominant language
- No language data
- Stars
- 1
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from forcedotcom/mcp
-
investigating
Difficulty 4/5 3-5 days Newbie friendliness 35/100
forcedotcom/mcp#43 · 1 comment ·
-
investigating
Difficulty 4/5 3-5 days Newbie friendliness 38/100
forcedotcom/mcp#42 · 1 comment ·
-
investigating
Difficulty 4/5 3-5 days Newbie friendliness 48/100
forcedotcom/mcp#41 · 2 comments ·
-
investigating
Difficulty 3/5 1-2 days Newbie friendliness 35/100
forcedotcom/mcp#35 · 2 comments · 2 reactions ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
forcedotcom/mcp#10 · 4 comments ·
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
rossoctl/context-guru#366 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
aws-samples/sample-pacer#76 ·
Maintainers usually reply within 1 day
-
UX
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
ProfessionalWiki/NeoWiki#1570 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100