Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 10:13
· 31 commits to master since this release

datacenter-mcp-core

Minor Changes

  • 7ac1a1f Thanks @MrRefactoring! - Lift the HTTP client core into datacenter-mcp-core so every product package shares one implementation. createHttpClient, the route tagged-template URL builder, pickBody, bindGroup, ApiError, and the client interfaces (HttpClient, SendRequestOptions, HttpClientConfig, …) now live in and are exported from core; a new responseType: 'arraybuffer' mode returns the raw bytes for binary downloads, and a new softValidation config 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 JSON Content-Type (some mutation endpoints answer this way), returning undefined instead of throwing on JSON.parse(''). The Bitbucket client drops its local copies and imports these from core, with no change to its behavior or exposed tools.

Patch Changes

  • 9126faa Thanks @MrRefactoring! - Make every index.ts a pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves from src/index.ts to src/server.ts (imported by the run.ts bin dispatcher and the start/dev/inspect scripts), and src/index.ts becomes a barrel over the service, config, and mappers. In core, the createMcpServer/connectServer/formatToolResponse runtime moves to src/server.ts and index.ts re-exports it, so the datacenter-mcp-core public API is unchanged. No change to the npx <product>-datacenter-mcp [setup] command or server behavior.

  • d220a9e Thanks @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

  • 868ed80 Thanks @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; set ATLASSIAN_DC_MCP_PROFILE=<name> when launching the server to read that profile back. process.env and ATLASSIAN_DC_MCP_CONFIG_FILE are unaffected and still take priority, as before.

  • 5b39442 Thanks @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's setPropertyViaRestfulTable omits the request body the REST API requires.

  • c6046bf Thanks @MrRefactoring! - Add jira_getAttachmentContent to download an attachment's raw content as base64, fixing the previous metadata-only round trip.

  • 520ddfd Thanks @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.

  • 41096e8 Thanks @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.

  • 6c97099 Thanks @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), and jira_get_issue_picker_suggestions (issue suggestions matching a query and/or JQL, e.g. for building a picker).

  • 284dab2 Thanks @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.

  • eacc93e Thanks @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).

  • a87fe31 Thanks @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), and jira_delete_filter_share_permission, plus jira_get_default_share_scope / jira_set_default_share_scope for the current user's default share scope for new filters and dashboards.

  • d6e8187 Thanks @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.

  • 0cd9b9f Thanks @MrRefactoring! - Add Jira issue-navigator column tools: jira_get_my_columns / jira_set_my_columns / jira_reset_my_columns for a user's own columns (defaulting to the current user), and jira_get_default_columns / jira_set_default_columns for the system default columns. The set operations use the endpoints' repeated columns form-field encoding rather than JSON.

  • a31cb9a Thanks @MrRefactoring! - Add Jira project lifecycle tools: createProject, updateProject, deleteProject, archiveProject, and restoreProject.

  • ac27a9a Thanks @MrRefactoring! - Add Jira remote issue link tools: getRemoteIssueLinks, getRemoteIssueLink, createOrUpdateRemoteIssueLink, updateRemoteIssueLink, deleteRemoteIssueLink, and deleteRemoteIssueLinkByGlobalId, for linking issues to Confluence pages or other external URLs.

  • 0a48e95 Thanks @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.

  • 892f36d Thanks @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, and jira_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).

  • f0f610c Thanks @MrRefactoring! - Add Jira workflow scheme write tools: createWorkflowScheme, updateWorkflowScheme, deleteWorkflowScheme, setWorkflowSchemeIssueTypeMapping, deleteWorkflowSchemeIssueTypeMapping, setWorkflowSchemeWorkflowMapping, and deleteWorkflowSchemeWorkflowMapping.

  • c687632 Thanks @MrRefactoring! - Add Jira bulk worklog sync tools: getWorklogsDeletedSince, getWorklogsModifiedSince, and getWorklogsForIds, for polling worklog changes across the whole instance without walking every issue.

  • 0854b17 Thanks @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} and bitbucket://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.
  • 756e60d Thanks @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.

  • 751b29c Thanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from <product>_camelCase to <product>_snake_case for readability, e.g. bitbucket_getProjectsbitbucket_get_projects, jira_searchIssuesjira_search_issues, confluence_getContentChildrenByTypeconfluence_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.

  • 6c385c1 Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. Setting ATLASSIAN_DC_MCP_HTTP_PORT to 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.

  • 344d1b0 Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's new logger), replacing scattered console.error calls. 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. Set ATLASSIAN_DC_MCP_LOG_LEVEL (debug/info/warn/error, default info) to control verbosity.

