Jake Shore f3c4cd817b Add all MCP servers + factory infra to MCPEngine — 2026-02-06
=== NEW SERVERS ADDED (7) ===
- servers/closebot — 119 tools, 14 modules, 4,656 lines TS (Stage 7)
- servers/google-console — Google Search Console MCP (Stage 7)
- servers/meta-ads — Meta/Facebook Ads MCP (Stage 8)
- servers/twilio — Twilio communications MCP (Stage 8)
- servers/competitor-research — Competitive intel MCP (Stage 6)
- servers/n8n-apps — n8n workflow MCP apps (Stage 6)
- servers/reonomy — Commercial real estate MCP (Stage 1)

=== FACTORY INFRASTRUCTURE ADDED ===
- infra/factory-tools — mcp-jest, mcp-validator, mcp-add, MCP Inspector
  - 60 test configs, 702 auto-generated test cases
  - All 30 servers score 100/100 protocol compliance
- infra/command-center — Pipeline state, operator playbook, dashboard config
- infra/factory-reviews — Automated eval reports

=== DOCS ADDED ===
- docs/MCP-FACTORY.md — Factory overview
- docs/reports/ — 5 pipeline evaluation reports
- docs/research/ — Browser MCP research

=== RULES ESTABLISHED ===
- CONTRIBUTING.md — All MCP work MUST go in this repo
- README.md — Full inventory of 37 servers + infra docs
- .gitignore — Updated for Python venvs

TOTAL: 37 MCP servers + full factory pipeline in one repo.
This is now the single source of truth for all MCP work.
2026-02-06 06:32:29 -05:00

14 KiB

