@yawlabs/tailscale-mcp 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +25 -12
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -158,7 +158,7 @@ Set to `1` or `true` to drop every tool without `readOnlyHint: true`. Stacks wit
158
158
  The server logs the active filter to stderr on startup:
159
159
 
160
160
  ```
161
- @yawlabs/tailscale-mcp v0.9.0 ready (19 tools, profile=core, readonly)
161
+ @yawlabs/tailscale-mcp v0.9.1 ready (19 tools, profile=core, readonly)
162
162
  ```
163
163
 
164
164
  If you don't set any filter, startup prints a tip pointing you at the profiles.
package/dist/index.js CHANGED
@@ -31284,16 +31284,16 @@ var keyTools = [
31284
31284
  },
31285
31285
  {
31286
31286
  name: "tailscale_get_key",
31287
- description: "Get details for a specific auth key.",
31287
+ description: "Get details for a specific key (auth key, OAuth client, or federated identity).",
31288
31288
  annotations: {
31289
- title: "Get auth key",
31289
+ title: "Get key",
31290
31290
  readOnlyHint: true,
31291
31291
  destructiveHint: false,
31292
31292
  idempotentHint: true,
31293
31293
  openWorldHint: true
31294
31294
  },
31295
31295
  inputSchema: external_exports3.object({
31296
- keyId: external_exports3.string().describe("The auth key ID")
31296
+ keyId: external_exports3.string().describe("The key ID (auth key, OAuth client, or federated identity)")
31297
31297
  }),
31298
31298
  handler: async (input) => {
31299
31299
  return apiGet(`/tailnet/${getTailnet()}/keys/${encPath(input.keyId)}`);
@@ -31376,16 +31376,16 @@ var keyTools = [
31376
31376
  },
31377
31377
  {
31378
31378
  name: "tailscale_delete_key",
31379
- description: "Delete an auth key. This is irreversible \u2014 devices already authenticated with this key are unaffected, but no new devices can use it.",
31379
+ description: "Delete a key (auth key, OAuth client, or federated identity). This is irreversible. For auth keys, devices already authenticated are unaffected but no new devices can use it. For OAuth clients and federated identities, any integrations using them lose access immediately.",
31380
31380
  annotations: {
31381
- title: "Delete auth key",
31381
+ title: "Delete key",
31382
31382
  readOnlyHint: false,
31383
31383
  destructiveHint: true,
31384
31384
  idempotentHint: true,
31385
31385
  openWorldHint: true
31386
31386
  },
31387
31387
  inputSchema: external_exports3.object({
31388
- keyId: external_exports3.string().describe("The auth key ID to delete")
31388
+ keyId: external_exports3.string().describe("The key ID to delete (auth key, OAuth client, or federated identity)")
31389
31389
  }),
31390
31390
  handler: async (input) => {
31391
31391
  return apiDelete(`/tailnet/${getTailnet()}/keys/${encPath(input.keyId)}`);
@@ -31433,7 +31433,7 @@ var keyTools = [
31433
31433
  var logStreamingTools = [
31434
31434
  {
31435
31435
  name: "tailscale_list_log_stream_configs",
31436
- description: "List all log streaming configurations for your tailnet. Fetches both 'configuration' (audit) and 'network' (flow) log stream configs. Log streaming sends logs to external destinations like Axiom, Datadog, Splunk, Elasticsearch, S3, or GCS.",
31436
+ description: "List all log streaming configurations for your tailnet. Fetches both 'configuration' (audit) and 'network' (flow) log stream configs. Log streaming sends logs to external destinations like Axiom, Datadog, Splunk, Elasticsearch, or S3.",
31437
31437
  annotations: {
31438
31438
  title: "List log stream configs",
31439
31439
  readOnlyHint: true,
@@ -31484,7 +31484,7 @@ var logStreamingTools = [
31484
31484
  },
31485
31485
  {
31486
31486
  name: "tailscale_set_log_stream_config",
31487
- description: "Set the log streaming configuration for a specific log type. Configures where logs are sent (e.g. Axiom, Datadog, Splunk, Elasticsearch, S3, GCS).",
31487
+ description: "Set the log streaming configuration for a specific log type. Configures where logs are sent (e.g. Axiom, Datadog, Splunk, Elasticsearch, S3).\n\nPer-destination required fields:\n- splunk / elastic / panther / cribl / datadog / axiom: url + token (user optional)\n- s3: s3Bucket + s3Region + s3AuthenticationType, plus either (s3AccessKeyId + s3SecretAccessKey) for 'accesskey' auth or s3RoleArn for 'rolearn' auth. Call tailscale_create_aws_external_id first when using 'rolearn'.",
31488
31488
  annotations: {
31489
31489
  title: "Set log stream config",
31490
31490
  readOnlyHint: false,
@@ -31494,10 +31494,23 @@ var logStreamingTools = [
31494
31494
  },
31495
31495
  inputSchema: external_exports3.object({
31496
31496
  logType: external_exports3.enum(["configuration", "network"]).describe("The log type: 'configuration' for audit logs, 'network' for network flow logs"),
31497
- destinationType: external_exports3.enum(["splunk", "elastic", "panther", "cribl", "datadog", "axiom", "s3", "gcs"]).describe("The log streaming destination type"),
31498
- url: external_exports3.string().optional().describe("Destination URL (required for most destination types)"),
31497
+ destinationType: external_exports3.enum(["splunk", "elastic", "panther", "cribl", "datadog", "axiom", "s3"]).describe("The log streaming destination type"),
31498
+ url: external_exports3.string().optional().describe("Destination URL (required for non-s3 destinations)"),
31499
31499
  token: external_exports3.string().optional().describe("Authentication token or API key for the destination"),
31500
- user: external_exports3.string().optional().describe("Username for the destination (if required)")
31500
+ user: external_exports3.string().optional().describe("Username for the destination (if required)"),
31501
+ uploadPeriodMinutes: external_exports3.number().optional().describe("Minutes to wait between uploads (max 1440). Optional."),
31502
+ compressionFormat: external_exports3.enum(["zstd", "gzip", "none"]).optional().describe("Compression algorithm for log uploads. Defaults to 'none'."),
31503
+ s3Bucket: external_exports3.string().optional().describe("(s3 only) S3 bucket name. Required when destinationType is 's3'."),
31504
+ s3Region: external_exports3.string().optional().describe("(s3 only) AWS region of the S3 bucket. Required when destinationType is 's3'."),
31505
+ s3KeyPrefix: external_exports3.string().optional().describe("(s3 only) Optional prefix prepended to the auto-generated S3 object key."),
31506
+ s3AuthenticationType: external_exports3.enum(["accesskey", "rolearn"]).optional().describe(
31507
+ "(s3 only) Authentication mode. Required when destinationType is 's3'. Tailscale recommends 'rolearn'."
31508
+ ),
31509
+ s3AccessKeyId: external_exports3.string().optional().describe("(s3 only) AWS access key id. Required when s3AuthenticationType is 'accesskey'."),
31510
+ s3SecretAccessKey: external_exports3.string().optional().describe("(s3 only) AWS secret access key. Required when s3AuthenticationType is 'accesskey'."),
31511
+ s3RoleArn: external_exports3.string().optional().describe(
31512
+ "(s3 only) IAM role ARN that Tailscale will assume. Required when s3AuthenticationType is 'rolearn'."
31513
+ )
31501
31514
  }),
31502
31515
  handler: async (input) => {
31503
31516
  const { logType, ...body } = input;
@@ -32281,7 +32294,7 @@ var webhookTools = [
32281
32294
  ];
32282
32295
 
32283
32296
  // src/index.ts
32284
- var version2 = true ? "0.9.0" : (await null).createRequire(import.meta.url)("../package.json").version;
32297
+ var version2 = true ? "0.9.1" : (await null).createRequire(import.meta.url)("../package.json").version;
32285
32298
  var subcommand = process.argv[2];
32286
32299
  if (subcommand === "deploy-acl") {
32287
32300
  const filePath = process.argv[3];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yawlabs/tailscale-mcp",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Tailscale MCP server for managing your tailnet from AI assistants",
5
5
  "license": "MIT",
6
6
  "author": "YawLabs <contact@yaw.sh>",