Controlling drivers with data received via TCP/UDP
The basic idea is to open a socket, poll the data and apply the received values to the shape keys:

import socket

# open network socket
port = 13001
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("127.0.0.1", port))
print "waiting on port:", port

# poll data (could use a timer)
data, addr = s.recvfrom(1024) 
print data
# set float value from data
# value convert from data
bpy.context.object.data.shape_keys.key_blocks['Key 1'].value = float(value)


Related: 


Mapping an algorithm to an animation
http://www.binarytides.com/programming-udp-sockets-in-python/
How to run a python script at regular intervals?