841138a7 by Ean Schuessler

Implement Visit-based session management for MCP integration

- Replace custom McpSessionManager with Moqui's built-in Visit entity
- Add sessionId parameter to all MCP services for persistent sessions
- Implement admin-level authorization using ec.artifactExecution.disableAuthz()
- Create new Visit records for MCP sessions with metadata tracking
- Fix entity field names and ID generation methods
- Update EnhancedMcpServlet to work directly with Visit entities
- Add Visit entity permissions to security seed data
- Deprecate McpSessionManager as sessions now use Moqui's Visit system

All MCP operations now work with persistent sessions:
- Initialize: Creates/reuses Visits, stores MCP metadata
- Tools/Resources/List: Validate sessions, return available items
- Ping: Health check with session tracking

Ready for production use with billing/usage tracking integration.
1 parent 0a7ee649
......@@ -35,6 +35,10 @@
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="org.moqui.impl.EntityServices.create#Entity" artifactTypeEnumId="AT_SERVICE"/>
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="org.moqui.impl.EntityServices.update#Entity" artifactTypeEnumId="AT_SERVICE"/>
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="org.moqui.impl.EntityServices.delete#Entity" artifactTypeEnumId="AT_SERVICE"/>
<!-- Visit Entity Access -->
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="moqui.server.Visit" artifactTypeEnumId="AT_ENTITY"/>
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="create#moqui.server.Visit" artifactTypeEnumId="AT_ENTITY"/>
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="update#moqui.server.Visit" artifactTypeEnumId="AT_ENTITY"/>
<!-- Basic Services -->
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="org.moqui.impl.BasicServices.get#ServerNodeInfo" artifactTypeEnumId="AT_SERVICE"/>
<moqui.security.ArtifactGroupMember artifactGroupId="McpServices" artifactName="org.moqui.impl.BasicServices.get#SystemInfo" artifactTypeEnumId="AT_SERVICE"/>
......
......@@ -24,8 +24,13 @@ import java.util.concurrent.atomic.AtomicBoolean
/**
* MCP Session Manager with SDK-style capabilities
*
* @deprecated This class is deprecated. Use Moqui's Visit entity directly for session management.
* See VisitBasedMcpSession for the new Visit-based approach.
*
* Provides centralized session management, broadcasting, and graceful shutdown
*/
@Deprecated
class McpSessionManager {
protected final static Logger logger = LoggerFactory.getLogger(McpSessionManager.class)
......