v0.3.0
datacenter-mcp-core
Minor Changes
7ac1a1fThanks @MrRefactoring! - Lift the HTTP client core intodatacenter-mcp-coreso every product package shares one implementation.createHttpClient, theroutetagged-template URL builder,pickBody,bindGroup,ApiError, and the client interfaces (HttpClient,SendRequestOptions,HttpClientConfig, …) now live in and are exported from core; a newresponseType: 'arraybuffer'mode returns the raw bytes for binary downloads, and a newsoftValidationconfig flag validates responses non-fatally (a schema mismatch logs a warning and passes the raw body through instead of throwing) for clients whose schemas aren't yet fully verified against a live instance. Response parsing also tolerates an empty body on a 200/201 that still advertises a JSONContent-Type(some mutation endpoints answer this way), returningundefinedinstead of throwing onJSON.parse(''). The Bitbucket client drops its local copies and imports these from core, with no change to its behavior or exposed tools.
Patch Changes
-
9126faaThanks @MrRefactoring! - Make everyindex.tsa pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves fromsrc/index.tstosrc/server.ts(imported by therun.tsbin dispatcher and the start/dev/inspect scripts), andsrc/index.tsbecomes a barrel over the service, config, and mappers. In core, thecreateMcpServer/connectServer/formatToolResponseruntime moves tosrc/server.tsandindex.tsre-exports it, so thedatacenter-mcp-corepublic API is unchanged. No change to thenpx <product>-datacenter-mcp [setup]command or server behavior. -
d220a9eThanks @MrRefactoring! - Improve npm discoverability: mention Claude/AI assistants in package descriptions and add search keywords (mcp-server, claude, claude-desktop, anthropic, ai, llm, and product-specific aliases like jira-server/confluence-server/bitbucket-server).
jira-datacenter-mcp
Minor Changes
-
868ed80Thanks @MrRefactoring! - Add a first-class named-profile concept for managing more than one instance of the same product.setup --profile <name>reads/writes a distinct home file (<product>.<profile>.env) and Keychain account (<product>-<profile>-token/-password) instead of the default unsuffixed ones; setATLASSIAN_DC_MCP_PROFILE=<name>when launching the server to read that profile back.process.envandATLASSIAN_DC_MCP_CONFIG_FILEare unaffected and still take priority, as before. -
5b39442Thanks @MrRefactoring! - Add Jira application properties tools: jira_getApplicationProperty, jira_getAdvancedSettings, and jira_setApplicationProperty for reading and updating global application properties / advanced settings. The set operation calls the endpoint directly since the generated client'ssetPropertyViaRestfulTableomits the request body the REST API requires. -
c6046bfThanks @MrRefactoring! - Add jira_getAttachmentContent to download an attachment's raw content as base64, fixing the previous metadata-only round trip. -
520ddfdThanks @MrRefactoring! - Add Basic auth (username/password) support to jira-datacenter-mcp as an alternative to the API token, with Keychain-backed password storage on macOS. -
41096e8Thanks @MrRefactoring! - Add Jira Data Center cluster, index snapshot, and reindex admin tools (20 new tools): cluster node listing/deletion/offline/index-snapshot-request plus zero-downtime upgrade approve/cancel/retry/start/state from ClusterService; issue index summary from IndexService; index snapshot list/create/status from IndexSnapshotService; and reindex info/start/per-issue/progress/pending-requests from ReindexService. -
6c97099Thanks @MrRefactoring! - Add Jira instance metadata read tools:jira_get_configuration(which optional features — voting, watching, sub-tasks, time tracking, attachments, issue linking — are enabled, with the time-tracking configuration),jira_get_status_categories/jira_get_status_category(the To Do / In Progress / Done grouping behind statuses), andjira_get_issue_picker_suggestions(issue suggestions matching a query and/or JQL, e.g. for building a picker). -
284dab2Thanks @MrRefactoring! - Add Jira email template management tools (download/upload/apply/reset to default/list types) and session & WebSudo tools (get current session, create/delete a session, release an elevated-permission WebSudo session). 9 new tools total. -
eacc93eThanks @MrRefactoring! - Add Jira entity property tools for issues, projects, and comments: get property keys, get a property, set a property, and delete a property, for each of the three entity types (12 new tools total). -
a87fe31Thanks @MrRefactoring! - Add Jira filter-sharing tools:jira_get_filter_share_permissions,jira_get_filter_share_permission,jira_add_filter_share_permission(share a saved filter with a group, project, project role, all logged-in users, or globally), andjira_delete_filter_share_permission, plusjira_get_default_share_scope/jira_set_default_share_scopefor the current user's default share scope for new filters and dashboards. -
d6e8187Thanks @MrRefactoring! - Add Jira issue lifecycle tools: restoreIssue (undo an archive), notifyIssue (send a manual email notification to reporter/assignee/watchers/voters/users/groups), setCommentPinned (pin/unpin a comment), and getPinnedComments. -
0cd9b9fThanks @MrRefactoring! - Add Jira issue-navigator column tools:jira_get_my_columns/jira_set_my_columns/jira_reset_my_columnsfor a user's own columns (defaulting to the current user), andjira_get_default_columns/jira_set_default_columnsfor the system default columns. The set operations use the endpoints' repeatedcolumnsform-field encoding rather than JSON. -
a31cb9aThanks @MrRefactoring! - Add Jira project lifecycle tools: createProject, updateProject, deleteProject, archiveProject, and restoreProject. -
ac27a9aThanks @MrRefactoring! - Add Jira remote issue link tools: getRemoteIssueLinks, getRemoteIssueLink, createOrUpdateRemoteIssueLink, updateRemoteIssueLink, deleteRemoteIssueLink, and deleteRemoteIssueLinkByGlobalId, for linking issues to Confluence pages or other external URLs. -
0a48e95Thanks @MrRefactoring! - Add jira_getServerInfo (server version, build number, deployment type) and jira_validateLicense (validate a license string against the current installation). The generated client has no endpoint for reading the currently installed license; validateLicense is the only license-related surface it exposes. -
892f36dThanks @MrRefactoring! - Add Jira webhook tools:jira_get_webhooks,jira_get_webhook,jira_create_webhook(subscribe a URL to Jira events, optionally filtered by JQL),jira_update_webhook, andjira_delete_webhook, wrapping the/rest/webhooks/1.0/plugin API. Note: unlike the platform REST API, the webhook endpoints do not accept personal access tokens — they require Basic auth (username/password) or a session — so these tools work only when the server is configured with Basic auth. Responses are validated softly (schema mismatches log and pass through rather than failing). -
f0f610cThanks @MrRefactoring! - Add Jira workflow scheme write tools: createWorkflowScheme, updateWorkflowScheme, deleteWorkflowScheme, setWorkflowSchemeIssueTypeMapping, deleteWorkflowSchemeIssueTypeMapping, setWorkflowSchemeWorkflowMapping, and deleteWorkflowSchemeWorkflowMapping. -
c687632Thanks @MrRefactoring! - Add Jira bulk worklog sync tools: getWorklogsDeletedSince, getWorklogsModifiedSince, and getWorklogsForIds, for polling worklog changes across the whole instance without walking every issue. -
0854b17Thanks @MrRefactoring! - Add MCP resources and prompts, the two protocol capabilities that were previously unused (only tools were registered).Resources — entities addressable by URI instead of only via a tool call:
jira://issue/{issueKey}confluence://page/{pageId}bitbucket://repo/{projectKey}/{repositorySlug}andbitbucket://pr/{projectKey}/{repositorySlug}/{pullRequestId}
Prompts — reusable templates for common workflows:
jira_triageIssue— triage an issue and recommend a priority/assignee/transition.confluence_buildCqlQuery— turn a natural-language request into a CQL query.bitbucket_reviewPullRequest— guide a structured PR review with anchored inline comments.
-
756e60dThanks @MrRefactoring! - Automatically retry transient API failures (HTTP 429 and 5xx) with exponential backoff and jitter (up to 3 retries) before a tool call reports an error. 4xx client errors are never retried since they won't succeed on a retry. -
751b29cThanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from<product>_camelCaseto<product>_snake_casefor readability, e.g.bitbucket_getProjects→bitbucket_get_projects,jira_searchIssues→jira_search_issues,confluence_getContentChildrenByType→confluence_get_content_children_by_type. Tool behavior, input schemas, and descriptions are unchanged, but any client, script, or config that calls a tool by name must update to the new snake_case name. Prompt guidance text that references tool names was updated accordingly. Resource identifiers (already kebab-case, e.g.bitbucket-repository) are unchanged. -
6c385c1Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. SettingATLASSIAN_DC_MCP_HTTP_PORTto a positive integer starts the server on that port using Streamable HTTP (stateful, session-aware) instead of stdio, unblocking remote and multi-client deployments. Stdio remains the default when the env var is unset, so existing Claude Desktop configurations are unaffected. -
344d1b0Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's newlogger), replacing scatteredconsole.errorcalls. Every log line is one JSON object written to stderr — stdout stays exclusively reserved for the MCP JSON-RPC protocol stream on stdio, so this is safe on every transport. SetATLASSIAN_DC_MCP_LOG_LEVEL(debug/info/warn/error, defaultinfo) to control verbosity.
Patch Changes
-
59f822eThanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-writtenbin/run.jsdispatcher becomessrc/run.ts, compiled todist/run.jsby the normal build. Thebinfield now points atdist/run.jsand the publishedfilesno longer ship a separatebin/directory. No change to thenpx <product>-datacenter-mcp [setup]command or its behavior. -
9126faaThanks @MrRefactoring! - Make everyindex.tsa pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves fromsrc/index.tstosrc/server.ts(imported by therun.tsbin dispatcher and the start/dev/inspect scripts), andsrc/index.tsbecomes a barrel over the service, config, and mappers. In core, thecreateMcpServer/connectServer/formatToolResponseruntime moves tosrc/server.tsandindex.tsre-exports it, so thedatacenter-mcp-corepublic API is unchanged. No change to thenpx <product>-datacenter-mcp [setup]command or server behavior. -
7ac1a1fThanks @MrRefactoring! - Rewrite the internal Jira API client in a hand-written, trello.js-style shape (one function per endpoint, named parameters, resource-grouped namespaces, and a Zod schema per model) in place of the generated OpenAPI client, reusing the shared HTTP client fromdatacenter-mcp-core. No change to the exposed tools or their behavior; the generated static service classes, the mutableOpenAPIsingleton,CancelablePromise, and the__requestplumbing are gone. Service calls now read asclient.<group>.<verb>({named})with clean method names (nosearch1/getProperty3suffixes), and binary downloads (attachment content, email templates) stream through the client's arraybuffer mode.The response Zod schemas were then verified endpoint-by-endpoint against a live Jira Data Center instance (an authenticated read + write crawl covering ~215 endpoints), correcting a batch of generated-spec inaccuracies: list endpoints typed as a single object (now arrays — e.g.
findUsers,getAllTabs,getWorkflow,getAssociatedProjects, application roles, project categories), fields Jira returns asnullrather than omitting (now.nullish()—IssueBean/SearchResultsBeannames/schema/expand/fields, …), entity/project property values (arbitrary JSON, notstring), the overloadedapplication-propertiesshape (single object withkey, array without), and the agile epic/board issue endpoints (a search-results envelope, not a bare issue). Primitive request bodies (watcher username, user preference, license string, issue/comment property values) now sendapplication/json, and the client sendsX-Atlassian-Token: no-checkso XSRF-protected bodyless mutations succeed. -
d8e142bThanks @MrRefactoring! - Add apaginateAllhelper to the shared core package for auto-paginating naturally small, bounded startAt-paged endpoints (e.g. a project's versions, a page's labels) inside a service method, so future list tools can return one fully-assembled list instead of requiring the caller to hand-roll a startAt loop. Open-ended search endpoints (JQL/CQL, repository listings) are intentionally excluded from this pattern and remain single-page and agent-driven. -
15b2bb0Thanks @MrRefactoring! - Replace the deprecatedserver.tool(name, description, schema, handler)calls with the currentserver.registerTool(name, { description, inputSchema }, handler)MCP SDK API, matching theregisterResource/registerPromptstyle already in use. No change to tool names, schemas, or behavior. -
d220a9eThanks @MrRefactoring! - Improve npm discoverability: mention Claude/AI assistants in package descriptions and add search keywords (mcp-server, claude, claude-desktop, anthropic, ai, llm, and product-specific aliases like jira-server/confluence-server/bitbucket-server). -
53966c2Thanks @MrRefactoring! - Split each server's monolithicserver.tsinto per-resource/domain tool modules undersrc/tools/, each exporting aregister<Group>Tools(server, service)function;server.tsis now a thin orchestrator (config, service,createMcpServer, register calls,connectServer). Resources and prompts move tosrc/resources.tsandsrc/prompts.ts, and the shared instance-type description constant tosrc/constants.ts. Tool registration order is regrouped but the full tool set and behavior are unchanged. -
Updated dependencies [
7ac1a1f,9126faa,d220a9e]:- datacenter-mcp-core@0.3.0
confluence-datacenter-mcp
Minor Changes
-
#7
61adb53Thanks @MrRefactoring! - Add Confluence attachment CRUD tools: get/create/update/move/delete attachments with full lifecycle management (metadata, data, versioning). -
868ed80Thanks @MrRefactoring! - Add a first-class named-profile concept for managing more than one instance of the same product.setup --profile <name>reads/writes a distinct home file (<product>.<profile>.env) and Keychain account (<product>-<profile>-token/-password) instead of the default unsuffixed ones; setATLASSIAN_DC_MCP_PROFILE=<name>when launching the server to read that profile back.process.envandATLASSIAN_DC_MCP_CONFIG_FILEare unaffected and still take priority, as before. -
8f44f96Thanks @MrRefactoring! - Add confluence_triggerSiteBackup, confluence_getBackupRestoreJob, confluence_findBackupRestoreJobs and confluence_getInstanceMetrics, wrapping the generated BackupAndRestoreService and InstanceMetricsService. Scope is deliberately limited to triggering a site backup and querying job/instance status; the generated client's restore, file-upload, job-cancellation and file-listing operations are not wrapped as they're out of scope for this niche admin surface. -
520ddfdThanks @MrRefactoring! - Add Basic auth (username/password) support to confluence-datacenter-mcp as an alternative to the API token, with Keychain-backed password storage on macOS. -
eaca104Thanks @MrRefactoring! - Add Confluence content blueprint (template) draft-publishing tools: publish a shared or legacy draft created from a blueprint into live content. The generated client has no separate template list/get/create endpoints; this wraps the only blueprint-related surface it exposes. -
e727bd6Thanks @MrRefactoring! - Add confluence_convertContentBody, wrapping ContentBodyService to convert a content body between representations (e.g. storage to view/export_view/styled_view/editor, or editor back to storage). -
085ce61Thanks @MrRefactoring! - Add confluence_getClusterNodes, wrapping the generated ClusterInformationService to list the status of each node in a Confluence Data Center cluster. -
#5
1ed0c25Thanks @MrRefactoring! - Build out Confluence content-lifecycle and space coverage: the MCP server grows from 5 to 42 tools. New tools cover content delete/history, children & descendants, labels, properties, restrictions and watchers; attachment read/remove; space CRUD, content listing, archive/restore and space properties. -
bfa4e4bThanks @MrRefactoring! - Add confluence_getLongRunningTask and confluence_getLongRunningTasks, wrapping the generated LongTaskService to inspect the status of Confluence's asynchronous background tasks (e.g. space export, reindex progress). -
312f077Thanks @MrRefactoring! - Add confluence_getServerInfo, wrapping the generated ServerInformationService to report the application build/version running on the target Confluence Data Center instance. -
a69cac1Thanks @MrRefactoring! - Add Confluence space permissions tools: get all/anonymous/group/user permissions on a space, set the full permission set for up to 40 subjects, and grant/revoke individual operations for the anonymous user, a group, or a user. -
23569efThanks @MrRefactoring! - Add Confluence users and groups tools, previously entirely unconnected: self-service user lookup/profile/password tools, group and group-membership read tools, and system-administrator user/group lifecycle tools (create/update/delete/enable/disable users, create/delete groups, list active users). -
980d84bThanks @MrRefactoring! - Add Confluence webhook tools: find/create/get/update/delete webhooks, plus invocation history, statistics, and connectivity testing. All operations require administrator permission on the Confluence Data Center instance. -
0854b17Thanks @MrRefactoring! - Add MCP resources and prompts, the two protocol capabilities that were previously unused (only tools were registered).Resources — entities addressable by URI instead of only via a tool call:
jira://issue/{issueKey}confluence://page/{pageId}bitbucket://repo/{projectKey}/{repositorySlug}andbitbucket://pr/{projectKey}/{repositorySlug}/{pullRequestId}
Prompts — reusable templates for common workflows:
jira_triageIssue— triage an issue and recommend a priority/assignee/transition.confluence_buildCqlQuery— turn a natural-language request into a CQL query.bitbucket_reviewPullRequest— guide a structured PR review with anchored inline comments.
-
756e60dThanks @MrRefactoring! - Automatically retry transient API failures (HTTP 429 and 5xx) with exponential backoff and jitter (up to 3 retries) before a tool call reports an error. 4xx client errors are never retried since they won't succeed on a retry. -
751b29cThanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from<product>_camelCaseto<product>_snake_casefor readability, e.g.bitbucket_getProjects→bitbucket_get_projects,jira_searchIssues→jira_search_issues,confluence_getContentChildrenByType→confluence_get_content_children_by_type. Tool behavior, input schemas, and descriptions are unchanged, but any client, script, or config that calls a tool by name must update to the new snake_case name. Prompt guidance text that references tool names was updated accordingly. Resource identifiers (already kebab-case, e.g.bitbucket-repository) are unchanged. -
6c385c1Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. SettingATLASSIAN_DC_MCP_HTTP_PORTto a positive integer starts the server on that port using Streamable HTTP (stateful, session-aware) instead of stdio, unblocking remote and multi-client deployments. Stdio remains the default when the env var is unset, so existing Claude Desktop configurations are unaffected. -
344d1b0Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's newlogger), replacing scatteredconsole.errorcalls. Every log line is one JSON object written to stderr — stdout stays exclusively reserved for the MCP JSON-RPC protocol stream on stdio, so this is safe on every transport. SetATLASSIAN_DC_MCP_LOG_LEVEL(debug/info/warn/error, defaultinfo) to control verbosity.
Patch Changes
-
59f822eThanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-writtenbin/run.jsdispatcher becomessrc/run.ts, compiled todist/run.jsby the normal build. Thebinfield now points atdist/run.jsand the publishedfilesno longer ship a separatebin/directory. No change to thenpx <product>-datacenter-mcp [setup]command or its behavior. -
9126faaThanks @MrRefactoring! - Make everyindex.tsa pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves fromsrc/index.tstosrc/server.ts(imported by therun.tsbin dispatcher and the start/dev/inspect scripts), andsrc/index.tsbecomes a barrel over the service, config, and mappers. In core, thecreateMcpServer/connectServer/formatToolResponseruntime moves tosrc/server.tsandindex.tsre-exports it, so thedatacenter-mcp-corepublic API is unchanged. No change to thenpx <product>-datacenter-mcp [setup]command or server behavior. -
d8e142bThanks @MrRefactoring! - Add apaginateAllhelper to the shared core package for auto-paginating naturally small, bounded startAt-paged endpoints (e.g. a project's versions, a page's labels) inside a service method, so future list tools can return one fully-assembled list instead of requiring the caller to hand-roll a startAt loop. Open-ended search endpoints (JQL/CQL, repository listings) are intentionally excluded from this pattern and remain single-page and agent-driven. -
15b2bb0Thanks @MrRefactoring! - Replace the deprecatedserver.tool(name, description, schema, handler)calls with the currentserver.registerTool(name, { description, inputSchema }, handler)MCP SDK API, matching theregisterResource/registerPromptstyle already in use. No change to tool names, schemas, or behavior. -
d220a9eThanks @MrRefactoring! - Improve npm discoverability: mention Claude/AI assistants in package descriptions and add search keywords (mcp-server, claude, claude-desktop, anthropic, ai, llm, and product-specific aliases like jira-server/confluence-server/bitbucket-server). -
53966c2Thanks @MrRefactoring! - Split each server's monolithicserver.tsinto per-resource/domain tool modules undersrc/tools/, each exporting aregister<Group>Tools(server, service)function;server.tsis now a thin orchestrator (config, service,createMcpServer, register calls,connectServer). Resources and prompts move tosrc/resources.tsandsrc/prompts.ts, and the shared instance-type description constant tosrc/constants.ts. Tool registration order is regrouped but the full tool set and behavior are unchanged. -
Updated dependencies [
7ac1a1f,9126faa,d220a9e]:- datacenter-mcp-core@0.3.0
bitbucket-datacenter-mcp
Minor Changes
-
#7
61adb53Thanks @MrRefactoring! - Add comprehensive Bitbucket Track B tools: HTTP access token (PAT) management; SSH and GPG key lifecycle; project and repository permission controls; repository settings (default branch, PR settings, hooks); and branch model configuration. -
520ddfdThanks @MrRefactoring! - Add Basic auth (username/password) support to bitbucket-datacenter-mcp as an alternative to the API token, with Keychain-backed password storage on macOS. -
983d08aThanks @MrRefactoring! - Add bitbucket_getPullRequestParticipants to list everyone who has interacted with a pull request (author, reviewers, and anyone who has commented or approved), distinct from the existing reviewer-management tools which only cover explicitly requested reviewers. -
95d8f00Thanks @MrRefactoring! - Add repository-level auto-decline and auto-merge settings tools (get/set/delete for each), covering two pull-request-lifecycle settings blocks not previously exposed alongside the existing pull request settings, branch restrictions, and hooks tools. -
bddd013Thanks @MrRefactoring! - Add bitbucket_getRepositoryForks to list the direct forks of a repository, complementing the existing bitbucket_forkRepository create tool. -
868ed80Thanks @MrRefactoring! - Add a first-class named-profile concept for managing more than one instance of the same product.setup --profile <name>reads/writes a distinct home file (<product>.<profile>.env) and Keychain account (<product>-<profile>-token/-password) instead of the default unsuffixed ones; setATLASSIAN_DC_MCP_PROFILE=<name>when launching the server to read that profile back.process.envandATLASSIAN_DC_MCP_CONFIG_FILEare unaffected and still take priority, as before. -
0854b17Thanks @MrRefactoring! - Add MCP resources and prompts, the two protocol capabilities that were previously unused (only tools were registered).Resources — entities addressable by URI instead of only via a tool call:
jira://issue/{issueKey}confluence://page/{pageId}bitbucket://repo/{projectKey}/{repositorySlug}andbitbucket://pr/{projectKey}/{repositorySlug}/{pullRequestId}
Prompts — reusable templates for common workflows:
jira_triageIssue— triage an issue and recommend a priority/assignee/transition.confluence_buildCqlQuery— turn a natural-language request into a CQL query.bitbucket_reviewPullRequest— guide a structured PR review with anchored inline comments.
-
756e60dThanks @MrRefactoring! - Automatically retry transient API failures (HTTP 429 and 5xx) with exponential backoff and jitter (up to 3 retries) before a tool call reports an error. 4xx client errors are never retried since they won't succeed on a retry. -
751b29cThanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from<product>_camelCaseto<product>_snake_casefor readability, e.g.bitbucket_getProjects→bitbucket_get_projects,jira_searchIssues→jira_search_issues,confluence_getContentChildrenByType→confluence_get_content_children_by_type. Tool behavior, input schemas, and descriptions are unchanged, but any client, script, or config that calls a tool by name must update to the new snake_case name. Prompt guidance text that references tool names was updated accordingly. Resource identifiers (already kebab-case, e.g.bitbucket-repository) are unchanged. -
6c385c1Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. SettingATLASSIAN_DC_MCP_HTTP_PORTto a positive integer starts the server on that port using Streamable HTTP (stateful, session-aware) instead of stdio, unblocking remote and multi-client deployments. Stdio remains the default when the env var is unset, so existing Claude Desktop configurations are unaffected. -
344d1b0Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's newlogger), replacing scatteredconsole.errorcalls. Every log line is one JSON object written to stderr — stdout stays exclusively reserved for the MCP JSON-RPC protocol stream on stdio, so this is safe on every transport. SetATLASSIAN_DC_MCP_LOG_LEVEL(debug/info/warn/error, defaultinfo) to control verbosity.
Patch Changes
-
59f822eThanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-writtenbin/run.jsdispatcher becomessrc/run.ts, compiled todist/run.jsby the normal build. Thebinfield now points atdist/run.jsand the publishedfilesno longer ship a separatebin/directory. No change to thenpx <product>-datacenter-mcp [setup]command or its behavior. -
35a7b22Thanks @MrRefactoring! - Validate the optionalanchorfield when checking whether a raw API response is a well-formed pull request comment, closing a gap where a malformed anchor could silently produce a broken simplified anchor instead of being rejected. -
c5384e5Thanks @MrRefactoring! - Rewrite the internal Bitbucket API client in a hand-written, trello.js-style shape (one function per endpoint, named parameters, resource-grouped namespaces, and a Zod schema per model) in place of the generated OpenAPI client. No change to the exposed tools or their behavior; the generated static service classes, the mutableOpenAPIsingleton, andCancelablePromiseplumbing are gone, and response bodies are now runtime-validated against Zod schemas derived from real Bitbucket Data Center responses. -
7ac1a1fThanks @MrRefactoring! - Lift the HTTP client core intodatacenter-mcp-coreso every product package shares one implementation.createHttpClient, theroutetagged-template URL builder,pickBody,bindGroup,ApiError, and the client interfaces (HttpClient,SendRequestOptions,HttpClientConfig, …) now live in and are exported from core; a newresponseType: 'arraybuffer'mode returns the raw bytes for binary downloads, and a newsoftValidationconfig flag validates responses non-fatally (a schema mismatch logs a warning and passes the raw body through instead of throwing) for clients whose schemas aren't yet fully verified against a live instance. Response parsing also tolerates an empty body on a 200/201 that still advertises a JSONContent-Type(some mutation endpoints answer this way), returningundefinedinstead of throwing onJSON.parse(''). The Bitbucket client drops its local copies and imports these from core, with no change to its behavior or exposed tools. -
9126faaThanks @MrRefactoring! - Make everyindex.tsa pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves fromsrc/index.tstosrc/server.ts(imported by therun.tsbin dispatcher and the start/dev/inspect scripts), andsrc/index.tsbecomes a barrel over the service, config, and mappers. In core, thecreateMcpServer/connectServer/formatToolResponseruntime moves tosrc/server.tsandindex.tsre-exports it, so thedatacenter-mcp-corepublic API is unchanged. No change to thenpx <product>-datacenter-mcp [setup]command or server behavior. -
d8e142bThanks @MrRefactoring! - Add apaginateAllhelper to the shared core package for auto-paginating naturally small, bounded startAt-paged endpoints (e.g. a project's versions, a page's labels) inside a service method, so future list tools can return one fully-assembled list instead of requiring the caller to hand-roll a startAt loop. Open-ended search endpoints (JQL/CQL, repository listings) are intentionally excluded from this pattern and remain single-page and agent-driven. -
15b2bb0Thanks @MrRefactoring! - Replace the deprecatedserver.tool(name, description, schema, handler)calls with the currentserver.registerTool(name, { description, inputSchema }, handler)MCP SDK API, matching theregisterResource/registerPromptstyle already in use. No change to tool names, schemas, or behavior. -
d220a9eThanks @MrRefactoring! - Improve npm discoverability: mention Claude/AI assistants in package descriptions and add search keywords (mcp-server, claude, claude-desktop, anthropic, ai, llm, and product-specific aliases like jira-server/confluence-server/bitbucket-server). -
53966c2Thanks @MrRefactoring! - Split each server's monolithicserver.tsinto per-resource/domain tool modules undersrc/tools/, each exporting aregister<Group>Tools(server, service)function;server.tsis now a thin orchestrator (config, service,createMcpServer, register calls,connectServer). Resources and prompts move tosrc/resources.tsandsrc/prompts.ts, and the shared instance-type description constant tosrc/constants.ts. Tool registration order is regrouped but the full tool set and behavior are unchanged. -
Updated dependencies [
7ac1a1f,9126faa,d220a9e]:- datacenter-mcp-core@0.3.0