mcp-team-server

agentologist-personal/mcp-team-server

3.1

If you are the rightful owner of mcp-team-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The MCP Team Server is a minimal gateway designed to support tool microservices, providing a pure protocol layer without any predefined tools.

MCP Team Server

Version 1.0.0 - Clean Gateway Ready for Tool Development

Overview

The MCP Team Server is a clean, minimal gateway that provides the infrastructure for tool microservices. It's a pure protocol layer with NO tools defined yet.

Architecture:

[Rowan] → [Riley] → [MCP Team Server] → (Future: Tool Microservices)

Current State

⚠️ NO TOOLS EXIST YET - This is an empty gateway ready for tool development.

When you start the server, you'll see:

✅ MCP Team Server started on port 3001
✅ Loaded 0 tool definitions
⚠️  No tools defined yet - server is ready for tool definitions

Installation

npm install
npm run build

Running

HTTP/SSE Server (Production)

npm start

Local Development

npm run dev:http  # HTTP/SSE mode
npm run dev       # STDIO mode

Configuration

Copy .env.example to .env:

PORT=3001
NODE_OPTIONS=--dns-result-order=ipv4first
ROWAN_URL=http://rowan.railway.internal:3000

Health Check

curl http://localhost:3001/health

Response:

{
  "status": "ok",
  "tools": 0,
  "server": "mcp-team-server",
  "version": "1.0.0"
}

Project Structure

mcp-team-server/
├── src/
│   ├── index.ts          # STDIO server (no tools)
│   └── server-http.ts    # HTTP/SSE server (no tools)
├── dist/                 # Build output
├── .env
├── package.json
└── README.md

Adding Tools (Future)

When ready to add tools:

  1. Create structure:

    mkdir -p src/tools src/handlers
    
  2. Define tool schema in src/tools/your-tool.ts:

    import { Tool } from "@modelcontextprotocol/sdk/types.js";
    
    export const yourTools: Tool[] = [{
      name: "your_tool",
      description: "What it does",
      inputSchema: { /* JSON schema */ }
    }];
    
    export async function handleYourTool(args: any) {
      // Call your microservice here
    }
    
  3. Register handlers in src/handlers/index.ts:

    import { handleYourTool } from "../tools/your-tool.js";
    
    export const toolHandlers = {
      your_tool: handleYourTool,
    };
    
  4. Import in servers (src/index.ts and src/server-http.ts):

    import { yourTools } from "./tools/your-tool.js";
    import { toolHandlers } from "./handlers/index.js";
    
    const tools = [...yourTools];
    

Connecting Riley

In Riley's .env:

MCP_SERVER_URL=http://mcp-team-server.railway.internal:3001/sse
NODE_OPTIONS=--dns-result-order=ipv4first

Riley will connect successfully but receive 0 tools until you add them.

Railway Deployment

The server is configured for Railway:

  • Binds to IPv6 (::)
  • Uses railway.json for build/deploy config
  • Health endpoint at /health

Architecture Principles

What this server does:

  • Pure MCP protocol layer
  • SSE and STDIO transport
  • Tool routing (when tools exist)
  • Health checks

What this server doesn't do:

  • No tool implementations
  • No business logic
  • No external API calls
  • No data processing

All tool logic belongs in separate microservices.

License

MIT