Skip to main content

MCP Server Registration

SDK 2.5.1

Use mcp_server_name in evaluate_action() to trigger Layer 13 governance enforcement at action submit time. See MCP Policies for enforcement behavior.

FieldValue
Document IDASCEND-MCP-003
Version2026.04
Last UpdatedApril 2026
AuthorAscend Engineering Team
PublisherOW-KAI Technologies Inc.
ClassificationEnterprise Client Documentation
ComplianceSOC 2 CC6.1/CC6.2, PCI-DSS 7.1/8.3, HIPAA 164.312, NIST 800-53 AC-2/SI-4

Reading Time: 6 minutes | Skill Level: Intermediate

Overview​

MCP servers must be registered with ASCEND before AI models can interact with them. Registration defines the server's capabilities, trust level, and governance policies.

warning

Unregistered MCP servers cannot process tool invocations through ASCEND. Complete server registration and policy configuration before connecting AI models to avoid blocked requests.

Register MCP Server​

Basic Registration​

curl -X POST "https://pilot.owkai.app/api/registry/mcp-servers" \
-H "Authorization: Bearer <admin_jwt>" \
-H "Content-Type: application/json" \
-d '{
"server_id": "file-system-server",
"name": "File System MCP Server",
"description": "Provides file system access for AI models",
"server_url": "http://localhost:3000/mcp",
"server_type": "stdio",
"trust_level": "restricted",
"owner_email": "platform-team@company.com"
}'

Full Registration​

curl -X POST "https://pilot.owkai.app/api/registry/mcp-servers" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"server_id": "database-server",
"name": "Database Query Server",
"description": "Provides read-only database access",
"server_url": "http://db-mcp.internal:8080",
"server_type": "http",
"trust_level": "trusted",
"tools": [
{
"name": "query_database",
"description": "Execute read-only SQL queries",
"parameters": {
"query": {"type": "string", "required": true},
"database": {"type": "string", "required": true}
},
"risk_level": "medium"
},
{
"name": "list_tables",
"description": "List available database tables",
"parameters": {
"database": {"type": "string", "required": true}
},
"risk_level": "low"
}
],
"allowed_agents": ["data-analyst-agent", "reporting-agent"],
"rate_limit_per_minute": 100,
"config": {
"timeout_seconds": 30,
"max_result_rows": 10000
}
}'

Response​

{
"status": "success",
"data": {
"server_id": "database-server",
"registration_id": "reg_mcp_abc123",
"status": "active",
"trust_level": "trusted",
"tools_registered": 2,
"registered_at": "2025-12-15T10:00:00Z"
}
}

Server Types​

TypeDescriptionUse Case
stdioStandard I/O transportLocal servers
httpHTTP/HTTPS transportNetwork servers
sseServer-Sent EventsStreaming responses
websocketWebSocket transportReal-time bidirectional

Tool Registration​

Define Tools​

Tools define what operations the MCP server provides:

{
"tools": [
{
"name": "read_file",
"description": "Read contents of a file",
"parameters": {
"path": {
"type": "string",
"required": true,
"description": "File path to read"
},
"encoding": {
"type": "string",
"required": false,
"default": "utf-8"
}
},
"risk_level": "low",
"requires_approval": false
},
{
"name": "write_file",
"description": "Write contents to a file",
"parameters": {
"path": {
"type": "string",
"required": true
},
"content": {
"type": "string",
"required": true
}
},
"risk_level": "high",
"requires_approval": true,
"approval_level": 2
}
]
}

Update Tools​

curl -X PUT "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"tools": [
{
"name": "delete_file",
"description": "Delete a file",
"parameters": {"path": {"type": "string", "required": true}},
"risk_level": "critical",
"requires_approval": true,
"approval_level": 3
}
]
}'

Access Control​

Configure Allowed Agents​

curl -X PUT "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"allowed_agents": ["agent_001", "agent_002"],
"denied_agents": ["untrusted_agent"],
"require_agent_registration": true
}'

IP Restrictions​

curl -X PUT "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"ip_whitelist": ["10.0.0.0/8", "192.168.1.0/24"],
"require_mtls": true,
"allowed_origins": ["https://app.company.com"]
}'

Server Status​

Get Server Details​

curl "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <jwt_token>"

Response:

{
"server_id": "database-server",
"name": "Database Query Server",
"status": "active",
"trust_level": "trusted",
"health": {
"status": "healthy",
"last_check": "2025-12-15T10:29:00Z",
"response_time_ms": 45
},
"statistics": {
"total_requests_24h": 1500,
"approved_24h": 1480,
"denied_24h": 20,
"avg_response_time_ms": 125
},
"tools": [
{"name": "query_database", "calls_24h": 1200},
{"name": "list_tables", "calls_24h": 300}
]
}

List All Servers​

curl "https://pilot.owkai.app/api/registry/mcp-servers?status=active&trust_level=trusted" \
-H "Authorization: Bearer <jwt_token>"

Health Monitoring​

Configure Health Check​

curl -X PUT "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"enabled": true,
"interval_seconds": 60,
"timeout_seconds": 10,
"unhealthy_threshold": 3,
"healthy_threshold": 2,
"endpoint": "/health"
}'

Health Status Responses​

StatusDescriptionAction
healthyServer responding normallyNone
degradedSlow responsesMonitor closely
unhealthyFailed health checksBlock requests
unknownNo recent checksTrigger check

Server Lifecycle​

Suspend Server​

Temporarily disable a server:

curl -X POST "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}/deactivate" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"reason": "Maintenance window",
"resume_at": "2025-12-16T06:00:00Z"
}'

Reactivate Server​

curl -X POST "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}/activate" \
-H "Authorization: Bearer <admin_jwt>"

Deregister Server​

curl -X DELETE "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>"

Discovery​

Auto-Discovery​

Enable automatic discovery of MCP servers:

curl -X POST "https://pilot.owkai.app/api/v1/discovery/scan/start" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"network_range": "10.0.0.0/24",
"port_range": "3000-4000",
"auto_register": false
}'

Discovery Results​

{
"discovered": [
{
"address": "10.0.0.15:3001",
"server_name": "filesystem-mcp",
"tools": ["read_file", "write_file", "list_directory"],
"status": "unregistered"
}
]
}

Configuration Templates​

Apply Template​

curl -X POST "https://pilot.owkai.app/api/registry/mcp-servers/{server_name}" \
-H "Authorization: Bearer <admin_jwt>" \
-d '{
"template": "read-only-database",
"overrides": {
"rate_limit_per_minute": 200
}
}'

Available Templates​

TemplateDescription
read-only-databaseDB server with query-only access
file-system-restrictedLimited file system access
api-gatewayExternal API with rate limiting
sandbox-serverMaximum restrictions for testing

Best Practices​

1. Principle of Least Privilege​

Only register tools that are actually needed:

{
"tools": [
{"name": "read_file", "risk_level": "low"},
// Only add write_file if actually required
]
}

2. Use Meaningful IDs​

# Good
"server_id": "prod-database-readonly"

# Bad
"server_id": "server1"

3. Set Appropriate Trust Levels​

  • Start with sandbox for new servers
  • Upgrade to restricted after testing
  • Reserve trusted for vetted internal servers

4. Monitor Usage​

Regularly review server statistics and adjust policies based on actual usage patterns.

Next Steps​


Document Version: 2026.04 | Last Updated: April 2026