1IDTypeSectionRequirementTestedNotes
2M001MUST1.1 JSON-RPC Message FormatAll messages MUST follow JSON-RPC 2.0 specification
3M002MUST1.1.1 Request FormatRequests MUST include a string or integer ID (not null)
4M003MUST1.1.1 Request FormatRequest IDs MUST NOT be null
5M004MUST1.1.1 Request FormatRequest IDs MUST NOT have been previously used by the requestor within the same session
6M005MUST1.1.1 Request FormatRequests MUST include a method string
7M006MUST1.1.2 Response FormatResponses MUST include the same ID as the corresponding request
8M007MUST1.1.2 Response FormatResponses MUST include either a result or an error (not both)
9M008MUST1.1.2 Response FormatErrors MUST include an error code and message
10M009MUST1.1.3 Notification FormatNotifications MUST NOT include an ID
11M010MUST1.1.3 Notification FormatNotifications MUST include a method string
12M011MUST1.1.4 BatchingImplementations MUST support receiving JSON-RPC batches
13M012MUST1.2.1 STDIO TransportClient MUST launch the server as a subprocess
14M013MUST1.2.1 STDIO TransportServer MUST read from stdin and write to stdout
15M014MUST1.2.1 STDIO TransportMessages MUST be delimited by newlines
16M015MUST1.2.1 STDIO TransportMessages MUST NOT contain embedded newlines
17M016MUST1.2.1 STDIO TransportServer MUST NOT write anything to stdout that is not a valid MCP message
18M017MUST1.2.1 STDIO TransportClient MUST NOT write anything to stdin that is not a valid MCP message
19M018MUST1.2.2 Streamable HTTP TransportServer MUST provide a single HTTP endpoint supporting both POST and GET methods
20M019MUST1.2.2 Streamable HTTP TransportClient MUST use HTTP POST to send messages
21M020MUST1.2.2 Streamable HTTP TransportClient MUST include Accept header with both application/json and text/event-stream
22M021MUST1.2.2 Streamable HTTP TransportRequest body MUST be a single JSON-RPC message or batch
23M022MUST1.2.2 Streamable HTTP TransportIf sending only responses/notifications, server MUST return HTTP 202 Accepted with no body
24M023MUST1.2.2 Streamable HTTP TransportIf sending requests, server MUST return either Content-Type: text/event-stream or Content-Type: application/json
25M024MUST1.2.2 Streamable HTTP TransportClient MUST include Accept header with text/event-stream for GET requests
26M025MUST1.2.2 Streamable HTTP TransportServer MUST either return text/event-stream or HTTP 405 Method Not Allowed for GET requests
27M026MUST1.2.2 Streamable HTTP TransportServer MUST NOT send responses on SSE stream unless resuming previous client request
28M027MUST1.2.2 Streamable HTTP TransportServer MUST send each message on only one connected stream
29M028MUST1.2.3 Session ManagementSession ID MUST only contain visible ASCII characters (0x21 to 0x7E)
30M029MUST1.2.3 Session ManagementClients MUST include session ID in all subsequent requests if provided
31M030MUST1.3.1 AuthorizationServers MUST return HTTP 401 Unauthorized when authorization is required
32M031MUST1.3.2 OAuth ImplementationMCP auth implementations MUST implement OAuth 2.1 with appropriate security
33M032MUST1.3.2 OAuth ImplementationClients MUST implement OAuth 2.0 Authorization Server Metadata
34M033MUST1.3.2 OAuth ImplementationClients MUST follow the OAuth 2.0 Authorization Server Metadata protocol
35M034MUST1.3.3 Authorization Server DiscoveryAuthorization base URL MUST be determined by discarding path components from MCP server URL
36M035MUST1.3.3 Authorization Server DiscoveryFor servers without metadata discovery, clients MUST use default endpoint paths
37M036MUST1.3.4 Access Token UsageMCP clients MUST use Authorization request header field for access tokens
38M037MUST1.3.4 Access Token UsageAccess tokens MUST NOT be included in URI query string
39M038MUST1.3.4 Access Token UsageResource servers MUST validate access tokens and respond with HTTP 401 for invalid tokens
40M039MUST1.4.1 InitializationClient MUST send initialize request as first interaction
41M040MUST1.4.1 InitializationInitialize request MUST include protocol version, client capabilities, and client info
42M041MUST1.4.1 InitializationInitialize request MUST NOT be part of a JSON-RPC batch
43M042MUST1.4.1 InitializationServer MUST respond with protocol version, server capabilities, and server info
44M043MUST1.4.1 InitializationAfter successful initialization, client MUST send initialized notification
45M044MUST1.4.2 Version NegotiationClient MUST send a protocol version it supports
46M045MUST1.4.2 Version NegotiationIf server supports requested version, it MUST respond with same version
47M046MUST1.4.2 Version NegotiationOtherwise, server MUST respond with another supported version
48M047MUST1.4.3 Capability NegotiationClient and server MUST declare capabilities during initialization
49M048MUST2.1.1 Resources CapabilitiesServers supporting resources MUST declare resources capability
50M049MUST2.1.2 Resources ListServer response MUST include resources array
51M050MUST2.1.2 Resources ListEach resource MUST include uri and name
52M051MUST2.1.3 Resource ContentServer response MUST include contents array
53M052MUST2.1.3 Resource ContentEach content item MUST include uri and either text or blob
54M053MUST2.1.4 Resource TemplatesServer response MUST include resourceTemplates array
55M054MUST2.1.4 Resource TemplatesEach template MUST include uriTemplate
56M055MUST2.1.5 Resource SubscriptionsServer MUST send notifications/resources/updated when resource changes
57M056MUST2.1.5 Resource SubscriptionsServer MUST support subscribe capability to use this feature
58M057MUST2.1.6 List Changed NotificationServer MUST support listChanged capability to use this feature
59M058MUST2.2.1 Prompts CapabilitiesServers supporting prompts MUST declare prompts capability
60M059MUST2.2.2 Prompts ListServer response MUST include prompts array
61M060MUST2.2.2 Prompts ListEach prompt MUST include name
62M061MUST2.2.3 Get PromptServer response MUST include messages array
63M062MUST2.2.3 Get PromptEach message MUST include role and content
64M063MUST2.2.3 Get PromptContent MUST be one of: text, image, audio, or resource
65M064MUST2.2.4 List Changed NotificationServer MUST support listChanged capability to use this feature
66M065MUST2.3.1 Tools CapabilitiesServers supporting tools MUST declare tools capability
67M066MUST2.3.2 Tools ListServer response MUST include tools array
68M067MUST2.3.2 Tools ListEach tool MUST include name, description, inputSchema
69M068MUST2.3.3 Tool CallServer response MUST include content array and isError flag
70M069MUST2.3.3 Tool CallEach content item MUST be one of: text, image, audio, or resource
71M070MUST2.3.4 List Changed NotificationServer MUST support listChanged capability to use this feature
72M071MUST3.1.1 Roots CapabilitiesClients supporting roots MUST declare roots capability
73M072MUST3.1.2 Roots ListClient response MUST include roots array
74M073MUST3.1.2 Roots ListEach root MUST include uri
75M074MUST3.1.3 List Changed NotificationClient MUST send notifications/roots/list_changed when root list changes
76M075MUST3.1.3 List Changed NotificationClient MUST support listChanged capability to use this feature
77M076MUST3.2.1 Sampling CapabilitiesClients supporting sampling MUST declare sampling capability
78M077MUST3.2.2 Create MessageClient response MUST include role, content, model, stopReason
79M078MUST3.2.2 Create MessageContent MUST be one of: text, image, or audio
80M079MUST4.1.1 Ping Request/ResponseReceiver MUST respond promptly with empty response
81M080MUST4.2.1 Cancellation NotificationNotification MUST include requestId of request to cancel
82M081MUST4.2.1 Cancellation NotificationCancellation notifications MUST only reference previously issued requests
83M082MUST4.2.1 Cancellation NotificationInitialize request MUST NOT be cancelled by clients
84M083MUST4.3.1 Progress RequestProgress tokens MUST be unique across active requests
85M084MUST4.3.2 Progress NotificationProgress notifications MUST include progressToken and progress value
86M085MUST4.3.2 Progress NotificationProgress value MUST increase with each notification
87M086MUST4.3.2 Progress NotificationProgress notifications MUST only reference active requests
88M087MUST4.4.1 Logging CapabilitiesServers supporting logging MUST declare logging capability
89M088MUST4.5.1 Completion CapabilitiesServers supporting completions MUST declare completions capability
90M089MUST4.5.2 Complete RequestServer response MUST include completion values
91S001SHOULD1.2.1 STDIO TransportFor the stdio transport, the client SHOULD initiate shutdown by closing the input stream
92S002SHOULD1.2.2 Streamable HTTP TransportSSE stream SHOULD eventually include one JSON-RPC response per request
93S003SHOULD1.2.2 Streamable HTTP TransportServer SHOULD NOT close SSE stream before sending all responses
94S004SHOULD1.2.2 Streamable HTTP TransportServer messages SHOULD be unrelated to concurrent client requests
95S005SHOULD1.2.3 Session ManagementSession ID SHOULD be globally unique and cryptographically secure
96S006SHOULD1.2.3 Session ManagementServers SHOULD respond with HTTP 400 to requests without session ID if required
97S007SHOULD1.2.3 Session ManagementClients SHOULD explicitly terminate sessions they no longer need
98S008SHOULD1.3.1 AuthorizationHTTP-based transports SHOULD follow the OAuth 2.1 authorization flow
99S009SHOULD1.3.1 AuthorizationSTDIO transport SHOULD NOT use this authorization mechanism
100S010SHOULD1.3.2 OAuth ImplementationMCP auth implementations SHOULD support OAuth 2.0 Dynamic Client Registration
101S011SHOULD1.3.2 OAuth ImplementationServers SHOULD follow the OAuth 2.0 Authorization Server Metadata protocol
102S012SHOULD1.3.3 Authorization Server DiscoveryClients SHOULD include MCP-Protocol-Version header during discovery
103S013SHOULD1.4.1 InitializationClient SHOULD NOT send requests other than pings before server responds to initialize
104S014SHOULD1.4.1 InitializationServer SHOULD NOT send requests other than pings and logging before initialized notification
105S015SHOULD1.4.2 Version NegotiationClient version SHOULD be the latest version supported by the client
106S016SHOULD1.4.2 Version NegotiationServer version SHOULD be the latest version supported by the server
107S017SHOULD1.4.2 Version NegotiationIf client doesn't support server's version, it SHOULD disconnect
108S018SHOULD1.4.3 Capability NegotiationBoth parties SHOULD respect negotiated capabilities
109S019SHOULD1.4.4 TimeoutsImplementations SHOULD establish timeouts for all sent requests
110S020SHOULD1.4.4 TimeoutsSenders SHOULD issue cancellation notification when timeout occurs
111S021SHOULD1.4.4 Error HandlingImplementations SHOULD be prepared to handle protocol errors
112S022SHOULD2.1.3 Resource ContentEach content item SHOULD include mimeType
113S023SHOULD2.1.6 List Changed NotificationServer SHOULD send notifications/resources/list_changed when resource list changes
114S024SHOULD2.2.4 List Changed NotificationServer SHOULD send notifications/prompts/list_changed when prompt list changes
115S025SHOULD2.3.4 List Changed NotificationServer SHOULD send notifications/tools/list_changed when tool list changes
116S026SHOULD4.1.1 PingImplementations SHOULD periodically issue pings to detect connection health
117S027SHOULD4.2.1 CancellationReceivers SHOULD stop processing cancelled request
118S028SHOULD4.2.1 CancellationSender SHOULD ignore responses to cancelled requests
119S029SHOULD4.5.2 Complete RequestServers SHOULD return suggestions sorted by relevance
120S030SHOULD4.6.1 PaginationInvalid cursors SHOULD result in an error with code -32602
121A001MAY1.1.1 Request FormatRequests MAY include parameters object
122A002MAY1.1.3 Notification FormatNotifications MAY include parameters object
123A003MAY1.1.4 BatchingImplementations MAY support sending JSON-RPC batches
124A004MAY1.2.1 STDIO TransportServer MAY write UTF-8 strings to stderr for logging
125A005MAY1.2.2 Streamable HTTP TransportServer MAY send JSON-RPC requests and notifications before responses
126A006MAY1.2.2 Streamable HTTP TransportClient MAY issue HTTP GET with Accept header listing text/event-stream
127A007MAY1.2.2 Streamable HTTP TransportServer MAY send requests and notifications on SSE stream
128A008MAY1.2.2 Streamable HTTP TransportServer MAY close the SSE stream at any time
129A009MAY1.2.2 Streamable HTTP TransportClient MAY close the SSE stream at any time
130A010MAY1.2.2 Streamable HTTP TransportClient MAY remain connected to multiple SSE streams
131A011MAY1.2.2 ResumabilityServers MAY attach an id field to SSE events
132A012MAY1.2.2 ResumabilityServer MAY use Last-Event-ID header to replay messages
133A013MAY1.2.3 Session ManagementServer MAY assign a session ID at initialization
134A014MAY1.2.3 Session ManagementServer MAY terminate sessions at any time
135A015MAY1.2.3 Session ManagementServer MAY respond with HTTP 405 Method Not Allowed to DELETE requests
136A016MAY1.3.3 Authorization Server DiscoveryServer MAY support OAuth 2.0 dynamic client registration
137A017MAY2.1.2 Resources ListEach resource MAY include description, mimeType, size
138A018MAY2.1.4 Resource TemplatesEach template MAY include name, description, mimeType
139A019MAY2.2.2 Prompts ListEach prompt MAY include description, arguments
140A020MAY2.3.2 Tools ListEach tool MAY include annotations
141A021MAY3.1.2 Roots ListEach root MAY include name
142A022MAY4.1.1 PingIf no response received, sender MAY terminate connection
143A023MAY4.2.1 CancellationNotification MAY include reason string
144A024MAY4.2.1 CancellationReceivers MAY ignore cancellation for unknown or completed requests
145A025MAY4.3.2 Progress NotificationProgress notifications MAY include total and message
146A026MAY4.5.2 Complete RequestServer response MAY include total number of matches