Skip to main content

MCP Server Registration

FieldValue
Document IDASCEND-MCP-003
Version1.0.0
Last UpdatedDecember 19, 2025
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.

Register MCP Server

Basic Registration

curl -X POST "https://pilot.owkai.app/api/mcp/servers/register" \
-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/mcp/servers/register" \
-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/mcp/servers/{server_id}/tools" \
-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/mcp/servers/{server_id}/access" \
-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/mcp/servers/{server_id}/network" \
-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/mcp/servers/{server_id}" \
-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/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/mcp/servers/{server_id}/health-check" \
-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/mcp/servers/{server_id}/suspend" \
-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/mcp/servers/{server_id}/activate" \
-H "Authorization: Bearer <admin_jwt>"

Deregister Server

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

Discovery

Auto-Discovery

Enable automatic discovery of MCP servers:

curl -X POST "https://pilot.owkai.app/api/mcp/discovery/scan" \
-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/mcp/servers/{server_id}/template" \
-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: 1.0.0 | Last Updated: December 2025