I found a solotion. It turns out I have to use the BsonJavaScriptWithScope instead of SetScope.
var map = @"function() {
emit(this._id, foo);
};";
var reduce = @"function(key, values) {
return values;
};";
var scope = new BsonDocument("foo", "foo");
var args = new MapReduceArgs()
{
MapFunction = new BsonJavaScriptWithScope(map, scope),
ReduceFunction = new BsonJavaScript(reduce),
OutputMode = MapReduceOutputMode.Inline
};
var results = collection.MapReduce(args).GetResults();