About Shinzo Ts
Shinzo Ts is an MCP server published by shinzo-labs in the Developer Tools category: typeScript SDK for MCP server observability, built on OpenTelemetry. Gain insight into agent usage patterns, contextualize tool calls, and analyze server performance across platforms. Integrate with any OpenTelemetry ingest service including the Shinzo platform.
The repository has 68 stars and 9 forks, with the last commit 10 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/shinzo-labs/shinzo-tsThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Shinzo Ts
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 3 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
Installation
pnpm add @shinzolabs/instrumentation-mcp
Usage
For the simplest configuration, just pass in the server name, version, and exporter endpoint:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
import { instrumentServer, TelemetryConfig } from "@shinzolabs/instrumentation-mcp"
const NAME = "my-mcp-server"
const VERSION = "1.0.0"
const server = new McpServer({
name: NAME,
version: VERSION,
description: "Example MCP server with telemetry"
})
// Use TelemetryConfig to set configuration options
const telemetryConfig: TelemetryConfig = {
serverName: NAME,
serverVersion: VERSION,
exporterEndpoint: "http://localhost:4318/v1" // OpenTelemetry collector endpoint - /trace and /metrics are added automatically
}
// Initialize telemetry
const telemetry = instrumentServer(server, telemetryConfig)
// Add tools using the tool method
server.tool(...)
The TelemetryConfig exposes a number of other options for precise and expansive telemetry processing:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
import { instrumentServer, TelemetryConfig } from "@shinzolabs/instrumentation-mcp"
const NAME = "my-other-mcp-server"
const VERSION = "1.0.0"
const server = new McpServer({
name: NAME,
version: VERSION,
description: "Example MCP server with telemetry"
})
const telemetryConfig: TelemetryConfig = {
serviceName: NAME,
serviceVersion: VERSION,
exporterEndpoint: "http://localhost:4318/v1", // OpenTelemetry collector endpoint
exporterAuth: {
type: "bearer",
token: process.env.OTEL_AUTH_TOKEN
},
enablePIISanitization: false,
enableTracing: false,
samplingRate: 0.7,
dataProcessors: [
(telemetryData: any) => {
if (telemetryData['mcp.tool.name'] === "sensitive_operation") {
for (const key of Object.keys(telemetryData)) {
if (key.startsWith('mcp.request.argument')) delete telemetryData[key]
}
}
return telemetryData
}
]
}
const telemetry = instrumentServer(server, telemetryConfig)
// Add tools using the tool method
server.tool(...)
Configuration Options
The TelemetryConfig interface provides comprehensive configuration options for customizing telemetry behavior:
TelemetryConfig Properties
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
serverName |
string |
✅ | - | Name of the MCP server |
serverVersion |
string |
✅ | - | Version of the MCP server |
exporterEndpoint |
string |
⚠️ | - | OpenTelemetry collector OTLP endpoint URL (required unless using console exporter) |
exporterAuth |
ExporterAuth |
❌ | - | Authentication configuration for the exporter |
samplingRate |
number |
❌ | 1.0 |
Trace sampling rate (0.0 to 1.0) |
metricExportIntervalMs |
number |
❌ | 5000 |
Metric export interval in milliseconds |
enablePIISanitization |
boolean |
❌ | true |
Enable automatic PII sanitization |
enableArgumentCollection |
boolean |
❌ | false |
Enable collection of tool arguments in traces |
dataProcessors |
((data: any) => any)[] |
❌ | [] |
Array of custom data processing functions |
exporterType |
'otlp-http' | 'otlp-grpc' | 'console' |
❌ | 'otlp-http' |
Type of telemetry exporter |
enableMetrics |
boolean |
❌ | true |
Enable metrics collection |
enableTracing |
boolean |
❌ | true |
Enable tracing collection |
batchTimeoutMs |
number |
❌ | 2000 |
Batch timeout in milliseconds |
PIISanitizer |
PIISanitizer |
❌ | - | Custom PII sanitizer instance |
ExporterAuth Configuration
The exporterAuth property supports multiple authentication methods:
| Auth Type | Properties | Description |
|---|---|---|
bearer |
token: string |
Bearer token authentication |
apiKey |
apiKey: string |
API key authentication |
basic |
username: string, password: string |
Basic HTTP authentication |
Usage Examples
Minimal Configuration
const telemetryConfig: TelemetryConfig = {
serverName: "my-server",
serverVersion: "1.0.0",
exporterEndpoint: "http://localhost:4318/v1" // OpenTelemetry collector endpoint
}
Bearer Token Authentication
const telemetryConfig: TelemetryConfig = {
serverName: "my-server",
serverVersion: "1.0.0",
exporterEndpoint: "https://api.example.com/v1",
exporterAuth: {
type: "bearer",
token: process.env.OTEL_AUTH_TOKEN
}
}
Custom Data Processing
const telemetryConfig: TelemetryConfig = {
serverName: "my-server",
serverVersion: "1.0.0",
exporterEndpoint: "http://localhost:4318/v1", // OpenTelemetry collector endpoint
dataProcessors: [
(data) => {
// Remove sensitive parameters
if (data['mcp.tool.name'] === 'sensitive_tool') {
delete data['mcp.request.argument.password']
}
return data
}
]
}
Console Development Setup
const telemetryConfig: TelemetryConfig = {
serverName: "my-server",
serverVersion: "1.0.0",
exporterType: "console",
enableMetrics: false, // Console exporter doesn't support metrics
samplingRate: 1.0 // Sample all traces in development
}
Contributing
Contributions are welcome! Please see the Contributing Guide in the main repository.
License
This package is distributed under the MIT License.
README fetched from the repository 3 hours ago. The original is authoritative.