Capstone 6: An MCP Server for Your Team's Knowledge
Build and deploy a remote MCP server that gives every agent on your team safe, authenticated access to internal docs and data.
Every team has knowledge that agents can't reach: the deploy runbook in the wiki, the expense policy in a shared drive, the notes only one person knows where to find. You could paste documents into chats forever, or you could build one server that every agent on the team can call, whether it runs in Claude Code, Cursor, or a custom agent.
In this capstone you'll build that server: a remote MCP server that serves internal documents over HTTP, authenticates every request, and shows each person only what they're allowed to see. You'll test the access rules with real MCP clients, connect the server to Claude Code, and package it for deployment. The sample data is a mock knowledge base, so you can run everything locally with no accounts at all.
What you'll build
team-docs, a remote MCP server with:
| Capability | Type | What it does |
|---|---|---|
search_docs | Tool | Keyword search over documents the caller may read |
read_doc | Tool | Full text of one document by ID |
list_recent_docs | Tool | Recently updated documents, newest first |
docs://{id} | Resource template | Each readable document as a resource you can attach to a conversation |
Around those sit the parts that make it safe to share: bearer-token authentication, per-user access control enforced below the tools, Host and Origin checks, per-user rate limits, and an audit log line for every call.
This builds directly on Building Your First MCP Server, which you should finish first; this project uses the same v2 TypeScript SDK and the same registerTool patterns. It also applies Beyond Tools: MCP Resources, Prompts, and Elicitation, Remote MCP Servers: HTTP, Auth, and Deployment, and the isolation ideas from Multi-Tenant Agents and Data Isolation.