Patch Changes

  • 59f822e Thanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-written bin/run.js dispatcher becomes src/run.ts, compiled to dist/run.js by the normal build. The bin field now points at dist/run.js and the published files no longer ship a separate bin/ directory. No change to the npx <product>-datacenter-mcp [setup] command or its behavior.

  • 9126faa Thanks @MrRefactoring! - Make every index.ts a pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves from src/index.ts to src/server.ts (imported by the run.ts bin dispatcher and the start/dev/inspect scripts), and src/index.ts becomes a barrel over the service, config, and mappers. In core, the createMcpServer/connectServer/formatToolResponse runtime moves to src/server.ts and index.ts re-exports it, so the datacenter-mcp-core public API is unchanged. No change to the npx <product>-datacenter-mcp [setup] command or server behavior.

  • 7ac1a1f Thanks @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 from datacenter-mcp-core. No change to the exposed tools or their behavior; the generated static service classes, the mutable OpenAPI singleton, CancelablePromise, and the __request plumbing are gone. Service calls now read as client.<group>.<verb>({named}) with clean method names (no search1 / getProperty3 suffixes), 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 as null rather than omitting (now .nullish()IssueBean/SearchResultsBean names/schema/expand/fields, …), entity/project property values (arbitrary JSON, not string), the overloaded application-properties shape (single object with key, 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 send application/json, and the client sends X-Atlassian-Token: no-check so XSRF-protected bodyless mutations succeed.

  • d8e142b Thanks @MrRefactoring! - Add a paginateAll helper 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.

  • 15b2bb0 Thanks @MrRefactoring! - Replace the deprecated server.tool(name, description, schema, handler) calls with the current server.registerTool(name, { description, inputSchema }, handler) MCP SDK API, matching the registerResource/registerPrompt style already in use. No change to tool names, schemas, or behavior.

  • d220a9e Thanks @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).

  • 53966c2 Thanks @MrRefactoring! - Split each server's monolithic server.ts into per-resource/domain tool modules under src/tools/, each exporting a register<Group>Tools(server, service) function; server.ts is now a thin orchestrator (config, service, createMcpServer, register calls, connectServer). Resources and prompts move to src/resources.ts and src/prompts.ts, and the shared instance-type description constant to src/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 61adb53 Thanks @MrRefactoring! - Add Confluence attachment CRUD tools: get/create/update/move/delete attachments with full lifecycle management (metadata, data, versioning).

  • 868ed80 Thanks @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; set ATLASSIAN_DC_MCP_PROFILE=<name> when launching the server to read that profile back. process.env and ATLASSIAN_DC_MCP_CONFIG_FILE are unaffected and still take priority, as before.

  • 8f44f96 Thanks @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.

  • 520ddfd Thanks @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.

  • eaca104 Thanks @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.

  • e727bd6 Thanks @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).

  • 085ce61 Thanks @MrRefactoring! - Add confluence_getClusterNodes, wrapping the generated ClusterInformationService to list the status of each node in a Confluence Data Center cluster.

  • #5 1ed0c25 Thanks @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.

  • bfa4e4b Thanks @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).

  • 312f077 Thanks @MrRefactoring! - Add confluence_getServerInfo, wrapping the generated ServerInformationService to report the application build/version running on the target Confluence Data Center instance.

  • a69cac1 Thanks @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.

  • 23569ef Thanks @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).

  • 980d84b Thanks @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.

  • 0854b17 Thanks @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} and bitbucket://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.
  • 756e60d Thanks @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.

  • 751b29c Thanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from <product>_camelCase to <product>_snake_case for readability, e.g. bitbucket_getProjectsbitbucket_get_projects, jira_searchIssuesjira_search_issues, confluence_getContentChildrenByTypeconfluence_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.

  • 6c385c1 Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. Setting ATLASSIAN_DC_MCP_HTTP_PORT to 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.

  • 344d1b0 Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's new logger), replacing scattered console.error calls. 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. Set ATLASSIAN_DC_MCP_LOG_LEVEL (debug/info/warn/error, default info) to control verbosity.

