{"_id":"@ascend-ai/mcp-server","name":"@ascend-ai/mcp-server","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"@ascend-ai/mcp-server","version":"1.1.0","description":"ASCEND governance integration for MCP (Model Context Protocol) servers - Enterprise-grade AI agent security","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --clean","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest run","test:watch":"vitest","lint":"eslint src/","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["mcp","model-context-protocol","ascend","governance","ai-agents","security","enterprise","claude","anthropic","tool-governance","compliance","soc2","hipaa","pci-dss","banking","fail-secure"],"author":{"name":"ASCEND by OW-AI","email":"support@owkai.app"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ow-ai/ascend-mcp-server.git"},"homepage":"https://docs.owkai.app/integration/frameworks/mcp-server","bugs":{"url":"https://github.com/ow-ai/ascend-mcp-server/issues"},"engines":{"node":">=18.0.0"},"dependencies":{"axios":"^1.6.0"},"peerDependencies":{"@modelcontextprotocol/sdk":">=0.5.0"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":true}},"devDependencies":{"@modelcontextprotocol/sdk":"^1.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","tsup":"^8.0.0","typescript":"^5.3.0","vitest":"^1.0.0"},"_id":"@ascend-ai/mcp-server@1.1.0","gitHead":"5be8f4a28fc6f078be457d5a53b36451858a6220","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-uQ2lL/xCnZJUnK+o81aKxwVt7GC82T8VvAsrT8Vo9peT1H1AjAEcCoYu3GHLUz6NB3tBQcrtgrhakKrwsIyXOg==","shasum":"ad9983262e936d4c41f1411310663caa1ede2ffa","tarball":"https://registry.npmjs.org/@ascend-ai/mcp-server/-/mcp-server-1.1.0.tgz","fileCount":7,"unpackedSize":69758,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0a46b0Pj9WilHkg02rJ6zzshLBOF4dpu2UYc0KfExiQIgKejeHgZgraTP774CRSOZsK8MWRD4wSDOccNHB9WW87g="}]},"_npmUser":{"name":"ascend_security","email":"info@ow-kai.com"},"directories":{},"maintainers":[{"name":"ascend_security","email":"info@ow-kai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_1.1.0_1774799231170_0.6389152917550953"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-29T15:47:11.121Z","1.1.0":"2026-03-29T15:47:11.307Z","modified":"2026-03-29T15:47:11.545Z"},"maintainers":[{"name":"ascend_security","email":"info@ow-kai.com"}],"description":"ASCEND governance integration for MCP (Model Context Protocol) servers - Enterprise-grade AI agent security","homepage":"https://docs.owkai.app/integration/frameworks/mcp-server","keywords":["mcp","model-context-protocol","ascend","governance","ai-agents","security","enterprise","claude","anthropic","tool-governance","compliance","soc2","hipaa","pci-dss","banking","fail-secure"],"repository":{"type":"git","url":"git+https://github.com/ow-ai/ascend-mcp-server.git"},"author":{"name":"ASCEND by OW-AI","email":"support@owkai.app"},"bugs":{"url":"https://github.com/ow-ai/ascend-mcp-server/issues"},"license":"MIT","readme":"# ASCEND MCP Server Integration\n\nEnterprise-grade governance for Model Context Protocol (MCP) servers.\n\n[![npm version](https://badge.fury.io/js/ascend-mcp-server.svg)](https://www.npmjs.com/package/ascend-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)\n\n## Overview\n\nAdd ASCEND governance to your MCP servers to control AI agent tool execution. Every tool invocation is evaluated against enterprise security policies before execution.\n\n**Security Features:**\n- Fail-closed design (deny on errors)\n- Sensitive data redaction\n- Multi-level approval workflows\n- Full audit trail (SOC 2, HIPAA, PCI-DSS compliant)\n\n## Installation\n\n```bash\nnpm install ascend-mcp-server\n```\n\n## Quick Start\n\n### 1. Basic Usage\n\n```typescript\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { McpGovernance } from \"ascend-mcp-server\";\n\n// Initialize governance\nconst governance = new McpGovernance({\n  apiKey: process.env.ASCEND_API_KEY,\n  agentId: \"mcp-database-server\",\n  agentName: \"Database MCP Server\"\n});\n\n// Create MCP server\nconst server = new Server({ name: \"database-server\", version: \"1.0.0\" });\n\n// Handle tool calls with governance\nserver.setRequestHandler(\"tools/call\", async (request) => {\n  const { name, arguments: args } = request.params;\n\n  // Evaluate governance\n  const decision = await governance.evaluate(name, args, {\n    actionType: `database.${name}`,\n    resource: \"production_db\"\n  });\n\n  if (!decision.allowed) {\n    return {\n      content: [{ type: \"text\", text: `Denied: ${decision.reason}` }],\n      isError: true\n    };\n  }\n\n  // Execute tool\n  const result = await executeQuery(args.sql);\n  return { content: [{ type: \"text\", text: JSON.stringify(result) }] };\n});\n```\n\n### 2. Using Tool Wrapper\n\n```typescript\nimport { McpGovernance } from \"ascend-mcp-server\";\n\nconst governance = new McpGovernance({\n  apiKey: process.env.ASCEND_API_KEY,\n  agentId: \"mcp-server\",\n  agentName: \"My MCP Server\"\n});\n\n// Wrap tool handler with governance\nconst governedQuery = governance.wrapTool(\n  async (request) => {\n    const { sql } = request.params.arguments;\n    return { content: [{ type: \"text\", text: await db.execute(sql) }] };\n  },\n  {\n    actionType: \"database.query\",\n    resource: \"production_db\",\n    riskLevel: \"medium\"\n  }\n);\n```\n\n### 3. Using Higher-Order Functions\n\n```typescript\nimport { withGovernance, highRiskTool } from \"ascend-mcp-server\";\n\n// Standard governance\nconst queryHandler = withGovernance({\n  agentId: \"mcp-server\",\n  agentName: \"Database Server\",\n  actionType: \"database.query\",\n  resource: \"production_db\",\n  riskLevel: \"low\"\n})(async (request) => {\n  return await executeQuery(request.params.arguments.sql);\n});\n\n// High-risk tool (requires human approval)\nconst deleteHandler = highRiskTool({\n  agentId: \"mcp-server\",\n  agentName: \"Database Server\",\n  actionType: \"database.delete\",\n  resource: \"production_db\"\n})(async (request) => {\n  return await deleteRecords(request.params.arguments);\n});\n```\n\n## Configuration\n\n### Environment Variables\n\n```bash\nexport ASCEND_API_KEY=\"owkai_your_key_here\"\nexport ASCEND_API_URL=\"https://api.owkai.app\"  # Optional\n```\n\n### Full Configuration Options\n\n```typescript\nconst governance = new McpGovernance({\n  // Required\n  agentId: \"mcp-database-server\",\n  agentName: \"Database MCP Server\",\n\n  // Optional - API Configuration\n  apiKey: process.env.ASCEND_API_KEY,\n  baseUrl: \"https://pilot.owkai.app\",\n\n  // Optional - Security Configuration\n  failMode: \"closed\",           // 'closed' (default) or 'open'\n  waitForApproval: true,        // Wait for pending approvals\n  approvalTimeoutMs: 300000,    // 5 minutes\n  approvalPollIntervalMs: 5000, // 5 seconds\n\n  // Optional - Tool Configuration\n  defaultRiskLevel: \"medium\",\n  toolRiskLevels: {\n    \"query\": \"low\",\n    \"execute\": \"high\",\n    \"delete\": \"critical\"\n  },\n  toolActionTypes: {\n    \"query\": \"database.read\",\n    \"execute\": \"database.write\",\n    \"delete\": \"database.delete\"\n  },\n\n  // Optional - Callbacks\n  onApprovalRequired: async (decision, toolName) => {\n    console.log(`Tool ${toolName} requires approval`);\n    // Send notification to Slack, Teams, etc.\n  },\n  onDenied: async (decision, toolName) => {\n    console.log(`Tool ${toolName} was denied: ${decision.reason}`);\n  },\n  onApproved: async (decision, toolName) => {\n    console.log(`Tool ${toolName} was approved`);\n  },\n  onTimeout: async (decision, toolName) => {\n    console.log(`Approval timeout for ${toolName}`);\n  }\n});\n```\n\n## Risk Levels\n\n| Level | Description | Default Behavior |\n|-------|-------------|------------------|\n| `low` | Read-only operations | Auto-approve |\n| `medium` | Write operations | Evaluate policy |\n| `high` | Destructive operations | Require review |\n| `critical` | Administrative operations | Require approval |\n\n### Automatic Risk Classification\n\nTools are automatically classified based on name patterns:\n\n| Pattern | Risk Level |\n|---------|------------|\n| `read`, `get`, `list`, `query` | low |\n| `create`, `update`, `write` | medium |\n| `delete`, `remove`, `drop` | high |\n| `execute`, `admin`, `transfer` | critical |\n\n## Complete Example\n\n```typescript\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { McpGovernance } from \"ascend-mcp-server\";\n\n// Initialize governance\nconst governance = new McpGovernance({\n  apiKey: process.env.ASCEND_API_KEY!,\n  agentId: \"mcp-database-server\",\n  agentName: \"Production Database Server\",\n  failMode: \"closed\",\n  toolRiskLevels: {\n    \"query\": \"low\",\n    \"execute\": \"high\"\n  }\n});\n\n// Create server\nconst server = new Server({\n  name: \"database-server\",\n  version: \"1.0.0\"\n}, {\n  capabilities: { tools: {} }\n});\n\n// List available tools\nserver.setRequestHandler(\"tools/list\", async () => ({\n  tools: [\n    {\n      name: \"query\",\n      description: \"Execute read-only SQL query\",\n      inputSchema: {\n        type: \"object\",\n        properties: { sql: { type: \"string\" } },\n        required: [\"sql\"]\n      }\n    },\n    {\n      name: \"execute\",\n      description: \"Execute SQL statement (requires approval)\",\n      inputSchema: {\n        type: \"object\",\n        properties: { sql: { type: \"string\" } },\n        required: [\"sql\"]\n      }\n    }\n  ]\n}));\n\n// Handle tool calls\nserver.setRequestHandler(\"tools/call\", async (request) => {\n  const { name, arguments: args } = request.params;\n\n  // Determine if read-only\n  const isReadOnly = name === \"query\" && /^SELECT/i.test(args?.sql || \"\");\n\n  // Evaluate governance\n  const decision = await governance.evaluate(name, args || {}, {\n    actionType: `mcp.database.${name}`,\n    resource: \"production_db\",\n    riskLevel: isReadOnly ? \"low\" : \"high\"\n  });\n\n  if (!decision.allowed) {\n    return {\n      content: [{\n        type: \"text\",\n        text: `[GOVERNANCE] Operation denied\\n` +\n              `Reason: ${decision.reason}\\n` +\n              `Risk Level: ${decision.riskLevel}`\n      }],\n      isError: true\n    };\n  }\n\n  // Execute query\n  try {\n    const result = await executeQuery(args?.sql);\n    return {\n      content: [{ type: \"text\", text: JSON.stringify(result, null, 2) }]\n    };\n  } catch (error) {\n    return {\n      content: [{ type: \"text\", text: `Error: ${error.message}` }],\n      isError: true\n    };\n  }\n});\n\n// Start server\nconst transport = new StdioServerTransport();\nawait server.connect(transport);\n```\n\n## API Reference\n\n### McpGovernance\n\nMain governance class for MCP servers.\n\n#### Constructor\n\n```typescript\nnew McpGovernance(config: McpGovernanceConfig)\n```\n\n#### Methods\n\n| Method | Description |\n|--------|-------------|\n| `evaluate(toolName, args, options)` | Evaluate a tool call against policies |\n| `wrapTool(handler, options)` | Wrap a tool handler with governance |\n| `governTool(options)` | Decorator for tool handlers |\n| `tools` | Get list of governed tool names |\n\n### Helper Functions\n\n| Function | Description |\n|----------|-------------|\n| `createGovernedTool(options, handler)` | Create a governed tool handler |\n| `withGovernance(options)` | Higher-order function for governance |\n| `highRiskTool(options)` | Mark tool as requiring approval |\n\n## Compliance\n\nThis package supports enterprise compliance requirements:\n\n- **SOC 2 CC6.1** - Access control\n- **HIPAA 164.312(e)** - Transmission security\n- **PCI-DSS 8.2** - API key management\n- **NIST AI RMF** - AI risk management\n\n## Documentation\n\n- [Full Documentation](https://docs.owkai.app/integration/frameworks/mcp-server)\n- [ASCEND Platform](https://owkai.app)\n- [API Reference](https://docs.owkai.app/api-reference)\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","readmeFilename":"README.md","_rev":"1-b571871bbada0e9d7e2fde561aeec66d"}