mirror of
https://github.com/modelcontextprotocol/servers.git
synced 2026-04-20 12:55:36 +02:00
[WIP] Refactor everything server to be more modular and use recommended APIs.
Updated docs * Refactor/renamed CLAUDE.md to AGENTS.md * Updated instructions.md and startup.md
This commit is contained in:
51
src/everything/AGENTS.md
Normal file
51
src/everything/AGENTS.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# MCP "Everything" Server - Development Guidelines
|
||||
|
||||
## Build, Test & Run Commands
|
||||
|
||||
- Build: `npm run build` - Compiles TypeScript to JavaScript
|
||||
- Watch mode: `npm run watch` - Watches for changes and rebuilds automatically
|
||||
- Run STDIO server: `npm run start:stdio` - Starts the MCP server using stdio transport
|
||||
- Run SSE server: `npm run start:sse` - Starts the MCP server with SSE transport
|
||||
- Run StreamableHttp server: `npm run start:stremableHttp` - Starts the MCP server with StreamableHttp transport
|
||||
- Prepare release: `npm run prepare` - Builds the project for publishing
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
- Use ES modules with `.js` extension in import paths
|
||||
- Strictly type all functions and variables with TypeScript
|
||||
- Follow zod schema patterns for tool input validation
|
||||
- Prefer async/await over callbacks and Promise chains
|
||||
- Place all imports at top of file, grouped by external then internal
|
||||
- Use descriptive variable names that clearly indicate purpose
|
||||
- Implement proper cleanup for timers and resources in server shutdown
|
||||
- Handle errors with try/catch blocks and provide clear error messages
|
||||
- Use consistent indentation (2 spaces) and trailing commas in multi-line objects
|
||||
- Match existing code style, import order, and module layout in the respective folder.
|
||||
- Use camelCase for variables/functions,
|
||||
- Use PascalCase for types/classes,
|
||||
- Use UPPER_CASE for constants
|
||||
- Use kebab-case for file names and registered tools, prompts, and resources.
|
||||
|
||||
## Extending the Server
|
||||
|
||||
The Everything Server is designed to be extended at well-defined points.
|
||||
See [Extension Points](docs/extension.md) and [Project Structure](docsstructure.md).
|
||||
The server factory is `src/everything/server/index.ts` and registers all features during startup as well as handling post-connection setup.
|
||||
|
||||
### High-level
|
||||
|
||||
- Tools live under `src/everything/tools/` and are registered via `registerTools(server)`.
|
||||
- Resources live under `src/everything/resources/` and are registered via `registerResources(server)`.
|
||||
- Prompts live under `src/everything/prompts/` and are registered via `registerPrompts(server)`.
|
||||
- Subscriptions and simulated update routines are under `src/everything/resources/subscriptions.ts`.
|
||||
- Logging helpers are under `src/everything/server/logging.ts`.
|
||||
- Transport managers are under `src/everything/transports/`.
|
||||
|
||||
### When adding a new feature
|
||||
|
||||
- Follow the existing file/module pattern in its folder (naming, exports, and registration function).
|
||||
- Export a `registerX(server)` function that registers new items with the MCP SDK in the same style as existing ones.
|
||||
- Wire your new module into the central index (e.g., update `tools/index.ts`, `resources/index.ts`, or `prompts/index.ts`).
|
||||
- Ensure schemas (for tools) are accurate JSON Schema and include helpful descriptions and examples.
|
||||
- If the feature is session‑aware, accept/pass `sessionId` where needed. See the `clientConnected(sessionId)` pattern in `server/index.ts` and usages in `logging.ts` and `subscriptions.ts`.
|
||||
- Keep the docs in `src/everything/docs/` up to date if you add or modify noteworthy features.
|
||||
Reference in New Issue
Block a user