Patch Changes

  • 59f822e Thanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-written bin/run.js dispatcher becomes src/run.ts, compiled to dist/run.js by the normal build. The bin field now points at dist/run.js and the published files no longer ship a separate bin/ directory. No change to the npx <product>-datacenter-mcp [setup] command or its behavior.

  • 9126faa Thanks @MrRefactoring! - Make every index.ts a pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves from src/index.ts to src/server.ts (imported by the run.ts bin dispatcher and the start/dev/inspect scripts), and src/index.ts becomes a barrel over the service, config, and mappers. In core, the createMcpServer/connectServer/formatToolResponse runtime moves to src/server.ts and index.ts re-exports it, so the datacenter-mcp-core public API is unchanged. No change to the npx <product>-datacenter-mcp [setup] command or server behavior.

  • d8e142b Thanks @MrRefactoring! - Add a paginateAll helper 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.

  • 15b2bb0 Thanks @MrRefactoring! - Replace the deprecated server.tool(name, description, schema, handler) calls with the current server.registerTool(name, { description, inputSchema }, handler) MCP SDK API, matching the registerResource/registerPrompt style already in use. No change to tool names, schemas, or behavior.

  • d220a9e Thanks @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).

  • 53966c2 Thanks @MrRefactoring! - Split each server's monolithic server.ts into per-resource/domain tool modules under src/tools/, each exporting a register<Group>Tools(server, service) function; server.ts is now a thin orchestrator (config, service, createMcpServer, register calls, connectServer). Resources and prompts move to src/resources.ts and src/prompts.ts, and the shared instance-type description constant to src/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 61adb53 Thanks @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.

  • 520ddfd Thanks @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.

  • 983d08a Thanks @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.

  • 95d8f00 Thanks @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.

  • bddd013 Thanks @MrRefactoring! - Add bitbucket_getRepositoryForks to list the direct forks of a repository, complementing the existing bitbucket_forkRepository create tool.

  • 868ed80 Thanks @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; set ATLASSIAN_DC_MCP_PROFILE=<name> when launching the server to read that profile back. process.env and ATLASSIAN_DC_MCP_CONFIG_FILE are unaffected and still take priority, as before.

  • 0854b17 Thanks @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} and bitbucket://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.
  • 756e60d Thanks @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.

  • 751b29c Thanks @MrRefactoring! - Breaking: rename every MCP tool (and prompt) from <product>_camelCase to <product>_snake_case for readability, e.g. bitbucket_getProjectsbitbucket_get_projects, jira_searchIssuesjira_search_issues, confluence_getContentChildrenByTypeconfluence_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.

  • 6c385c1 Thanks @MrRefactoring! - Add MCP Streamable HTTP transport support, replacing the previously dead, fully-commented-out SSE code. Setting ATLASSIAN_DC_MCP_HTTP_PORT to 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.

  • 344d1b0 Thanks @MrRefactoring! - Add structured logging (datacenter-mcp-core's new logger), replacing scattered console.error calls. 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. Set ATLASSIAN_DC_MCP_LOG_LEVEL (debug/info/warn/error, default info) to control verbosity.

Patch Changes

  • 59f822e Thanks @MrRefactoring! - Move each package's CLI entry point into TypeScript: the hand-written bin/run.js dispatcher becomes src/run.ts, compiled to dist/run.js by the normal build. The bin field now points at dist/run.js and the published files no longer ship a separate bin/ directory. No change to the npx <product>-datacenter-mcp [setup] command or its behavior.

  • 35a7b22 Thanks @MrRefactoring! - Validate the optional anchor field 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.

  • c5384e5 Thanks @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 mutable OpenAPI singleton, and CancelablePromise plumbing are gone, and response bodies are now runtime-validated against Zod schemas derived from real Bitbucket Data Center responses.

  • 7ac1a1f Thanks @MrRefactoring! - Lift the HTTP client core into datacenter-mcp-core so every product package shares one implementation. createHttpClient, the route tagged-template URL builder, pickBody, bindGroup, ApiError, and the client interfaces (HttpClient, SendRequestOptions, HttpClientConfig, …) now live in and are exported from core; a new responseType: 'arraybuffer' mode returns the raw bytes for binary downloads, and a new softValidation config 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 JSON Content-Type (some mutation endpoints answer this way), returning undefined instead of throwing on JSON.parse(''). The Bitbucket client drops its local copies and imports these from core, with no change to its behavior or exposed tools.

  • 9126faa Thanks @MrRefactoring! - Make every index.ts a pure barrel (re-exports only). Each product's tool-registration/bootstrap entry moves from src/index.ts to src/server.ts (imported by the run.ts bin dispatcher and the start/dev/inspect scripts), and src/index.ts becomes a barrel over the service, config, and mappers. In core, the createMcpServer/connectServer/formatToolResponse runtime moves to src/server.ts and index.ts re-exports it, so the datacenter-mcp-core public API is unchanged. No change to the npx <product>-datacenter-mcp [setup] command or server behavior.

  • d8e142b Thanks @MrRefactoring! - Add a paginateAll helper 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.

  • 15b2bb0 Thanks @MrRefactoring! - Replace the deprecated server.tool(name, description, schema, handler) calls with the current server.registerTool(name, { description, inputSchema }, handler) MCP SDK API, matching the registerResource/registerPrompt style already in use. No change to tool names, schemas, or behavior.

  • d220a9e Thanks @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).

  • 53966c2 Thanks @MrRefactoring! - Split each server's monolithic server.ts into per-resource/domain tool modules under src/tools/, each exporting a register<Group>Tools(server, service) function; server.ts is now a thin orchestrator (config, service, createMcpServer, register calls, connectServer). Resources and prompts move to src/resources.ts and src/prompts.ts, and the shared instance-type description constant to src/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