MCP Server Registration
| Field | Value |
|---|---|
| Document ID | ASCEND-MCP-003 |
| Version | 1.0.0 |
| Last Updated | December 19, 2025 |
| Author | Ascend Engineering Team |
| Publisher | OW-KAI Technologies Inc. |
| Classification | Enterprise Client Documentation |
| Compliance | SOC 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
| Type | Description | Use Case |
|---|---|---|
stdio | Standard I/O transport | Local servers |
http | HTTP/HTTPS transport | Network servers |
sse | Server-Sent Events | Streaming responses |
websocket | WebSocket transport | Real-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
| Status | Description | Action |
|---|---|---|
healthy | Server responding normally | None |
degraded | Slow responses | Monitor closely |
unhealthy | Failed health checks | Block requests |
unknown | No recent checks | Trigger 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
| Template | Description |
|---|---|
read-only-database | DB server with query-only access |
file-system-restricted | Limited file system access |
api-gateway | External API with rate limiting |
sandbox-server | Maximum 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
sandboxfor new servers - Upgrade to
restrictedafter testing - Reserve
trustedfor vetted internal servers
4. Monitor Usage
Regularly review server statistics and adjust policies based on actual usage patterns.
Next Steps
- MCP Policies - Configure governance policies
- MCP Overview - MCP governance basics
- Trust Levels - Understanding trust levels
Document Version: 1.0.0 | Last Updated: December 2025